中止呼应进程
中止呼应进程为,中止源宣布中止恳求→对中止恳求进行呼应→履行中止服务程序→回来主程序。这个进程可分为三个阶段来完结。
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
进口地址已由体系设定,如下:
中止源 | 进口地址 |
0003H | |
T0 | 000BH |
0013H | |
T1 | 001BH |
S | 0023H |
从表中能够看出,每个中止区只要8个单元,很难组织下一个中止程序,一般是在中止进口地址处加一条跳转指令,跳转到用户的服务程序进口。编写中止服务程序的格局一般如下:
ORG
SJMP
ORG
AJMP
HERE:
1NJERRVP:
RETI
并不是一切的恳求都被呼应,当遇到下列状况之一时不呼应这些中止恳求:
(1)CPU正在处理一个同级或许高档的中止服务
(2)当时指令还没有履行结束
(3)当时指令是RET、RETI或许是拜访IP、IE的指令,履行完这些指令后,还有必要再履行一条指令,才呼应中止恳求。
中止恳求的吊销
1.
硬件主动把TF0(TF1)清0,不需求用户参加。
2.
需求软件清零。
3.
(1)脉冲触发方法的外中止恳求吊销
中止标志位的清零是主动的,脉冲信号往后就不存在了,因而其吊销是主动的。
(2)电平触发方法的外中止恳求吊销
中止标志位的清零是主动的,可是假如低电平继续存在,在今后的机器周期采样时,又会把中止恳求标志位(IE 0
经过直接置位端#Sd使中止恳求信号强制从低电平变为高电平,要完成此功用需求在中止进口地址处参加如下两条指令: