【单片机原理】第5章 中断系统,中断允许控制,中断优先级控制
目录
串行口控制寄存器SCON中的中断标志位
SCON中控制位的含义
二、中断允许控制
1、中断允许寄存器IE的格式 (Interrupt Enable)编辑
2、中断允许寄存器IE中各位的含义。
三、中断优先级控制
1、89C51/S51的中断优先级
2、中断优先级寄存器IP (Interrupt Priority)
3、中断优先级排列顺序
§5.4 中断响应及中断处理过程
一、中断响应条件
二、中断响应的自主操作过程
我们在编写中断服务程序时应注意:
三、中断响应时间
串行口控制寄存器SCON中的中断标志位
SCON为串行口控制寄存器,其低2位锁存串行口的接
收中断和发送中断标志RI和TI。
• SCON中TI和RI的格式如下图所示。
SCON中控制位的含义
1、TI:串行口发送中断请求标志。
CPU将一个数据写入发送缓冲器SBUF时,就启动发
送。每发送完一帧串行数据后,硬件置位TI。但CPU响应
中断时,并不清除TI,必须在中断服务程序中由软件对TI
清0。
2、RI:串行口接收中断请求标志。
在串行口允许接收时,每接收完一个串行帧,硬件置
位RI。同样,CPU响应中断时不会清除RI,必须在中断服
务程序中由软件对RI清0。
二、中断允许控制
1、中断允许寄存器IE的格式 (Interrupt Enable)
2、中断允许寄存器IE中各位的含义。
①EA—中断允许总控制位。 E= Enable A= All
EA=0:屏蔽所有的中断请求;EA=1:CPU开放中断。对各中断源的中断请求是否允许,还要取决于各中断源的中断允许控制位的状态。这就是所谓的两级控制。
②ES—串行口中断允许位。 E= Enable S= Serial
ES=0:禁止串行口中断;
ES=1:允许串行口中断。
③ET1—定时器/计数器T1的溢出中断允许位。 E= Enable T= Timer
ET1=0:禁止T1中断;
ET1=1:允许T1中断。
④EX1—外部中断1的溢出中断允许位。
EX1=0:禁止外部中断1中断;
EX1=1:允许外部中断1中断。
⑤ET0—定时器/计数器T0的溢出中断允许位。
ET0=0:禁止T0中断;
ET0=1:允许T0中断。
⑥EX0—外部中断0的溢出中断允许位。
EX0=0:禁止外部中断0中断;
EX0=1:允许外部中断0中断。
例5-1:假设允许片内定时器/计数器中断,禁止其他中断。试根据假设条件设置IE的相应值。
解:根据题意,应该设置(IE)=10001010B=8AH
(a)用字节操作指令
MOV IE,#8AH;或 MOV A8H,#8AH;
(b)用位操作指令
SETB ET0;定时器/计数器0允许中断
SETB ET1;定时器/计数器1允许中断
SETB EA ;CPU开中断
三、中断优先级控制
1、89C51/S51的中断优先级
2、中断优先级寄存器IP
3、中断优先级排列顺序
4、中断优先级控制实现的功能
5、例5-2
1、89C51/S51的中断优先级
• 89C51/S51有两个中断优先级。
• 每个中断请求源均可编程为高优先级中断或低优先级
中断。
• 中断系统中有两个不可寻址的“优先级生效”触发器,
分别指出CPU正在执行的高、低优先级的中断服务程
序。当其为1时则分别屏蔽所有的中断请求。
2、中断优先级寄存器IP (Interrupt Priority)
中断优先级寄存器IP各控制位的含义
①PS—串行口中断优先级控制位
②PT1—定时器/计数器T1中断优先级控制位
③PX1—外部中断1中断优先级控制位
④PT0—定时器/计数器T0中断优先级控制位
⑤PX0—外部中断0中断优先级控制位
若某控制位为1:则相应的中断源规定为高级中
反之控制位为0:则相应的中断源规定为低级中断。
3、中断优先级排列顺序
• 当同时接收到几个同一优先级的中断请求时,响应哪
个中断源则取决于内部硬件查询顺序。
• 其优先级顺序排列如 图所示。、
4、中断优先级控制实现的功能
(1)按内部查询顺序排队:当数个中断源同时向CPU发出中断请求时,CPU根据设计者事先确定的中断源顺序号的次序,依次响应其中断请求。
(2)实现中断嵌套:当CPU正在处理一个中断请求时,又出现了另一个优先级比它高的中断请求,这时,CPU就暂时中止执行对原来优先级较低的中断源的服务程序,保护当前断点,转去响应优先级更高的中断请求,并为它服务。待服务结束,再继续执行原来较低级的中断服务程序。该过程称为中断嵌套。该中断系统称为多级中断系统。
二级中断嵌套
例5-2:设8031的片外中断为高优先级,片内中断为低优
先级。设置IP相应值。
• 解:(IP)=00000101B=05H
(a)用字节操作指令
MOV IP,#05H;或 MOV 0B8H,#05H;
(b)用为操作指令
SETB PX0
SETB PX1
CLR PS
CLR PT0
CLR PT1
§5.4 中断响应及中断处理过程
中断处理过程的三个阶段可分为:
◼
中断响应
◼
中断处理
◼
中断返回
中断处理的大致流程如 右图所示。
一、中断响应条件
①有中断源发出中断请求。
②中断总允许位EA=1,即CPU中断。
③申请中断的中断源的中断允许位为1,即中断没有被屏蔽。
④无同级或更高级中断正在被服务。
⑤当前的指令周期已经结束。
⑥若现行指令为RETI或是访问IE或IP指令时,该指令以及
紧接着的另一条指令已执行完。
二、中断响应的自主操作过程
• 1、中断响应的自主操作过程
⑴ 把当前PC值压入堆栈,保护断点。
⑵ 将相应的中断服务程序的入口地址送入PC。
⑶ 对有些中断源,CPU会自动清除中断标志。
⑷ 执行中断服务程序。
⑸ 执行到返回指令RETI,中断服务程序结束,将堆栈
内容弹出到PC,返回到原来断点继续执行。
2、各中断源及其对应的矢量地址(中断入口地址)
89C51/S51的CPU在每个机器周期的S5P2期间顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志。如查询到某个中断标志为1,则将在接下来的机器周期S1期间按优先级进行中断处理。中断系统通过硬件自动将相应的中断矢量地址装入PC,以便进入相应的中断服务程序。表现为CPU的自主操作。
• 89C51/S51单片机的中断系统中有两个不可编程的“优先级生效”触发器。一个是“高优先级生效”触发器,用以指明已进行高级中断服务,并阻止其他一切中断请求;一个是“低优先级生效”触发器,用以指明已进行低优先级中断服务,并阻止除高优先级以外的一切中断请求。
89C51/S51单片机一旦响应中断,首先置位相应的中断“优先级生效”触发器,然后由硬件执行一条长调用指令LCALL,把当前PC值压入堆栈,以保护断点,再将相应的中断服务程序的入口地址(如外中断0的入口地址为0003H)送入PC,于是CPU接着从中断服务程序的入口处开始执行。
• 对于有些中断源,CPU在响应中断后会自动清除中断标志,如定时器溢出标志TF0、TF1和边沿触发方式下的外部中断标志IE0、IE1;
• 有些中断标志不会自动清除,只能由用户用软件清除,如串行口接收发送中断标志RI、TI;在电平触发方式下的外部中断标志IE0和IE1则是根据引脚INT0和INT1的电平变化的,CPU无法直接干预,需在引脚外加硬件(如D触发器)使其自动撤销外部中断请求。
CPU执行中断服务程序之前,自动将程序计数器的内容(断点地址)压入堆栈保护起来(但不保护状态寄存器PSW的内容,也不保护累加器A和其他寄存器的内容);然后将对应的中断矢量装入程序计数器PC,使程序转向该中断矢量地址单元中,以执行中断服务程序。各中断源及与之对应的矢量地址见表。
由于89C51/S51系列单片机的两个相邻中断源中断服务程序入口地址相距只有8个单元,一般的中断服务程序是容纳不下的,通常是在相应的中断服务程序入口地址中放一条长跳转指令LJMP,这样就可以转到64 KB的任何可用区域了。若在2 KB范围内转移,则可存放AJMP指令。
中断服务程序从矢量地址开始执行,一直到返回指令RETI为止。RETI指令的操作,一方面告诉中断系统该中断服务程序已执行完毕,另一方面把原来压入堆栈保护的断点地址从栈顶弹出,装入程序计数器PC,使程序返回到被中断的程序断点处继续执行。
我们在编写中断服务程序时应注意:
① 在中断矢量地址单元处放一条无条件转移指令(如LJMP××××H),使中断服务程序可灵活地安排在64 KB程序存储器的任何空间。
② 在中断服务程序中,用户应注意用软件保护现场,以免中断返回后丢失原寄存器、累加器中的信息。
③ 若要在执行当前中断程序时禁止更高优先级中断,则可先用软件关闭CPU中断或禁止某中断源中断,在中断返回前再开放中断
三、中断响应时间
• CPU不是在任何情况下都对中断请求予以响应,而不同的情况下对中断响应的时间是不同的。
• 对于顺利的中断响应,其最短的响应时间为3个机器周期。
• 对于受阻的中断响应,则响应时间会更长一些。
• 若中断系统只有一个中断源,则响应时间为3~8个机器周期之间。
到5.4.2中断处理
资料仅供学习使用
如有错误欢迎留言交流
上理考研周导师的其他专栏:
光电融合集成电路技术 电路原理
C语言 复变函数与积分变换
单片机原理
模式识别原理
数字电子技术
自动控制原理 传感器技术
模拟电子技术
数据结构
概率论与数理统计
高等数学
传感器检测技术
智能控制
嵌入式系统
图像处理与机器视觉
热工与工程流体力学
数字信号处理
线性代数
工程测试技术
上理考研周导师了解更多
作者:上理考研周导师