MCS-51单片机的中断系统(2)
时间:11-23
来源:互联网
点击:
中断响应过程
中断响应过程为,中断源发出中断请求→对中断请求进行响应→执行中断服务程序→返回主程序。这个过程可分为三个阶段来完成。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 |
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使中断请求信号强制从低电平变为高电平,要实现此功能需要在中断入口地址处加入如下两条指令:
MCS-51单片机中断系 相关文章:
- MCS-51单片机的中断系统(1)(11-23)
- MCS-51单片机的中断系统介绍(11-23)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)