×
单片机 > 单片机程序设计 > 详情

MCS-51单片机的中断系统(2)

发布时间:2020-09-02 发布时间:
|

中断响应过程

中断响应过程为,中断源发出中断请求→对中断请求进行响应→执行中断服务程序→返回主程序。这个过程可分为三个阶段来完成。
1.  中断采样
对于外部中断请求,中断请求信号来自于单片机外部,计算机要想知道有没有中断请求发生,必须对信号进行采样。
① 电平触发方式的外中断请求(IT0/IT1=0)采样到高电平时,表明没有中断请求,IE0或IE1继续为“0”。采样到低电平时,IE0/IE1由硬件自动置“1”,表明有外中断请求发生。
② 脉冲触发式的外中断请求(IT0/IT1=1)在相邻的机器周期采样到的电平由高电平变为低电平时,则IE0/IE1由硬件自动置“1”,否则为“0”。
2.  中断查询
由CPU测试TCON和SCON中的各个中断标志位的状态,确定有那个中断源发生请求,查询时按优先级顺序进行查询,即先查询高优先级再查询低优先级。如果同级,按以下顺序查询:
#INT0→T0→#INT1→T1→ S
如果查询到有标志位为“1”,表明有中断请求发生,接着就从相邻的下一机器周期开始进行中断响应。
3.  中断响应
当CPU查询到中断请求时,由硬件自动产生一条LCALL指令,LCALL指令执行时,首先将PC内容压入堆栈进行断点保护,再把中断入口地址装入PC,使程序转向相应的中断区入口地址。LCALL指令的形式如下:
LCALL   addr16    ;addr16:中断入口地址
入口地址已由系统设定,如下:                                                     
中断源 入口地址
  0003H
T0 000BH
  0013H
T1 001BH
S 0023H
从表中可以看出,每个中断区只有8个单元,很难安排下一个中断程序,一般是在中断入口地址处加一条跳转指令,跳转到用户的服务程序入口。编写中断服务程序的格式一般如下:
ORG    0000H
SJMP    MAIN
ORG    0003H
AJMP   1NJERRVP
        MAIN:    ···
HERE:     SJMP   HERE
1NJERRVP:     ···                  ;中断响应程序
RETI
并不是所有的请求都被响应,当遇到下列情况之一时不响应这些中断请求:
(1)CPU正在处理一个同级或者高级的中断服务
(2)当前指令还没有执行完毕
(3)当前指令是RET、RETI或者是访问IP、IE的指令,执行完这些指令后,还必须再执行一条指令,才响应中断请求。
    注意:MCS-51单片机对中断查询结果不作记忆,当有新的查询结果出现时,因为以上原因而被拖延的查询结果将不复存在,其中断请求也就不能再被响应了。

中断请求的撤销

    中断响应后,TCON和SCON的中断请求标志位应及时撤销。否则意味着中断请求仍然存在,有可能造成中断的重复查询和响应,因此需要在中断响应完成后,撤销其中断标志。
1.  定时中断请求的撤销
硬件自动把TF0(TF1)清0,不需要用户参与。
2.  串行中断请求的撤销
需要软件清零。
3.  外部中断请求的撤销
(1)脉冲触发方式的外中断请求撤销
中断标志位的清零是自动的,脉冲信号过后就不存在了,因此其撤销是自动的。
(2)电平触发方式的外中断请求撤销
中断标志位的清零是自动的,但是如果低电平持续存在,在以后的机器周期采样时,又会把中断请求标志位(IE 0 /IE 1)置位。为此,需要外加电路,把中断请求信号从低电平强制为高电平。
 
 电平触发方式的外中断请求撤销
通过直接置位端#Sd使中断请求信号强制从低电平变为高电平,要实现此功能需要在中断入口地址处加入如下两条指令:
                ORL   P1, #01H
                ANL   P1, #0FEH
关键字:MCS-51  单片机  中断系统 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析