第4章 中断系统
基本介绍
MCS-51单片机有5个中断请求源;
有4个用于中断控制的特殊功能寄存器IE、IP、TCON(其中6位)、SCON(其中2位)
可提供2个中断优先级,实现二级中断嵌套
5个中断源对应5个固定的中断入口地址
入口地址需要背:
按照中断优先级来(高到低),第一个入口地址为0003H,后面每个增加一个字节(8位)
中断请求源
5个中断请求源
外部中断:INT0(P3.2)和INT1(P3.3)
内部中断:定时器/计数器(T0、T1)溢出中断
以及串行口的数据发送和接收中断
以上所有中断请求标志分别由特殊功能寄存器TCON和SCON来锁存
定时器/计数器控制寄存器TCON
TF0:定时器/计数器T0溢出标志,溢出时由硬件置1,并请求中断(即向CPU请求中断),CPU响应后,由硬件将TF0清0,也可由软件清0(用查询方式时)
TF1:定时器/计数器T1溢出标志,溢出时由硬件置1,并请求中断(即向CPU请求中断),CPU响应后,由硬件将TF0清0,也可由软件清0(用查询方式时)
IT0:外部中断0触发方式控制位。当IT0=0,外部中断0(INT0)为低电平触发方式。当IT0=1,外部中断0为下降沿触发方式。
IE0:外部中断0标志。若IE0=1,则外部中断0向CPU请求中断
IT1:外部中断1触发方式控制位
IE1:外部中断1标志。若IE1=1,则外部中断1向CPU请求中断
串行口控制寄存器SCON
中断允许寄存器IE
EA:CPU中断总允许标志。
ES:串行口中断允许位。
ET1:T1溢出中断允许位。
EX1:外部中断1中断允许位。
ET0:T0溢出中断允许位。
EX0:外部中断0中断允许位。
单片机复位后,IE中各位均被清0,即禁止所有中断
中断优先级寄存器IP
MCS-51单片机中有2个中断优先级,每个中断请求源可编程为高优先级中断或低优先级,可实现二级中断嵌套
低级中断能被高级中断打断,但不能被同级中断打断(即使是自然优先级高也不行);高级中断不能被任何中断打断,一定要返回主程序后再执行一条指令才能响应新的中断请求。
当CPU同时接收到几个同优先级的中断请求时,哪一个先得到响应,取决于CPU中断系统内部的查询顺序,即“自然优先级”。外部中断0>T0溢出>外部中断1>T1溢出>串行口
中断的响应
响应条件
单片机响应中断的条件是:
中断源有请求(相应的中断标志位置1)
CPU允许中断请求(EA = 1)
中断允许寄存器IE相应位置1(中断源允许)
无同级或高级中断正在服务
现行指令已执行完毕
若执行指令为RETI或是访问特殊功能寄存器IE或IP指令时,执行完该指令后至少再执行一条指令才响应中断
工作过程
CPU响应中断时,其工作过程是:
置位相应的“优先级状态”触发器,即指出CPU当前正在处理的中断优先级,以阻断同级或低级中断请求
自动清除中断标志(TI和RI除外,必须由软件清0)。
自动保护断点,即将现行PC内容压入堆栈,并根据中断源把相应的中断程序入口地址装入PC中。
5个中断程序的入口地址是固定的,且各入口地址之间只有8个单元的空间,难以容纳一个中断服务程序。
所以一般情况下,在这些矢量单元中存放一条无条件转移指令,转移目标地址处存放真正的中断服务程序。
例如:
ORG 0003H
LJMP 2000H
这样,真正的INT0中断程序是存放在2000H开始处。
中断响应被暂时阻止的条件
CPU在处理同级或高级中断
现在的机器周期不是当前指令的最后一个机器周期
正在执行RETI或正在访问IE、IP寄存器
中断方式和查询方式的优缺点
历年卷考过这个题,故列出(来源AI)
中断方式和查询方式的优缺点
查询方式: 优点:实现简单,适用于数据传输频率不高的情况。 缺点:效率较低,因为CPU需要不断检查设备状态,可能会造成CPU资源浪费。 中断方式: 优点:CPU可以响应中断来处理事件,而不需要不断轮询,提高了CPU的利用率。 缺点:需要中断处理机制,中断服务程序(ISR)的编写和调试可能较为复杂。