51 单片机中断系统

中断系统

51单片机有5个中断系统


五个中断系统图

(优先级从高到低)

中断号 0 1 2 3 4
名称 INT0 T0 INT1 T1 Rx/Tx

中断允许控制器 IE寄存器
字节地址A8H EA ? ? ES ET1 EX1 ET0 EX0
EX0 外部中断0允许位;
ET0 定时/计数器T0中断允许位;
EX1 外部中断0允许位;
ET1 定时/计数器T1中断允许位;
ES 串行口中断允许位;
EA CPU中断允许(总允许)位

中断请求控制控制寄存器 (TCON寄存器)
字节地址88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IT0 外部中断0触发方式控制位 0为电平触发方式 1位边沿触发方式(下降沿)
IE0 外部中断0中断请求标志位
IT1 外部中断1触发请求方式控制位
IE1 外部中断1触发中断请求标志位
TR0 T0运行控制位
TF0 定时/计数器T0溢出中断请求标志位。
TR1 T1运行控制位。
TF1 定时/计数器T1溢出中断请求标志位

CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
正在进行的低优先级中断服务,能被高优先级中断请求所中断。

为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。

中断条件

中断源有中断请求;
此中断源的中断允许位为1;
CPU开中断(即EA=1)。

代码示例:

主程序中需要有以下代码:
EA=1;//打开总中断开关
EX0=1;//开外部中断0
IT0=0/1;//设置外部中断的触发方式

中断服务函数:

void   int0   ()  interrupt   0    using  1
{
    do anything that you want
}

你可能感兴趣的:(51 单片机中断系统)