特殊功能寄存器中的标志
第1页,共26页,编辑于2022年,星期日
中 断 的 概 述
1. 中断
中断是指计算机在执行某一程序的过程中, 由于计算机系统内、 外的某种原因, 而必须中止原程序的执行,。
第14页,共26页,编辑于2022年,星期日
中断响应
1. 中断响应的条件
(1) 同级或高优先级的中断已在进行中;
(2) 当前的机器周期还不是正在执行指令的最后一个机
器周期(换言之, 正在执行的指令完成前, 任何中断请求
都得不到响应);
(3) 正在执行的是一条 RETI或者访问特殊功能寄存器
IE或 IP的指令(换言之, 在 RETI或读写 IE或 IP之后, 不会
马上响应中断请求, 而至少执行一条其它指令之后才会响应)。
第15页,共26页,编辑于2022年,星期日
2. 中断响应过程
单片机一旦响应中断请求, 就由硬件完成以下功能:
(1) 根据响应的中断源的中断优先级, 使相应的优先级状态触发器置 1;
(2) 执行硬件中断服务子程序调用, 并把当前程序计数器PC的内容压入堆栈;
(3) 清除相应的中断请求标志位(串行口中断请求标
志 RI和 TI除外);
(4) 把被响应的中断源所对应的中断服务程序的入口
地址(中断矢量)送入PC, 从而转入相应的中断服务程序。
第16页,共26页,编辑于2022年,星期日
表 中断服务程序入口地址表
第17页,共26页,编辑于2022年,星期日
例如, 现有外部中断 1 提出申请, 且主程序中有R0、 R1、 DPTR、累加器A需保护, 则编制程序应为:
ORG 0000H
AJMP MAIN
ORG 0013H
LJMP INT1
…
ORG 0100H
MAIN: …; 主程序
…
ORG 1000H
第18页,共26页,编辑于2022年,星期日
INT1: PUSH ACC ; 中断服务程序
PUSH DPH
PUSH DPL
PUSH 0
PUSH 1
POP 1
POP 0
POP DPL
POP DPH
POP ACC
RETI
…
第19页,共26页,编辑于2022年,星期日
编程中应注意:
(1) 在 0000H放一条跳转到主程序的跳转指令, 这是因为 MCS-51单片机复位后, PC的内容变为 0000H, 程序从 0000H 开始执行, 紧接着 0003H是中断程序入口地址, 故在此中间只能插入一条转移指令;
(2) 响应中断时, 先自动执行一条隐指令“LCALL 0013H”, 而 0013H至 001BH(定时器 1 溢出中断入口地址)之间可利用的存储单元不够, 故放一条无条件转移指令。
(3) 在中断服务程序的末尾, 必须安排一条中断返回指令RETI, 使程序自动返回主程序。
第20页,共26页,编辑于2022年,星期日
中断系统的应用
例 1 单步操作的中断实现。
把一个外部中断(设为INT0])设置为电平激活方式。其中断服务程序的末尾写上如下几条指令:
JNB , $ ; 在INT0变高前原地等待(死循环)
JB , $; 在 INT0变低前原地等待(死循环)
RETI ; 返回并执行一条指令
第21页,共26页,编辑于2022年,星期日
现在,若INT0保持低电平, 且允许INT0中断, 则CPU就进入外部中断 0 服务程序, 由于有上述几条指令, 它就会停在 JNB处, 原地等待。当INT0 端出现一个正脉冲(由低到高, 再到低)时, 程序就会往下执行, 执行RETI后, 将返回主程序, 往下执行一条指令, 然后又立即响应中断,以等待INT0端出现的下一个正脉冲。 这样在INT0端每出现一个正脉冲, 主程序就执行一条指令, 实现了单步执行的目的, 要注意的是, 这个正脉冲的高电平持续时间不小于 3个周期, 以确保 CPU能采集到高电平值。
第22
特殊功能寄存器中的标志 来自淘豆网m.daumloan.com转载请标明出处.