【单片机原理】第5章 中断系统

串行口控制寄存器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语言

单片机原理

模式识别原理

数字电子技术

自动控制原理

模拟电子技术

数据结构

线性代数

复变函数与积分变换

 概率论与数理统计

高等数学

大学物理

电路原理

关注编者了解更多

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值