《单片机原理及应用第五章.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用第五章.ppt(45页珍藏版)》请在三一办公上搜索。
1、第五章,中断系统,5.1 中断概述,中断是指CPU对系统或系统外发生的某个事件的一种响应过程,即CPU暂时停止现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序,处理结束后再返回被暂停处继续执行原来的程序。实现这种中断功能的硬件系统和软件系统统统称为中断系统。,引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。,一个单片机系统可能有多个中断源,而单片机CPU在某一时刻只能响应一个中断源的中断请求,当多个中断源
2、同时向CPU发出中断请求时,则必须按照“优先级别”进行排队,CPU首先选定其中中断级别高的中断源为其服务,然后按排队顺序逐一服务,完毕后返回断点地址,继续执行主程序。,分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;,实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;,可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。,优点:,中断系统应考虑的基本问题:,中断源:中断请求信号的来源。中断响应与返回:CPU响应中断后转去执行特定中断服务程序及执行完毕后返回原执行的程序。优先级控制:多个中断提出请求时,CPU 响应的次序。,中断与
3、调用子程序的区别:,子程序的执行是由程序员事先安排好的(由一条调用子程序指令来转入),而中断服务程序是由随机的中断事件引起的;子程序的执行受到主程序或上一级子程序的控制,而中断服务程序一般与被中断的程序毫无关系;有可能发生多个中断事件同时请求CPU服务的情况。,中断的作用:,中断作为一项重要的计算机技术,在计算机中得到了广泛的应用。中断技术实质上就是一种资源共享技术,其主要作用如下:中断技术能实现CPU与多个外部设备并行工作,提高了CPU的利用率及数据的输入/输出效率;中断技术能对计算机运行过程中某个事件的出现或突然发生的故障,做到及时发现并进行自动处理,即实现实时处理;中断技术能使我们通过键
4、盘发出请求,随时对运行中的计算机进行干预,即可以实现人机联系;实现多道程序的切换运行;在多机系统中,实现各处理机之间的信息交换和任务切换。,5.2 AT89C51中断系统,5.2.1 中断源及中断系统构成 51子系列提供5个中断源,具有两个优先级,可形成中断嵌套。/INT0:外部中断0,P3.2口,低电平或下降沿触发。/INT1:外部中断1,P3.3口,低电平或下降沿触发。T0:定时计数器0中断,T0回零溢出触发TF0标志。T1:定时计数器1中断,T1回零溢出触发TF1标志。TIRI:串行I/O中断,串行口完成一帧数据发送接收后触发。,80C51的中断系统有5个中断源,2个优先级,可实现二级中
5、断嵌套。,5.2.2 中断标志与中断控制,1、中断锁存寄存器TCON:,TCON也为定时计数器的控制寄存器,锁存锁存标志。字节地址88H。,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,1、中断锁存寄存器TCON:,TF1:T1溢出中断标志TF0:T0溢出中断标志 1有中断请求IE1:INT1中断请求标志 0无中断请求IE0:INT0中断请求标志,IT1:INT1触发控制位 1下降沿触发IT0:INT0触发控制位 0低电平触发,2、串行口控制寄存器SCON:,TI,串行口发送中断标志位。当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件
6、置位TI。CPU响应中断时,不能自动清除TI,TI必须由软件清除。RI,串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。同样,RI必须由软件清除。,3、中断允许寄存器IE:,EA:总中断控制位ES:串行口中断控制位ET1:T1中断控制位EX1:INT1中断控制位ET0:T0中断控制位EX0:INT0中断控制位以上各位:1允许中断;0禁止中断。,用于打开或关断各中断源,字节地址A8H。,4、中断优先级寄存器IP:,PS:串行口中断优先级控制位PT1:T1中断优先级控制位PX1:INT1中断优先级控制位PT0:T0中断优先级控制位PX0:INT0中断优先级控制位以
7、上各位:1高优先级;0低优先级。,用于设定各中断源的优先级,字节地址B8H。,中断基本规则:,任一种中断,不能被同级或低级中断所中断;高级中断能打断低级中断(中断嵌套);若同时有几个同级中断源提出申请,CPU响应的顺序为(查询):INT0(高)T0INT1T1RITI(最低),5.3 中断处理过程,中断处理过程可分为4个阶段:中断请求,中断查询和响应,中断处理,中断返回。1.中断请求 中断请求是由硬件完成的,定时中断和串行中断在单片机芯片内部自动完成,中断请求完成后,相应的中断请求标志位被直接置位。外部中断的中断请求信号要分别从(P3.2)和(P3.3)2个引脚由片外输入。片内中断控制系统在每
8、个机器周期的S5P2对引脚信号进行采样根据采样的结果来设置中断请求标志位的状态,中断请求完成后,中断请求标志位被置位。,2.中断查询和响应 中断的查询和中断的响应也是由硬件自动完成的。所谓查询:就是由CPU测试TCON和SCON中的各标志位的状态,以确定有无中断请求以及是那一个中断请求。在程序执行过程中,中断查询是在指令执行的每个机器周期中不停地重复进行的。,3 中断响应条件中断源有中断请求;此中断源的中断允许位为1;CPU开中断(即EA=1)。同时满足时,CPU才有可能响应中断。,此外,若某个中断源通过编程设置处于被打开的状态,并满足中断响应的条件,但是,若遇到以下任一情况,则单片机仍不能响
9、应此中断:当前CPU正在处理比申请源高级或与申请源同级的中断。当前正在执行的那条指令没有执行完。正在访问IE、IP中断控制寄存器或执行RETI指令。并且,只有在执行这些指令后至少再执行一条指令时,才能接受中断请求。由于上述原因而未能响应的中断请求,待上述原因消失时该中断请求标志却已消失,那么该中断不再被响应。也就是说,MCS-51对查询的结果不作记忆,查询过程在下个机器周期重新进行。,4 中断响应 中断响应是对中断源提出的中断请求的接受,在中断查询中,当查询到有效的中断请求时,紧接着就进行中断响应。中断响应的主要内容是由硬件自动生成一条长调用指令LCALL addr16,这里的addr16就是
10、程序存储器中相应的中断服务程序地址区的入口地址。,中断入口地址:,0003H:外部中断0服务程序入口(INT0)000BH:定时器0中断服务程序入口(T0)0013H:外部中断1服务程序入口(INT1)001BH:定时器1中断服务程序入口(T1)0023H:串行口中断服务程序入口,5 中断响应时间:,一般情况下:中断请求 响应中断(38个机器周期),中断响应时间是指从中断响应有效(标志位置1)到转向其中断服务程序地址区的入口地址所需的时间。分析可知,在单中断源的中断系统中,中断响应时间至少要用3个机器周期,最多为8个机器周期。在一般应用情况下,中断响应时间长短通常无需考虑,但是在需要精确定时的
11、应用中,为了保证定时的精确,往往要估算中断响应的时间。,6、中断响应过程:,响应中断自动清除中断请求标志(IE0、IE1、TF0、TF1,但RI/TI需由软件清)保留断点(当前PC值入栈)中断入口地址PC执行中断服务程序中断返回(RETI)恢复断点(原PC值出栈),8.中断请求的撤销,CPU响应中断后,应撤销该中断请求,否则会引起再次中断。对于定时中断,在CPU响应中断后,由中断机构硬件自动撤销中断请求标志TF0和TF1;对于脉冲方式触发的外中断,由于脉冲信号过后就消失了,也是在响应中断后由中断机构硬件自动撤销中断请求标志IE0和IE1;对电平触发的外中断,CPU响应中断后,必须立即撤除引脚上
12、的低电平触发信号才能由硬件自动撤销中断请求标志IE0和IE1;对于串行中断,CPU响中断后,中断请求标志RI和TI不会被自动撤销,它们要用软件来撤销,这在编写串行中断服务程序时应以注意。,9.中断处理,中断处理应根据具体要求编写中断服务程序。在程序中要注意以下2个问题:现场保护和现场恢复;关中断和开中断,10.中断返回,中断服务程序的最后一条指令必须是中断返回指令RETI,CPU执行这条指令时,把响应中断时置位的优先级触发器复位,再从堆栈中弹出断点地址送PC,使程序回到断点处重新执行先前被中断了的程序。由于RETI的作用不同于RET,所以中断的返回不能用RET指令来替代。,5.4 中断系统的应
13、用,AT89C51中断功能的应用主要包括两方面的内容:一是各中断源的合理运用和相应硬件电路的设计,二是初始化程序和中断服务程序的编写。下面通过几个应用举例加以理解。,例利用外中断实现程序的单步执行。AT89C51内部有4 KB字节的Flash存储器,用户编写好的程序用简单的程序写入器很容易写入和擦除,在没有开发系统的条件下,利用外中断实现程序的单步运行为用户调试程序带来一定的方便。,外中断/INT0设为电平触发方式,中断服务程序为:ORG 0003H JNB P3.2,$JB P3.2,$RETI,原理:当CPU正在处理某中断时,不能响应同级别中断,且在执行RETI返回指令后,还必须多执行一条
14、指令才能响应新的中断。,例 扩展外部中断源:在变频调速器中都设有过流(OC)、过压(OV)、欠压(UV)、过热(OH)这四种故障保护,当任一故障发生时,都要立刻停机处理,避免故障范围扩大。这种情况必须采用中断方式,使单片机立刻响应中断处理。试设计其硬件电路和软件程序。,根据要求,四个故障相当四个中断源,可利用中断查询方法,将四个中断源归结为一个中断请求,同时四个故障信号引到P1口的四个输入端,然后在中断程序中查询P1口,确定是哪一个故障申请的中断。电路如图5-8所示。一旦发生故障,单片机必须响应中断,因此,该中断必须设置成最高级中断。在中断程序中可以显示故障信息。,图5-8 扩展4个外中断源电
15、路,主程序和中断服务程序如下:ORG0000HLJMPZCX1;转主程序 ORG 0013HLJMP INT1;转中断程序 ORG 0100HZCX1:MOV SP,#30H;置堆栈指针MOV IP,#04H;设 为最高级CLR IT1;设 为电平触发SETB EA;开中断SETB EX1ZCX2:其他处理程序 AJMP ZCX2,ORG 0200HINT1:PUSH PSW;中断服务程序 PUSH ACC JB P1.0,XI1;P1.0为1,转OC中断服务程序 JB P1.1,XI2;P1.1为1,转OV中断服务程序 JB P1.2,XI3;P1.2为1,转UV中断服务程序 JB P1.3
16、,XI4;P1.3为1,转OH中断服务程序INRET:POP ACC POP PSW RETIXI1:AJMP OCXI2:AJMP OV XI3:AJMP UV XI4:AJMP OH,OC:;OC处理子程序(略)AJMP INRET OV:;OV处理子程序(略)AJMP INRET UV:;UV处理子程序(略)AJMP INRET OH:;OH处理子程序(略)AJMP INRET,例:下图是单片机控制的数据传输系统。将P1口设置成数据输入口,外部设备每准备好一个数据时发出一个正脉冲,使D触发器Q端置0,向送入一个低电平中断请求信号。中断响应后,为了撤销中断请求,可利用P3.0向D触发器的直
17、接置位端SD输出一个负脉冲,使D触发器的Q端置1,从而撤销了低电平的中断请求信号。,程序编制如下:ORG 0000HSTART:LJMP MAIN;跳转到主程序 ORG 0003H LJMP INT0;转向中断服务程序 ORG 0030H;主程序MAIN:CLR IT0;设置电平触发方式 SETB EA;CPU开放中断 SETB EX0;允许外中断0中断 MOV DPTR,#1000H;置数据区地址针 ORG 0100H;中断服务程序,INT0:PUSH PSW;保护现场 PUSH A CLR P3.0;由P3.0输出负脉冲 NOP;NOP;SETB P3.0;MOV A,P1;输入数据 MO
18、VX DPTR,A;存入数据存储器 INC DPTR;修改数针 POP A;恢复现场 POP PSW;RETI;中断返回,例:图5-3的中断线路可实现多个故障。当系统无故障时,4个故障源输入端全为低电平,显示灯全熄灭,只有当某部分出现故障,其相应的输入线才由低电平变为高电平从而引起中断。中断服务程序的任务就是判定故障源,并进行相应的灯光显示。,程序编制如下:,ORG 0000H AJMP MA1;转向主程序 ORG 0003H AJMP SERVE;转向中断服务程序MA1:MOV P1,#55H;全部指示灯灭,并为读入故障信;号作准备 SETB IT0;选取外中断为脉冲触发方式 SETB EX
19、0;允许外中断0中断 SETB EA;开CPU中断LOOP:MOV A,P1;ANL A,#55H;JNZ LOOP;有故障信号转LOOP MOV P1,#55H;无故障信号灯全灭,;并为读入故 障信号作准备 SJMP LOOP;等待中断,SERVE:JNB P1.0,L1;中断服务程序,查询故障源,若有故障,将;相应的灯点亮 SETB P1.1 SJMP L2L1:CLR P1.1L2:JNB P1.2,L3 SETB P1.3 SJMP L4L3:CLR P1.3L4:JNB P1.4,L5 SETB P1.5 SJMP L6L5:CLR P1.5L6:JNB P1.6,L7 SETB P1.7 SJMP L8L7:CLR P1.7L8:RETI,本章到此结束,