在单片机的应用领域中,MCS - 51 单片机凭借其稳定的性能和广泛的适用性,占据着重要的地位。而其中断系统更是该单片机的功能之一,它能够使单片机在运行过程中及时响应外部事件,大大提高了单片机的工作效率和实时处理能力。下面我们将详细介绍 MCS - 51 单片机中断系统的基本工作流程。
MCS - 51 单片机中断系统的结构如图所示。该单片机拥有 5 个中断源,分别为 2 个外部中断源、2 个定时 / 计数器中断源以及 1 个串行接口中断源。与中断系统相关的寄存器包括 TCON、SCON、IE 和 IP,这些寄存器均支持按位寻址,并且每一位都可以通过特定的指令进行设置。

(图 1:MCS - 51 中断系统的结构)
- 外部中断源:单片机的两个外部中断源 INT0 和 INT1 的中断请求信号源自单片机的外部引脚 INT0 和 INT1。有效的外部中断请求信号(也就是中断触发方式)可以是低电平信号或者电平的下降沿信号。例如,在一些外部设备需要及时向单片机反馈状态的场景中,就可以利用这两种触发方式将设备的状态变化转化为中断请求信号发送给单片机。
- 定时 / 计数器中断源:定时 / 计数器 T0 和 T1 能够在计数和定时这两种工作方式下运行,并且这两种工作方式都可以产生中断请求。当工作于计数方式时,定时 / 计数器会记录 T0 和 T1 引脚上的脉冲个数,一旦脉冲数达到指定值,就会产生中断请求;而工作于定时方式时,定时 / 计数器通过记录机器周期的个数来完成定时工作,当定时时间到达时,便会产生中断请求。在工业自动化控制中,常常会利用定时 / 计数器的中断功能来实现的时间控制。
- 串行接口中断源:单片机的串行通信接口(简称串口)可以向外发送数据或者从外部接收数据,通常 TXD 引脚用于发送数据,RXD 引脚用于接收数据。串口每发送或接收完一个字符帧后都会发出中断请求,分别被称为发送中断请求和接收中断请求。需要注意的是,在 MCS - 51 单片机中,串口的发送中断和接收中断虽然有所不同,但却被当作同一个中断源,对应同一个中断服务处理程序。
单片机为每个中断事件都分配了一个中断请求标志位。当某一中断源发出中断请求时,其对应的中断请求标志位会被置为 1,以此表示该中断发出了中断请求。外部中断 INT0 和 INT1、定时 / 计数器 T0 和 T1 以及串口发送中断和接收中断的中断请求标志位分别为 IE0、IE1、TF0、TF1、TI 和 RI,这些中断请求标志位分别存放在定时 / 计数器控制寄存器 TCON 和串口控制寄存器 SCON 中。

(图 2:定时 / 计数器控制寄存器 TCON 和串口控制寄存器 SCON)
单片机只能依据中断请求标志位的状态来判断中断请求是否发生。若中断发生,中断请求标志位为 1;否则为 0。若中断请求标志位为 1 且该中断没有被屏蔽,那么单片机将执行该中断的中断服务处理程序。在中断请求被处理之后,应及时将其中断请求标志位清 0,否则单片机将会误认为中断请求未消失。特别需要注意的是,对于 2 个外部中断和 2 个定时 / 计数器中断,当单片机响应中断请求并进入中断服务处理程序后,单片机硬件会自动将中断源所对应的中断请求标志位清 0;而串口中断的中断请求标志位不会被单片机硬件自动清 0,需要在程序中通过指令清 0,即 “CLR TI” 或 “CLR RI”。
MCS - 51 单片机的所有中断源均可被屏蔽。中断源的开放与屏蔽由中断允许寄存器 IE 控制。IE 寄存器中各位的定义如下:
- EX0:外部中断 0(INT0)的中断允许位。
- ET0:定时 / 计数器 0(T0)的中断允许位。
- EX1:外部中断 1(INT1)的中断允许位。
- ET1:定时 / 计数器 1(T1)的中断允许位。
- ES:串口的中断允许位。
- EA:CPU 中断总允许位。

(图 3:中断允许寄存器 IE)
当上述标志位被置为 1 时,对应的中断源被开放(即允许);被清 0 则屏蔽(即禁止)对应的中断源。例如,若 EX0 = 0、ET0 = 0、EX1 = 1、ET1 = 0 和 ES = 1,那么除了外部中断 1 和串口中断被开放外,其他几个中断均被屏蔽。中断总允许位 EA 相当于中断的总开关,若 EA = 0,则所有中断被禁止;若 EA = 1,则中断源是否被禁止,将由其自身的中断允许位决定。
MCS - 51 单片机仅有两个中断优先级别,即和低级。中断源的中断优先级别由中断优先级寄存器 IP 决定。IP 寄存器各位的定义如下:
- PX0:外部中断 0(INT0)的中断优先级设定位。
- PT0:定时 / 计数器 0(T0)的中断优先级设定位。
- PX1:外部中断 1(INT1)的中断优先级设定位。
- PT1:定时 / 计数器 1(T1)的中断优先级设定位。
- PS:串口中断的优先级设定位。

(图 4:中断优先级寄存器 IP)
若上述位被置为 1,则对应的中断源被设定为别中断;否则被设定为低级别中断。也就是说,单片机利用寄存器 IP 将所有中断源分成别和低级别两类。例如,若 PX0 = 0、PT0 = 1、PX1 = 1、PT1 = 0 和 PS = 1,那么外部中断 0 和定时 / 计数器 1 被设定为低级别中断,而定时 / 计数器 0、外部中断 1 和串口中断均为别中断。此时,若串口和定时 / 计数器 1 同时发出中断请求,单片机将首先响应和处理其中的别中断,即串口中断。
此外,MCS - 51 单片机又在同一中断优先级别内设定了自然优先级别。当多个同级别中断同时发出中断请求时,单片机中断系统将按照自然优先级别进行中断排序,并首先响应其中自然优先级别的中断。

(图 5:同一中断优先级别内的自然优先级别)
综上所述,MCS - 51 单片机中断系统通过中断的触发、请求、开放与屏蔽以及优先级的设定等一系列流程,实现了对外部事件的高效响应和处理,为单片机在各种复杂应用场景中的稳定运行提供了有力保障。