5.2.2 80C51单片机中断系统的寄存器

5.2.2 80C51单片机中断系统的寄存器

80C51单片机中断系统的特殊功能寄存器包括定时器/计数器控制寄存器(TCON)、串行口控制寄存器(SCON)、中断允许寄存器(IE)和中断优先级寄存器(IP),还包含两个中断优先级状态触发器,以及能自动将中断向量地址装入PC并向CPU提出中断请求的相关电路。

1.TCON和SCON中的相关标志位

80C51单片机有5个中断源,包括2个外部中断,以及3个内部中断源T0、T1和串行口中断源。TCON中包含中断源、T0和T1的中断标志位,以及两个外部中断的触发方式控制位。SCON中包含串行口发送和接收中断源的中断标志位。

外部中断是由外部输入的两个中断源,它们直接触发TCON的IE0和IE1,产生中断标志。外部中断源的触发方式有两种:一种是下降沿触发;一种是低电平触发。外部中断源的触发方式由TCON中的IT0和IT1来决定。下面介绍TCON中的IE0、IT0、IE1和IT1。TCON的字节地址为88H,其位格式如下:

IE0:外部中断的请求标志位。当INT0引脚上出现中断请求信号(低电平或脉冲下降沿)时,硬件自动将IE0置1,产生中断请求标志。

IT0:外部中断触发方式控制位。由软件来置1或清0,以控制外部中断的触发方式。

当IT0=1时,外部中断为下降沿触发,即外部中断出现下降沿时,触发IE0,使其为1。为使下降沿信号被可靠地采样,其负脉冲宽度至少应保持一个机器周期。

当IT0=0时,外部中断为低电平触发,即外部中断出现低电平时,触发IE0,使其为1。

IE1:外部中断的请求标志位。功能与IE0相同。

IT1:外部中断触发方式控制位。功能与IT0相同。

内部中断源有定时器/计数器T0和T1溢出中断源,以及串行口发送/接收中断源。80C51单片机内部有两个定时器/计数器,分别为定时器/计数器T0和定时器/计数器T1,它们内部都有各自的计数器。当计数器计满溢出时,分别产生溢出中断,使各自的中断标志位TF0和TF1置1,产生中断请求标志。TF0和TF1占用TCON中的2位。

TF0:定时器/计数器T0的溢出中断标志位。

TF1:定时器/计数器T1的溢出中断标志位。

串行口发送/接收中断源的中断标志位占用SCON中的2位,分别是发送中断请求标志位TI和接收中断请求标志位RI。SCON的字节地址为98H,其位格式如下:

TI:串行口内部发送中断请求标志位。当串行口发送完一个字符后,由内部硬件使发送中断标志TI置位,产生中断请求标志。

RI:串行口内部接收中断请求标志位。当串行口接收到一个字符后,由内部硬件使接收中断请求标志位RI置位,产生中断请求标志。

串行口的发送中断TI和接收中断RI共用一个内部中断源。它们在逻辑“或”后,作为一个内部的串行口中断源。当CPU响应TI或RI中断时,标志位TI或RI不能由CPU自动清除,必须在程序中设置相应的指令,由软件清除。

2.中断允许寄存器

IE的作用是控制所有中断源的开放或禁止,以及每个中断源是否被允许。IE的字节地址为A8H,其位格式如下:

EA:中断总允许位。EA=1,CPU开放中断;EA=0,CPU禁止所有的中断请求。从图5-3中可以看到,总允许位EA好比一个总开关。

ES:串行中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。

ET1:T1溢出中断允许位。ET1=1,允许定时器/计数器T1中断;ET1=0,禁止定时器/计数器T1中断。

EX1:外部中断1允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。

ET0:T0溢出中断允许位。ET0=1,允许定时器/计数器T0中断;ET0=0,禁止定时器/计数器T0中断。

EX0:外部中断0允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。

80C51单片机复位后,IE中的每一位均被清0,即禁止所有的中断。要使用哪些中断,就要开放IE中对应的中断允许位以及中断总允许位。

3.中断优先级寄存器

80C51单片机具有两个中断优先级,均可编程设定为高优先级或低优先级。IP的字节地址为B8H,其位格式如下:

PS:串行口中断优先级控制位。PS=1,设定串行口为高优先级中断;PS=0,设定串行口为低优先级中断。

PT1:T1中断优先级控制位。PT1=1,设定定时器/计数器T1为高优先级中断;PT1=0,设定定时器/计数器T1为低优先级中断。

PX1:外部中断1优先级控制位。PX1=1,设定外部中断1为高优先级中断;PX1=0,设定外部中断1为低优先级中断。

PT0:T0中断优先级控制位。PT0=1,设定定时器/计数器T0为高优先级中断;PT0=0,设定定时器/计数器T0为低优先级中断。

PX0:外部中断0优先级控制位。PX0=1,设定外部中断0为高优先级中断;PX0=0,设定外部中断0为低优先级中断。

80C51单片机复位后,IP的低5位全部被清0,将所有中断源设置为低优先级中断。

对于80C51单片机的两个中断优先级状态触发器,一个用来指示高级中断正在执行,另一个用来指示低级中断正在执行。在执行中断程序时,高优先级中断源可中断正在执行的低优先级中断服务程序,除非正在执行的低优先级中断服务程序设置了CPU关中断或禁止某些高优先级中断,而同级或低优先级的中断源不能中断正在执行的中断服务程序。

如果几个同优先级的中断源同时向CPU申请中断,谁先得到服务取决于它们在CPU内部的自然优先级顺序。80C51单片机有5个中断源,当它们处于相同优先级时,CPU响应中断的优先顺序(也称为自然优先级顺序)如表5-1所示。

表5-1 同优先级中断源的优先级顺序

当几个同优先级的中断同时向CPU申请中断时,按表5-1中的优先级顺序,首先响应高优先级的中断,然后再响应低优先级的中断。