《(17)--5.3单片机中断响应单片机原理及应用.ppt》由会员分享,可在线阅读,更多相关《(17)--5.3单片机中断响应单片机原理及应用.ppt(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章 MCS-51单片机中断系统原理及应用 CPU并不会响应所有的中断请求,只会响应响应符合特定条件特定条件的中断请求。(1)中断请求标志为中断请求标志为1,也就是说中断源向,也就是说中断源向CPU发送了发送了中断请求;中断请求;(2)对应中断允许位为对应中断允许位为1,且中断总开关,且中断总开关EA=1;也就;也就是说是说CPU是允许这个中断源产生中断的。是允许这个中断源产生中断的。(1 1)CPUCPU正在响应同级或更高优先级的中断。正在响应同级或更高优先级的中断。(2 2)CPUCPU当前指令未执行完。当前指令未执行完。(3 3)CPUCPU正执行的指令是中断返回指令正执行的指令是中断
2、返回指令“RETI”“RETI”或访问或访问特殊功能寄存器特殊功能寄存器IEIE或或IPIP的指令的指令,执行这些指令后至少再执行这些指令后至少再执行一条其它指令,才会响应中断。执行一条其它指令,才会响应中断。那么那么,符合这这2个条件的中断请求,是不是就立立刻会刻会被CPU响应呢?当然不是,遇到下面三种情况,CPU不会响应。中断响应过程:中断响应过程:在正常的情况下,从中断请求信号有效开始,直到中断得到响应,通常需在正常的情况下,从中断请求信号有效开始,直到中断得到响应,通常需要要3 38 8个机器周期。中断得到响应后,个机器周期。中断得到响应后,(1 1)首先,根据被响应的中断源的)首先,
3、根据被响应的中断源的中断优先级中断优先级,系统硬件自动置位优先级系统硬件自动置位优先级状态触发器,以阻止同级和低级中断请求。状态触发器,以阻止同级和低级中断请求。(2 2)系统硬件自动清除中断标志(对串口的中断标志,要用软件清除),)系统硬件自动清除中断标志(对串口的中断标志,要用软件清除),(3 3)将程序计数器)将程序计数器PCPC当前值压入堆栈,这就是保存断点,目的是让当前值压入堆栈,这就是保存断点,目的是让CPUCPU从中断服务程序返回时,能回到原来的主程序继续执行。从中断服务程序返回时,能回到原来的主程序继续执行。(4 4)把相应的中断入口地址装入)把相应的中断入口地址装入PCPC,
4、使,使cpucpu转入到相应的中断服务程序中转入到相应的中断服务程序中去执行。去执行。(5 5)中断返回。中断返回。常用的中断服务程序结构如图所示:SERV:SERV:保护现场保护现场 ;中断处理程序中断处理程序恢复现场恢复现场中断返回中断返回 中断编程:【例】在图【例】在图5-55-5中,正常情况下中,正常情况下P1P1口所接的发光管依次循环点亮口所接的发光管依次循环点亮(每次只有一个亮)。当(每次只有一个亮)。当S0S0按下时,产生中断,此时按下时,产生中断,此时8 8只发光管只发光管“全亮全亮全暗全暗”交替出现交替出现8 8次,然后恢复正常。次,然后恢复正常。(1)汇编语言程序如下所示:
5、ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0030H MAIN:MOV SP,#60H;设定堆栈为61H7FH SETB EA;开CPU中断总开关 SETB IT0;设定沿触发 SETB EX0 ;开INT0中断 MOV A,#0FEH ;点亮一个LED AGAIN:MOVP1,A ACALL DELAY RL A ;循环左移1位 SJMP AGAIN(1)汇编语言程序如下所示:ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0030H MAIN:MOV SP,#60H;设定堆栈为61H7FH SETB
6、EA;开CPU中断总开关 SETB IT0;设定沿触发 SETB EX0 ;开INT0中断 MOV A,#0FEH ;点亮一个LED AGAIN:MOVP1,A ACALL DELAY RL A ;循环左移1位 SJMP AGAIN DELAY:MOV R3,#100;延时程序 MOV R4,#0:DELAY1:DJNZ R4,$DJNZ R3,DELAY1 RET ORG 0300H INT00 :PUSH PSW ;外部0中断处理程序,保护现场 PUSH ACC SETB RS0;选择工作寄存器1 CLR RS1 MOV R0,#08 AGAIN1:MOV P1,#0 ;点亮所有的LED ACALL DELAY MOV P1,#0FFH ;熄灭所有的LED ACALL DELAY DJNZ R0,AGAIN1 ;没闪烁8次,则继续 POP ACC ;恢复现场 POP PSW RETI ;中断返回 END