《第6章-中断系统ppt课件(全).ppt》由会员分享,可在线阅读,更多相关《第6章-中断系统ppt课件(全).ppt(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章 中断系统中断系统上海电子信息职业技术学院上海电子信息职业技术学院 何永艳主编何永艳主编 第第6章章 中断系统中断系统6.1 中断概述中断概述6.1.1 中断的概念中断的概念6.1.2 中断的功能中断的功能1.提高CPU工作效率2.具有实时控制功能3.具有故障处理功能4.实现人机对话6.2 中断源和中断控制寄存器中断源和中断控制寄存器中断源是指能发出中断请求,引起中断的装置或事件。80C51单片机的中断源共有5个,其中2个为外部中断源,3个为内部中断源::外部中断0,中断请求信号由P3.2输入。:外部中断1,中断请求信号由P3.3输入。T0:定时/计数器0溢出中断,对外部脉冲计数由P
2、3.4输入。T1:定时/计数器1溢出中断,对外部脉冲计数由P3.5输入。串行中断:包括串行接收中断RI和串行发送中断TI。6.2.1 中断源中断源6.2.2 中断控制寄存器中断控制寄存器 80C51单片机中涉及中断控制的有3个方面4个特殊功能寄存器:中断请求:定时和外中断控制寄存器TCON;串行控制寄存器SCON;中断允许控制寄存器IE;中断优先级控制寄存器IP。1.中断请求控制寄存器2.中断允许控制寄存器IE80C51对中断源的开放或关闭由中断允许控制寄存器IE控制。3.中断优先级控制寄存器IP80C51有5个中断源,划分为2个中断优先级:高优先级和低优先级。6.2.3 中断处理过程中断处理
3、过程1.中断请求中断源发出中断请求信号,相应的中断请求标志位(在中断允许控制寄存器IE中)置“1”。2.中断响应CPU查询(检测)到某中断标志为“1”,在满足中断响应条件下,响应中断。1)中断响应条件:(1)该中断已经“开中”;(2)CPU此时没有响应同级或更高级的中断;(3)当前正处于所执行指令的最后一个机器周期;(4)正在执行的指令不是RETI或者是访向IE、IP的指令,否则必须再另外执行一条指令后才能响应。2)中断响应操作 CPU响应中断后,进行下列操作:(1)保护断点地址。把断点处的PC值(即下一条应执行指令的地址)压入堆栈保留起来,这称为保护断点。由硬件自动执行。(2)撤除该中断源的
4、中断请求标志(串行口中断标志须软件清除)。(3)关闭同级中断。(4)将相应中断的入口地址送入PC,使程序转向该中断入口地址,以便执行中断服务程序。80C51五个中断入口地址为:外部中断0:0003H;定时/计数器T0:000BH;外部中断1:0013H定时/计数器T1:001BH;串行口:0023H3.执行中断服务程序中断服务程序应包含以下几部分:1)保护现场。所谓现场是指中断响应时数据存储器的状态,主要是指工作寄存器、累加器和特殊功能寄存器在程序断点处的状态。在中断服务程序状若仍然使用这些单元,便破坏了其原先状态,当中断返回后影响了原来程序的正常运行,因此在执行中断服务程序之前要把这些存储单
5、元的数据送入堆栈保护起来,这就是保护现场。保护现场一定要位于中断服务程序的前面,即先保护现场,再执行中断处理程序。保护现场必须由用户编程完成。2)执行中断服务程序主体,完成相应操作。3)恢复现场。中断服务程序结束,在返回主程序之前,需要将保护的现场内容从堆栈中弹出,以恢复这些存储单元原来的内容,这就是恢复现场,也由用户编程完成。恢复现场一定要在中断处理程序之后,中断返回指令RETI之前。对于80C51,利用堆栈保护和恢复现场需要遵循先进后出,后进先出的原则。4.中断返回在中断服务程序最后,必须安排一条中断返回指令RETI,当CPU执行RETI指令后,自动完成下列操作:1)恢复断点地址。2)开放
6、同级中断,以便允许同级中断源请求中断。5.中断响应等待时间 若排除CPU正在响应同级或更高级的中断情况,中断响应等待时间为38个机器周期。若中断请求时出现在同一个优先级,或更高级的中断正在响应,或正在执行中断服务程序,那么中断响应时间会更长,难以计算。6.中断请求的撤除中断源发出中断请求,相应中断请求标志置“1”。CPU响应中断后,必须清除中断请求“1”标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。1)对定时/计数器T0、T1中断,外中断边沿触发方式,CPU响应中断时就用硬件自动清除了相应的中断请求标志。2)对外中断电平触发方式,需要采取软硬结合的方法消除后果。3)对串行口中断,
7、用户应在串行中断服务程序中用软件清除TI或RI。6.2.4 中断优先控制和中断嵌套中断优先控制和中断嵌套1.1.中断优先控制中断优先控制中断优先级是可编程的,而中断优先权是固定的,不能设置,仅用于同级中断源同时请求中断时的优先次序。80C51中断优先控制的基本原则:高优先级中断可以中断正在响应的低优先级中断,反之则不能。同优先级中断不能互相中断。图6.1 中断的嵌套 同一中断优先级中,若有多个中断源同时请求中断,CPU将先响应优先权高的中断,后响应优先权低的中断。2.2.中断嵌套中断嵌套当CPU正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,CPU可以“中断”正在执行的低优先级中
8、断,转而响应更高一级的中断,这就是中断嵌套。中断嵌套只能高优先级“中断”低优先级,低优先级不能“中断”高优先级,同一优先级也不能相互“中断”。中断嵌套结构类似与调用子程序嵌套,不同的是:子程序嵌套是在程序中事先按排好的;中断嵌套是随机发生的。子程序嵌套无次序限制,中断嵌套只允许高优先级“中断”低优先级。6.2.5 中断系统的应用中断系统的应用 1.中断初始化中断初始化1)设置堆栈指针SP(1)深度要求不高且工作寄存器组13不用时,可维持复位时状态:SP=07H(2)要求有一定深度时,可设置SP=30H或更大。但不能超过7FH。2)定义中断优先级当程序中要使用2个以上的中断时,可根据中断源的轻重
9、缓急,划分高优先级和低优先级。用MOV IP,#XXH或SETB PX指令设置。3)定义外中断触发方式一般情况,以定义边沿触发方式为宜。若外中断信号无法使用边沿触发方式,必须采用电平触发方式时,应在硬件电路上和中断服务程序中采取撤除中断请求信号的措施。4)开放中断 注意开放中断必须同时开放二级控制,即同时置位EA和需要开放中断的中断允许控制位。可用MOV IE,#XXH指令设置,也可用SETB EA 和SETB EX位操作指令设置。5)安排好等待中断或中断发生前主程序应完成的操作内容。注:指令中的X指的时5个中断源中的任一个。2.中断服务主程序 中断服务子程序内容要求中断服务子程序内容要求:1
10、)在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。2)根据需要保护现场。保护现场通常是保护ACC、PSW、DPTR、Rn等特殊功能寄存器中的内容。如这些特殊功能寄存器只在主程序中用到了,而在中断服务程序中不涉及,则不需要保护,也不需要恢复。需要指出的是,保护现场数据越少越好,数据保护越多,堆栈负担越重,堆栈深度设置应越深。3)中断源请求中断服务要求的操作,这是中断服务程序的主体。4)若是外中断电平触发方式,应有中断信号撤除操作。5)恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则。6)中断返回,最后一条指令必须是RETI。6.3 中断系统应用中断系统应用 6.3.
11、1 用外部中断控制出租车记价器用外部中断控制出租车记价器【例6.1】出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断(P3.2)引脚输入,行驶里程为轮胎周长运转圈数,设轮胎周长为2m,试实时计算出租车行驶里程(单位米),数据存32H、31H、30H。解:源程序如下:ORG 0000H;复位地址 LJMP STAT;转初始化 ORG 0003H;中断入口地址 LJMP INT;转中断服务程序ORG 0100H;初始化程序首地址STAT:MOV SP,#60H;置堆栈指针 SETB ITO;置边沿触发方式 MOV IP,#01H;置高优先级 MOV IE,#81H;开中 MOV 30H,#0;里程计数器清0 MOV 31H,#0;MOV 32H,#0;LJMP MAIN ;转主程序,并等待中断 ORG 0200H;中断服务子程序首地址INT:PUSH Acc ;保护现场 PUSH PSW;MOV A,30H;读低8位计数器 ADD A,#2;低8位计数器加2m MOV 30H,A;回存 CLR A;ADDC A,31H;中8位计数器加进位 MOV 31H,A;回存 CLR A;ADDC A,32H;高8位计数器加进位 MOV 32H,A;回存 PUSH PSW ;恢复现场 PUSH Acc;RETI ;中断返回 END
限制150内