资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
第11页 / 共20页
第12页 / 共20页
第13页 / 共20页
第14页 / 共20页
第15页 / 共20页
第16页 / 共20页
第17页 / 共20页
第18页 / 共20页
第19页 / 共20页
第20页 / 共20页
亲,该文档总共20页全部预览完了,如果喜欢就下载吧!
点击查看更多>>
资源描述
第二级,第三级,第四级,第五级,第,5,章,中断系统,5.2.3,中断请求的响应、撤除及返回,1,中断的响应,从前面介绍的中断允许控制寄存器IE中可看出,一个中断源发出请求后是否被CPU响应,首先必须得到IE寄存器的允许,即开中断。如果不置位IE寄存器中的相应允许控制位,则所有中断请求都不能得到CPU的响应。,在中断请求被允许的情况下,某中断请求被CPU响应还要受下列条件的影响。,5.2.3 中断请求的响应、撤除及返回,(1)当前CPU没有响应其他任何中断请求,则AT89C51在执行完现行指令后就会自动响应该中断。,(2)CPU正在响应某中断请求时,如果新来的中断请求优先级更高,则AT89C51会立即响应新中断请求,从而实现中断嵌套;如果新来的中断请求与正在响应的中断优先级相同或更低,则CPU必须等到现有中断服务完成以后,才会自动响应新来的中断请求。,(3)在CPU执行RETI指令或访问IE/IP寄存器指令时,CPU必须等到这些指令执行完之后才能响应中断请求。,(1)当前CPU没有响应其他任何中断请求,,AT89C51响应某一中断请求后要进行如下操作:,(1)完成当前指令的操作。,(2)保护断点地址,将PC内容压入堆栈。,(3)屏蔽同级的中断请求。,(4)将中断源入口地址(固定的)送入PC寄存器,自动转入相应中断程序入口地址。中断源口地址如表5-2所示。,(5)执行中断服务程序。,(6)当执行到RETI指令时即结束中断,从堆栈中自动弹出断点地址到PC寄存器,返回到先前断点处继续执行原程序。表5-2给出的中断源入口地址是固定的,不能更改。,AT89C51响应某一中断请求后要进行如下操,表,5-2 AT89C51,中断入口地址表,中断源,中断程序入口地址,INT0,0003H,定时器T0,000BH,INT1,0013H,定时器T1,001BH,串行口中断,0023H,表5-2 AT89C51中断入口地址表中断源中断程序入口地,2,中断响应的时间,中断响应时间是指CPU从查询中断请求标志到转入中断服务程序入口地址所需要的时间。,3,中断请求的撤除,中断源发出中断请求后,CPU首先使相应的中断标志位置位,然后通过对中断标志位的检测决定是否响应。而CPU一旦响应某中断请求后,在该中断程序结束前(RETI),必须把它的相应的中断标志复位,否则CPU在返回主程序后将再次响应同一中断请求。,2中断响应的时间,AT89C51的中断标志位的清除(复位)有两种方法,即硬件复位和软件复位。串行口中断请求,CPU响应后,没有用硬件直接清除其中断标志TI(SCON.1,发送中断标志)、RI(SCON.0,接收中断标志)的功能,必须靠软件复位清除。因此在响应串行口中断请求后,必须在中断服务程序中的相应位置通过指令将其清除(复位)。例如可使用以下指令:,CLR TI,CLR RI,或 ANL SCON,#0FCH,AT89C51的中断标志位的清除(复位),ANL P1,#0FEH,ORL P1,#01H,CLR IE0,上述指令中第二条、第三条是十分必要的,第二条指令不但使上的低电位变成高电位,撤除了中断,而且使D触发器可以再次接受中断请求正脉冲信号。第三条指令用于清除可能已被重复置位的中断标志位IE0,使本次中断请求被彻底撤除。,ANL P1,#0FEH,图5-6 清除外部中断请求电路,图5-6 清除外部中断请求电路,4,中断返回,AT89C51响应中断后,自动执行中断服务程序。在中断服务程序中,只要遇到RETI指令(不论在什么位置),单片机就结束本次中断服务,返回原程序。因此,在中断服务程序的最后必须有一条RETI指令,用于中断返回。,4中断返回,5.3 中断系统的应用,AT89C51中断功能的应用主要包括两方面的内容:一是各中断源的合理运用和相应硬件电路的设计,二是初始化程序和中断服务程序的编写。下面通过几个应用举例加以理解。,例,5.1,利用外中断实现程序的单步执行。,AT89C51内部有4 KB字节的Flash存储器,用户编写好的程序用简单的程序写入器很容易写入和擦除,在没有开发系统的条件下,利用外中断实现程序的单步运行为用户调试程序带来一定的方便。,5.3 中断系统的应用 AT89C,图5-7 单步执行程序硬件电路图,图5-7 单步执行程序硬件电路图,例,5.2,利用定时器作外部中断源。,AT89C51内部有两个定时器/计数器,当它们选择为计数器工作方式时,T0(P3.4)或T1(P3.5)引脚上发生的负跳变将使T0或T1计数器加1计数。利用此特性,将P3.4、P3.5作为外部中断请求输入线,将T0或T1计数初值设定为满量程(#0FFH)。当T0、T1引脚上的电平发生负跳变时,计数器加1计数溢出,引起中断,因而可当作外中断使用,以计数器T0为例,初始化程序如下:,例5.2 利用定时器作外部中断源。,MOV TMOD,#06H ;置T0为工作方式2,MOV TL0 ,#0FFH ;置T0计数初值,MOV TH0 ,#0FFH,SETB EA ;开CPU中断,SETB ET0 ;允许T0中断,SETB TR0 ;启动T0计数,END,MOV TMOD,#06H ;置T0为工作方式2,例,5.3,扩展外部中断源:在变频调速器中都设有过流(OC)、过压(OV)、欠压(UV)、过热(OH)这四种故障保护,当任一故障发生时,都要立刻停机处理,避免故障范围扩大。这种情况必须采用中断方式,使单片机立刻响应中断处理。试设计其硬件电路和软件程序。,例5.3 扩展外部中断源:在变频调,根据要求,四个故障相当四个中断源,可利用中断查询方法,将四个中断源归结为一个中断请求,同时四个故障信号引到P1口的四个输入端,然后在中断程序中查询P1口,确定是哪一个故障申请的中断。电路如图5-8所示。一旦发生故障,单片机必须响应中断,因此,该中断必须设置成最高级中断。在中断程序中可以显示故障信息。,根据要求,四个故障相当四个中断源,可利用中,图5-8 扩展4个外中断源电路,图5-8 扩展4个外中断源电路,主程序和中断服务程序如下:,ORG0000,AJMPZCX1 ;转主程序,NOP,ORG 0013H,AJMP INT1 ;转中断程序,NOP,ORG 0100H,主程序和中断服务程序如下:,ZCX1:MOV SP,#30H ;置堆栈指针,MOV IP,#04H ;设 为最高级,CLR IT1 ;设 为电平触发,SETB EA ;开中断,SETB EX1,ZCX2:其他处理程序,AJMP ZCX2,ORG 0200H,ZCX1:MOV SP,#30H ;置堆栈指针,INT1:PUSH PSW ;保护现场,PUSH ACC,MOV A,P1 ;读入P1口低4位状态,ANL A,#0FH,JNB ACC0,X1 ;是OC中断吗?不是则转移,ACALL XY1 ;调OC处理子程序,X1:JNB ACC1,X2 ;是OV中断吗?不是则转移,ACALL XY2 ;调OV处理子程序,X2JNB:ACC2,X3 ;是UV中断吗?不是则转移,ACALL XY3 ;调UV处理子程序,INT1:PUSH PSW ;保,X3:JNB ACC3,X4 ;是OH中断吗?不是则转移,ACALL XY4 ;调OH处理子程序,X4:POP ACC,POP PSW,RETI,XY1:OC处理子程序(略),RET,X3:JNB ACC3,X4 ;是OH中,
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6