51单片机中的外部中断方式(51单片机笔记15:外部中断的基础知识)
51单片机中的外部中断方式(51单片机笔记15:外部中断的基础知识)下降沿触发 在全局和外部中断使能的情况下,只要在INT0 / INT1引脚上检测到低电平,控制器就会跳至中断服务程序(ISR)来服务中断。外部中断有两种类型的激活级别在8051中,使用了两种类型的激活级别。这些都是,低电平触发
上一次放弃就是在学习中断和定时计时器时,看得脑袋大,理论知识枯燥,如果看不进去不了解,后面的内容更没法学了。整理下自己看的中断的知识 今天先学外部中断
什么是中断中断是引起CPU注意的外部或内部事件。一旦控制器检测到中断,它将暂停当前作业并执行称为中断服务例程(ISR)的特殊服务例程。
P3口可以作为输入/输出端口此外还具有以下双重功能
- P3.0 – RXD –串行数据接收。
- P3.1 – TXD –串行数据传输。
- P3.2 – INT0 –外部中断0。(8051按键开关接入此IO位才能实现外部中断)
- P3.3 – INT1 –外部中断1。
- P3.4 – T0 –计数器0的时钟输入。
- P3.5 – T1 –计数器1的时钟输入。
- P3.6 – WR 用于写入外部存储器的信号。
- P3.7 – RD –从外部存储器读取的信号。
8051单片机有5个中断源,其中两个是内部中断(定时器中断),两个是外部中断(INT0 INT1),一个是串行中断。这些中断每一个都有中断向量入口地址。最高优先级的中断是复位,其向量地址为0x0000。复位是最高优先级的中断,复位后8051微控制器开始从0x0000地址开始执行代码。
8051中的外部中断- 8051具有两个外部中断INT0和INT1。
- 通过在外部中断引脚PORT3.2,PORT3.3上提供电平或边沿,可以通过外部中断来中断8051控制器。
- 如果使能了全局和外部中断,则外部外设可以通过这些外部中断来中断微控制器。
- 然后,微控制器将执行当前指令,并跳转到中断服务程序(ISR)进行中断。
- 在轮询方法中,微控制器必须通过监视引脚来连续检查脉冲(效率低),而在中断方法中,微控制器不需要轮询。每当发生中断时,微控制器都会处理中断请求。
外部中断有两种类型的激活级别
- 边沿触发(在检测到上升沿/下降沿时发生中断)
- 触发电平(在高/低电平检测时发生中断)
在8051中,使用了两种类型的激活级别。这些都是,
低电平触发
在全局和外部中断使能的情况下,只要在INT0 / INT1引脚上检测到低电平,控制器就会跳至中断服务程序(ISR)来服务中断。
下降沿触发
全局和外部时,只要在INT0 / INT1引脚上检测到下降沿。启用中断后,控制器跳转到中断服务程序(ISR)来服务中断
中断执行过程主程序执行---按键按下---中断服务请求 --INTo引脚接收到中断信号-----中断标志位置1----CPU允许中断----中断向量地址(跳转指令)-----执行中断服务程序--硬件自动清除中断标志位IE0---跳转到主程序继续执行
注意:下降沿触发:自动清除中断标志位,低电平需要手工清除
认识8051几个重要寄存器,配置寄存器相应的位,实现外部中断功能
1.IE寄存器:中断允许寄存器 (IE使能)
IE寄存器用于启用/禁用中断源。
Bit 7 – EA:启用所有位(总开关)
设置IE.7 = 1 –启用全局中断控制位。
1 =启用所有中断 0 =禁用所有中断
Bit 0 – EX0:使能外部中断0位(外部中断INT0开关)
1 =使能外部中断0
0 =禁止外部中断0
Bit 2 – EX1:使能External1中断位,功能同上
2.中断优先级寄存器(IP):分配中断的优先级(可选)
Bit 0 – PX0:外部中断0优先级位
1 =为外部中断(INIT0)分配高优先级。
0 =为INIT0中断分配低优先级。
3.TCON寄存器中需要低四位标志位 来选择和监视外部中断类型和ISR状态。
Bit 1 位- IE0和Bit 3 位- IE1:
如何在8051中产生软件中断?
软件中断不过是控制器内部程序产生的中断。要产生外部中断,我们需要在8051微控制器的INT0或INT1引脚上输入信号。我们已经看到,当在INTo引脚接收到中断信号时,TCON.1位将自动置1,这就是处理器如何知道在INT0引脚接收到中断信号的方式。当TCON.1被置1时,处理器将立即应答该中断,并跳转到相应的INT0的ISR。在分支到ISR时,处理器还将清除TCON.1位。在INT1的情况下也会发生同样的情况,并且相关的位是TCON.3。
Bit 0 位(IT0)和bit 2 位(IT1):
该位选择INT0引脚上的外部中断事件类型。
1 =下降沿触发中断
0 =低电平触发中断
//外部中断0 初始化
void EX0_Init(void)
{
//1、设置触发方式 外部中断0
IT0 = 1;//设置 下降沿触发 TCON
EX0 = 1;//特殊功能寄存器 IE 外部中断中断阀门
EA = 1; //总开关
}
中断服务程序(ISR)
interrupt关键字
1.中断服务函数一定是一个没有返回值的函数
2.中断服务函数一定是一个没有参数的函数
3.中断服务函数函数名的后面跟关键词 interrupt (C51特有的关键字)
4.interrupt n 中断向量标号 ( 0-4) 8051单片机只有5个中断源 8*n 0003h
0003H INT0
000BH T0
0013H INT1
001BH T1
0023H ES
中断向量入口地址 跳转指令
5.中断服务函数不能被主程序或其他程序调用
6、n后面跟using m(0-3) 切换工作寄存器组
sbit LED = P1^0;
void EX0_Init(void);
void EX0_ISR(void) interrupt 0;
main()
{
EX0_Init();
while(1);
}
void EX0_ISR(void) interrupt 0
{
LED = ~LED;//电平取反
}