MCS-51 单片机中断系统的基本工作流程是什么
扫描二维码
随时随地手机看文章
MCS-51单片机中断系统的结构如图4-1所示。MCS-51单片机有5个中断源,分别是2个外部中断源、2个定时/计数器中断源和1个串行接口中断源。与中断系统有关的寄存器有TCON、SCON、IE和IP,它们都可以按位寻址,其中的每一位都可以通过指令来设置。
图4-1 MCS-51中断系统的结构
下面结合图4-1介绍MCS-51单片机中断系统的基本工作流程。
(1)中断的触发
单片机两个外部中断源INT0和INT1的中断请求信号来自单片机的外部引脚INT0和INT1。有效的外部中断请求信号(即中断触发方式)可以是低电平信号或电平的下降沿信号。
定时/计数器T0和T1可以工作在计数和定时两种工作方式下,两种工作方式都可以产生中断请求。工作于计数方式时,定时/计数器记录T0和T1引脚上的脉冲个数,当脉冲数达到指定值时,将产生中断请求;工作于定时方式时,定时/计数器通过记录机器周期的个数完成定时工作,定时时间到时将产生中断请求。
单片机的串行通信接口(简称串口)可以向外发送数据或从外部接收数据,通常TXD引脚发送数据,RXD引脚接收数据。串口每发送或接收完一个字符帧后都会发出中断请求,分别被称为发送中断请求和接收中断请求。
另外,在MCS-51单片机中,串口的发送中断和接收中断虽然不同,但却被当作同一个中断源,对应同一个中断服务处理程序。
(2)中断请求
单片机给每个中断事件分配了一个中断请求标志位,当某一中断源发出中断请求时,其对应的中断请求标志位被置1,以表示该中断发出了中断请求。外部中断INT0和INT1、定时/计数器T0和T1以及串口发送中断和接收中断的中断请求标志位分别为IE0、IE1、TF0、TF1、TI和RI,这些中断请求标志位分别存放在定时/计数器控制寄存器TCON(见表4-1)和串口控制寄存器SCON(见表4-2)中。
单片机只能根据中断请求标志位的状态判断中断请求是否发生,若中断发生则中断请求标志位为1,否则为0。若中断请求标志位为1且该中断没有被屏蔽,则单片机将执行该中断的中断服务处理程序。中断请求被处理后,应及时地将其中断请求标志位清0,否则单片机将误认为中断请求未消失。
需要特别注意的是,对于2个外部中断和2个定时/计数器中断,单片机响应中断请求并进入中断服务处理程序后,单片机硬件会自动将中断源所对应的中断请求标志位清0;而串口中断的中断请求标志位不会被单片机硬件自动清0,需要在程序通过指令清0,即“CLR TI”或“CLR RI”。
(3)中断的开放与屏蔽MCS-51单片机的所有中断源均可被屏蔽。中断源的开放与屏蔽由中断允许寄存器IE(见表4-3)控制。IE寄存器中各位的定义如下:
1)EX0:外部中断0(INT0)的中断允许位。
2)ET0:定时/计数器0(T0)的中断允许位。
3)EX1:外部中断1(INT1)的中断允许位。
4)ET1:定时/计数器1(T1)的中断允许位。
5)ES:串口的中断允许位。
6)EA:CPU中断总允许位。
上述标志位被置1,则对应的中断源被开放(即允许),被清0则屏蔽(即禁止)对应的中断源。例如:若EX0=0、ET0=0、EX1=1、ET1=0和ES=1,则除了外部中断1和串口中断被开放外,其他几个中断均被屏蔽。中断总允许位EA相当于中断的总开关,若EA=0,则所有中断被禁止;若EA=1,则中断源是否被禁止,将由其自身的中断允许位决定。
(4)中断优先级别和中断嵌套MCS-51单片机仅有两个中断优先级别,即高级和低级。中断源的中断优先级别由中断优先级寄存器IP(见表4-4)决定。IP寄存器各位的定义如下:
1)PX0:外部中断0(INT0)的中断优先级设定位。
2)PT0:定时/计数器0(T0)的中断优先级设定位。
3)PX1:外部中断1(INT1)的中断优先级设定位。
4)PT1:定时/计数器1(T1)的中断优先级设定位。
5)PS:串口中断的优先级设定位。
上述位若被置1,则对应的中断源被设定为高级别中断,否则被设定为低级别中断,即单片机利用寄存器IP将所有中断源分成高级别和低级别两类。例如:若PX0=0、PT0=1、PX1=1、PT1=0和PS=1,则外部中断0和定时/计数器1被设定为低级别中断,而定时/计数器0、外部中断1和串口中断均为高级别中断。此时,若串口和定时/计数器1同时发出中断请求,单片机将首先响应和处理其中的高级别中断,即串口中断。
另外,MCS-51单片机又在同一中断优先级别内设定了自然优先级别,见表4-5。当多个同级别中断同时发出中断请求时,单片机中断系统将按照自然优先级别进行中断排序,并首先响应其中自然优先级别最高的中断。