【51单片机】外部中断

news/2024/11/20 17:32:57/

🎊专栏【51单片机】

🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。

🎆音乐分享【Love Story】

🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰

目录

🍔原理 

🍔注意管脚的连接 

🍔现象

🍔外部中断0和外部中断1的区别

🍔代码

⭐外部中断0

⭐外部中断1 

🍔interrupt 后面的数字的意义


使用中断,可以控制LED灯闪烁

🍔原理 

主程序中要有下面的代码

EA=1;                        //打开总中断开关

EXO=1;                     //设置外部中断0

ITO=0(或ITO=1)        //设置外部中断的触发方式

⭐(下降沿,触发后,就进入中断函数)

中断服务函数

void int0 () interrupt 0

{

        write your code

}

🍔注意管脚的连接 

如果是外部中断0,必须连P3^2

如果是外部中断1,必须连P3^3

🍔现象

二者的现象是一样的

外部中断

🍔外部中断0和外部中断1的区别

外部中断0的优先级比外部中断1高。当两个中断同时发生时,外部中断0的中断服务程序会先被执行

🍔代码

⭐外部中断0

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;sbit k3=P3^2;  //定义按键K3
sbit led=P2^0;	 //定义P20口是ledvoid delay(u16 i)
{while(i--);	
}void Int0Init()
{//设置INT0IT0=1;//外部中断0下降沿触发EX0=1;//打开外部中断0EA=1;//打开总中断	
}void main()
{	Int0Init();  //	设置外部中断0while(1);		
}void Int0()	interrupt 0		//外部中断0的中断函数
{delay(1000);	 //延时消抖if(k3==0){led=~led;}
}

⭐外部中断1 

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;sbit k4=P3^3;  //定义按键K4
sbit led=P2^0;	 //定义P20口是ledvoid delay(u16 i)
{while(i--);	
}void Int1Init()
{//设置INT1IT1=1;//跳变沿出发方式(下降沿)EX1=1;//打开INT1的中断允许。	EA=1;//打开总中断	
}void main()
{	Int1Init();  //	设置外部中断1while(1);		
}void Int1()	interrupt 2		//外部中断1的中断函数
{delay(1000);	 //延时消抖if(k4==0){led=~led;}
}

🍔interrupt 后面的数字的意义

interrupt加数字表示各种中断服务程序的编号,具体编号与对应的中断源有关。

interrupt 0 表示外部中断 0 中断服务程序,

interrupt 1 表示定时器 0 中断服务程序,

interrupt 2 表示外部中断 1 中断服务程序,

interrupt 3 表示定时器 1 中断服务程序

🥰如果大家有不明白的地方,或者文章有问题,欢迎大家在评论区讨论,指正🥰


http://www.ppmy.cn/news/66765.html

相关文章

【系分论文】论软件的系统测试及应用

目录 论题论题介绍论文要点理论素材准备范文摘要正文论题 论软件的系统测试及应用 论题介绍 软件测试是软件交付客户前必须要完成的重要步骤之一,目前仍是发现软件错误(缺陷)的主要手段。系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,针对整…

【Linux内核解析-linux-5.14.10-内核源码注释】自旋锁spinlock机制

自旋锁 Note: 在使用自旋锁时应该避免长时间持有锁,否则可能会导致其他线程或进程无法访问共享资源。因此,建议将锁的持有时间尽量缩短,以提高系统的并发性能。 Linux中的自旋锁机制是一种用于同步多个线程或进程访问共享资源的技术。当一个…

(三)深入理解Bluez协议栈之“好用的小工具”

目录 1.tools工具: 1.1 hciattach: 1.2 hciconfig: 1.3 btmon: 1.4 hcitool: 1.5 btmgmt: 1.6 others: 2.tester:

c_cpp_properties.json vscode ubuntu18.04

在 Ubuntu 18.04 上使用 Visual Studio Code 时,你可以根据以下示例配置 c_cpp_properties.json 文件。假设你已经安装了 GCC 和 G 编译器,这个示例将为你提供一个基本的配置: {"configurations": [{"name": "Linu…

设计模式4—单例模式

4.单例模式 概念: 保证一个类仅有一个实例,并提供一个访问他的全局访问点。 单例模式是Java中最简单的设计模式之一。这种设计模式属于创建型模式。 单例模式一般体现在类声明中,单例的类负责创建自己的对象,同时确保只有单个…

RabbitMQ详解(六):RabbitMQ集群搭建

集群 官方参考文档:https://www.rabbitmq.com/clustering.html RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现)。因此,RabbitMQ天…

c#笔记-结构

装箱 结构是值类型。值类型不能继承其他类型,也不能被其他类型继承。 所以它的方法都是确定的,没有虚方法需要在运行时进行动态绑定。 值类型没有对象头,方法调用由编译器直接确定。 但是,如果使用引用类型变量(如接…

哪种蓝牙耳机戴着最舒服?佩戴最舒服的真无线蓝牙耳机

无论在地铁、咖啡厅、商场甚至是机场,佩戴蓝牙耳机可以让我们尽情地享受音乐,戴上耳机可以避免影响他人的同时也能避免隐私的泄露。因此这几年真无线蓝牙耳机也受到了广大网友的追捧。,下面分享几款佩戴舒适的蓝牙耳机给大家。 一、南卡小音…