1.中断的定义
中断发生:
CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理
中断响应和中断服务
CPU暂时中断当前的工作,转去处理事件B
中断返回:
待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件
这一过程称为中断
中断的优点:
1.分时操作。
2.实时响应
3.可靠性高
2.MCS51中断系统的结构
MCS51的中断系统有5个中断源(8052有 6个) ,2个优先级,可实现二级中断嵌套
中断编号 中断名 中断源
0 外部中断 0 IE0(P3.2)
1 定时器0溢出中断 TF0
2 外部中断1 IE1(P3.3)
3 定时器1溢出中断 TF1
4 串行口中断 RI
3.中断寄存器:
IE寄存器:
1.单路开关:EX0 ET0 EX1 ET1 ES
EX0:外部中断0允许位
ET0:定时/计数器T0中断允许位
EX1:外部中断1允许位
ET1:定时/计数器T1中断允许位
ES:串行口中断允许位
2.总开关
EA:CPU中断允许位
EA=1打开
IP寄存器:
作用是选择优先级的,解决中断优先级问题。
IT0寄存器:
选择低电平有效还是下降沿有效,上电默认电平触发方式,IT0=1是下降沿有效
T0 T1为定时器中断,RX TX为串行口中断
4.中断优先级顺序由高到低:
外部中断0(IE0)->定时/计数器0(TF0)->外部中断1(IE1)->定时/计数器1(TF1)->串行口(R1或T1)
首先响应的是优先级高的中断请求,正在中断的不会被新的中断请求打断,正在进行低优先级中断服务,能被高优先级中断请求中断。
中断函数一般形式:void 函数名() interrupt n{ }
n代表中断号,中断号是编译器识别不同中断的唯一编号
5.中断函数和普通函数的异同:
同:函数的形式非常类似,中断响应过程和普通函数调用过程也非常相似
异:中断函数不需要声明,普通函数需要声明
使用中断函数需要遵循以下规则:
(1)中断函数不能进行参数传递
(2)在任何情况下,都不能直接调用中断函数
6.简单中断程序:
#include <reg51.h>
void main()
{
P1=0x55;//p1口初始值
EA=1; //全局中断开
EX0=1; //外部中断0开
IT0=0; //电平触发,一般写1,设置为0时,P3.2高电平触发!
while(1)
{
}
}
//外部中断程序
void interves(void) interrupt 0 using 1
{
P1=~P1//进入中断程序执行程序
//此时可以通过EA = 0指令暂时关掉中断
}