*觉得有用有帮助的评论下,谢谢~
中断系统
概念
- CPU执行事件A时,事件B请求执行(中断请求),这时CPU转去执行事件B(中断响应),待得事件B执行完成后,在返回执行事件A(中断返回)。
中断系统结构
- 51单片机中断系统中有5个中断源,2个优先级,可实现二级中断嵌套。
中断请求标志
- ①TF0/TF1 :T0/T1 的溢出中断请求标志。从初值做加1计数,计满溢出后TF0/TF1置1,发出中断请求,响应中断后硬件自动清0,也可由软件查询清0。
- ②IE0/IE1 :外部中断0/外部中断1 的中断请求标志位,置位后,外部中断0/外部中断1向CPU申请中断,中断响应后,该标志自动清0。
- ③IT0/IT1 :外部中断0/外部中断1 的触发方式控制位 ,等于1或等于0的触发方式有所不同,看图。
- ④TI :串行口1 发送中断请求标志 ,CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一行帧,硬件将是TI置位。但CPU响应中断时不会清除TI,必须由软件清除。
- ⑤RI :串行口1 接受中断请求标志 ,在串行口1允许接受时,每接受完一个串行帧,硬件将使RI置位,与TI相同,中断响应后,必须由软件清零。
中断允许控制
- ①EA :中断允许控制位(总控制)
- ②EX0/EX1 :外部中断0/外部中断1 中断允许位
- ③ET0/ET1 :定时/计数器T0/T1 中断允许位
- ④ES :串行口 中断允许位
同级中断顺序
中断号 | 中断源 | 中断源符号 | 同级自然优先顺序 |
---|---|---|---|
0 | 外部中断0 | INT0 | 最高 |
1 | 定时器T0 | TO | ↓ |
2 | 外部中断1 | INT1 | ↓ |
3 | 定时器T1 | T1 | |
4 | 串行口中断 | TI/RI | |
… | … |
中断优先级原则
- 先响应优先级高的中断请求
- 中断过程中,不能被新的同级或低优先级的中断请求所中断,但可以被高优先级的打断
中断响应条件
- 中断源发出中断请求
- 该中断源的中断允许位打开(置1)
- 中断总开关打开(EA=1)
外部中断0程序
#include "reg52.h"
typedef unsigned int u16;
bit k3=P3^2; //定义按键K3
sbit led=P2^0; //定义P20口是led
void delay(u16 i) //简单延时函数,给下面按键消抖用
{
while(i--);
}
void Int0Init() //外部中断0初始化
{
//设置INT0
IT0=1; //跳变沿出发方式(下降沿)
EX0=1; //打开INT0的中断允许。
EA=1; //打开总中断
}
void main() //主程序
{
Int0Init(); // 设置外部中断0
while(1);
}
void Int0() interrupt 0 //外部中断0的中断函数
{
delay(1000); //延时消抖
if(k3==0)
{
led=~led;
}
}
interrupt
后面的数字为中断号
先这样吧~~