MCS-51的中断系统
CPU正在处理某件事情时,单片机的内部或外部发生的某一事件请求CPU迅速去处理,于是CPU暂时中止当前的工作去处理所发生的事件。处理的过程是由中断服务处理程序来负责的,它处理完后又回到原来被中止的地方,继续原来的工作,这就是中断。
一、中断请求
51(MCS-51系统简称,以下均使用51)中断系统有五个中断请求源,分别是:
外部中断请求源2个:INT0 和 INT1*,中断请求标志分别为 IE0 和 IE1
定时器/计数器 T0 、T1 溢出中断请求,中断请求标志分别为 TF0 和 TF1
串行口中断请求,中断请求标志位 TI(发送中断请求) 或 RI(接收中断请求)
这些中断请求源的中断请求标志位分别由特殊功能寄存器TCON和SCON的相应位锁存,下面介绍这两种寄存器。
(一)TCON
TCON是定时器/计数器的控制寄存器,字节地址为88H,可以进行位寻址。
TCON | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
标志位 | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
位地址 | 8FH | 8DH | 8BH | 8AH | 89H | 88H |
TF1 、TF0 : 51片内定时器/计数器T1的溢出中断请求标志位,当计数器计数溢出时,置“1”,
TR1、TR0 :定时器/计数器技术控制位,为“1”,启动定时器/计数器工作;为“0”,停止定时器/计数器工作。
IE1、IE0 : 外部中断请求1和0的中断请求标志位。
IT1、IT0 : 外部中断请求1和0为跳沿触发方式还是电平触发方式,为“0”,表示为电平触发方式,加到INT1或INT0上的外部中断请求信号为低电平有效;“1”表示跳沿触发方式,加到INT1和INT0上的外部中断请求输入信号为从高电平到负电平的负跳变有效(按按钮实现)。
(二)SCON
SCON为串行口控制寄存器,字节地址为98H,可位寻址。
SCON | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
标志位 | TI | RI | ||||||
位地址 | 99H | 98H |
TI/RI : 串行口的发送中断请求标志位和接收中断请求标志。CPU相应串行口的发送和接收中断时,并不清“0”T1和R1,必须在中断服务程序中用软件对其进行清“0”。
二、中断控制
(一)中断允许寄存器IE
CPU对中断的开放或屏蔽,是由片内的中断允许寄存器IE控制的。IE字节地址为A8H,可位寻址。
IE | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
标志位 | EA | ES | ET1 | EX1 | ET0 | EX0 | ||
位地址 | ACH | ABH | AAH | A9H | A8H |
EA :中断允许总控制位,为“0”,CPU屏蔽所有中断请求(关中断);为“1”,CPU开放中断请求(但是否相应具体中断还要看该终端类型对应的中断允许位)
ES : 串行口中断允许位
ET1/ET0 : 定时器/计数器T1/T0溢出中断允许标志位
EX1/EX0 : 外部中断1/0允许标志位
以上标志位均为“0”时表示禁止对应中断,为“1”时表示允许对应中断。
51复位后,IE被清0,所有中断请求被禁止。若想允许某一中断源中断,不仅要置“1”对应中断控制位,还要打开中断总开关EA(EA置“1”)。改变IE寄存器的指令时可以用位操作(STEB bit 或 CLR bit)实现也可用字节操作指令(MOV/ANL/ORL IE,#data/A)实现。
(二)中断优先级寄存器IP
51有两级优先级,中断关系为:低优先级可被高优先级中断,反之不能;任何中断得到响应后都不能被其同级中断所中断。当前中断为高级还是低级可由中断优先级寄存器IP设置,其字节地址为B8H,可位寻址:
IP | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|
标志位 | PS | PT1 | PX1 | PT0 | PX0 | |||
位地址 | BCH | BBH | BAH | B9H | B8H |
PS : 串行口中断优先级控制位
PT1/PT0 : 定时器1/0中断优先级控制位
PX1/PX0 : 外部中断1/0中断优先级控制位
以上控制位置“1”表示该中断定义为高优先级中断,“0”则表示低优先级中断
除此之外,51单片机还有一个默认辅助优先级序列,由高到低依次是:
外部中断0
T0溢出中断
外部中断1
T1溢出中断
串行口中断
三、响应中断请求的条件
四个条件:
1、CPU开中断,即EA=1
2、该中断源对应的中断请求标志位为“1”
3、该中断源的中断允许位=1,即该终端没有被屏蔽
4、无同级或最高级中断正在被服务