单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,第,5,章,80C51,的中断系统及定时,/,计数器,80C51,单片机的,中断系统,5.1,80C51,单片机的,中断处理过程,5.2,80C51,单片机的,定时,/,计数器,5.3,80C52,的定时,/,计数器,2,5.4,2024/11/16,1,5.1,80C51,单片机的中断系统,5.1.1 80C51,中断系统的结构,CPU,进行工作,A,时发生了事件,B,,请求,CPU,马上处理,CPU,暂时中断当前工作,A,,转去处理事件,B,事件,B,处理完后,回到工作,A,被中断的地方继续处理,A,工作,中断的概念,中断源,中断请求,中断服务,中断返回,中断系统,中断的优点,利用率高,实时性强,可靠性好,2024/11/16,2,80C51,中断系统的结构,5,个中断源、,2,个优先级,2024/11/16,3,中断源,5.1.2 80C51,的中断源,外部中断,0,(,INT0,),外部中断,1,(,INT1,),T0,溢出中断(,TF0,),T1,溢出中断(,TF1,),串行口中断(,RI,或,TI,),2024/11/16,4,触发方式设置及中断标志,7,6,5,4,3,2,1,0,TCON,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,字节地址:,88H,电平方式(,ITx,=0,),,INTx,引脚,低电平,时,IEx,=1,,,响应中断后,IEx,不自动清,0,(,INTx,引脚状态)。,边沿方式(,ITx,=1,),,INTx,引脚,负跳变,时,IEx,=1,,,响应中断后,IEx,自动清,0,。,外部中断标志,IE1,、,IE0,(用,IEx,表示),2024/11/16,5,两种触发方式比较:,电平方式时,,INTx,低电平必须保持到响应时,否则就会漏掉;在中断服务结束前,,INTx,低电平必须撤除,否则中断返回之后将再次产生中断。,例,,8255,的中断请求线在接受读或写操作后即被复位,因此以其去请求电平触发方式的中断比较方便。,边沿方式时,采样到有效下降沿后,在,IEx,中将锁存一个,1,。若,CPU,暂时不能响应,申请标志也不会丢失,直到响应时才清,0,。,例,,ADC0809,的转换结束信号,EOC,为正脉冲,经反相后就可以作为,80C51,的,INTx,信号,。,2024/11/16,6,溢出中断标志,TF1,、,TF0,(用,TFx,表示),溢出中断请求标志,TFx,,,Tx,启动后就开始由初值进行加,1,计数,直至最高位产生溢出使,TFx,=1,向,CPU,请求中断。,CPU,响应中断后,TFx,自动清,0,。,SCON,的中断标志,7,6,5,4,3,2,1,0,SCON,TI,RI,字节地址:,98H,RI,:串口,接收,中断标志,响应中断时,不能自动清除,TI,:串口,发送,中断标志,响应中断时,不能自动清除,2024/11/16,7,5.1.3 80C51,中断的控制,中断允许控制,中断源的开放和屏蔽由,IE,控制(,1,,开放;,0,,禁止,),7,6,5,4,3,2,1,0,IE,EA,ES,ET1,EX1,ET0,EX0,字节地址:,A8H,EX0:,外中断,0,允许,ET0:T0,中断允许,EX1:,外中断,1,允许,ET1:,T1,中断允许,ES :,串口中断允许,EA,:,CPU,中断允许,2024/11/16,8,中断优先级控制,中断优先级由,IP,控制(,1,,高级;,0,,低级,),7,6,5,4,3,2,1,0,IP,PS,PT1,PX1,PT0,PX0,字节地址:,B8H,PX0:,外中断,0,优先级,PT0:T0,中断,优先级,PX1:,外,中断,1,优先级,PT1:,T1,中断,优先级,PS :,串口中断,优先级,同一优先级的自然顺序:,自高至低:,INT0,、,TO,、,INT1,、,T1,、串口。,2024/11/16,9,中断优先级遵循的原则,几个中断同时申请,先响应高级的中断,正进行的中断服务,同级或低级中断不能对其中断,但可以被高级中断所中断。,为此,中断系统内设有对应高、低,2,个,优先级状态触发器,(用户不能寻址)。,状态触发器的复位由中断返回指令,RETI,控制。,2024/11/16,10,5.2,80C51,单片机中断处理过程,5.2.1,中断响应条件和时间,中断响应条件,有中断请求,相应的中断允许位为,1,CPU,开中断(即,EA=1,),遇下面情况之一将不被响应(,此间中断条件失效,中断丢失,),正在处理同级或高级中断,当前查询周期不是所执行指令的最后一个机器周期,正在执行,RETI,或,访问,IE,或,IP,的指令,2024/11/16,11,中断响应时间,中断响应至少需要,3,个完整的机器周期,(,3,8,个)!,受阻时要附加,3,5,个机器周期(,无同级或高级中断正进行,),查询周期不是当前指令的最后机器周期,(,如,MUL,,,+3,),查询周期恰逢,RETI,类指令,(,且后跟,MUL,指令,+5,),2024/11/16,12,5.2.2,中断响应过程,CPU,响应中断过程,将相应优先级状态触发器置,1,(,阻断后来同级或低级中断,),执行硬件,LCALL,指令(,PC,入栈,中断服务程序入口址送,PC,),执行中断服务程序,编写中断服务程序注意,中断服务程序入口存放指令,LJMP,或,AJMP,现场保护与现场恢复,2024/11/16,13,5.2.3,中断返回,中断服务程序最后指令必须是,RETI,,其功能:,将断点从堆栈弹送,PC,,,CPU,从原断点继续执行,将相应优先级状态触发器清,0,,恢复原来工作状态,注意,不能用,RET,代替,RET,I,中断服务程序中,PUSH,和,POP,必须成对使用,2024/11/16,14,5.2.4,中断程序举例,【,例,5-1】,单外部中断源示例,ORG 0000H,START:LJMP MAIN,ORG 0003H,LJMP INTO,ORG 0030H,MAIN:,CLR IT0,;,电平,SETB EA,SETB EX0,MOV DPTR,,,#1000H,主程序:,2024/11/16,15,中断服务程序,:,ORG 0200H,INT0:PUSH PSW,PUSH ACC,CLR P3.0,;由,P3.0,输出,0,NOP,NOP,SETB P3.0,MOV P1,#0FFH,;置,P1,口为输入,MOV A,P1,;输入数据,MOVX DPTR,A,;存入数据存储器,INC DPTR,;修改数据指针,指向下一个单元,POP ACC,;恢复现场,POP PSW,RETI,2024/11/16,16,【,例,5-2】,多外部中断源示例,中断服务程序,:,ORG 0003H,LJMP INSE0,ORG 0013H,LJMP INSE1,INSE0:PUSH PSW;XI0,中断服务,PUSH ACC,POP ACC,POP PSW,RETI,(,转下页,),2024/11/16,17,INSE1:PUSH PSW,(,接上页,),PUSH ACC,JB P1.0,DV1,;,P1.0,为,1,,转,XI1,中断服务程序,JB P1.1,DV2,;,P1.1,为,1,,转,XI2,中断服务程序,JB P1.2,DV3,;,P1.2,为,1,,转,XI3,中断服务程序,JB P1.3,DV4,;,P1.3,为,1,,转,XI4,中断服务程序,INRET:POP ACC,POP PSW,RETI,DV1:,;,XI1,中断服务程序,AJMP INRET,DV4:,;,XI4,中断服务程序,AJMP INRET,2024/11/16,18,5.3,80C51,单片机的定时,/,计数器,定时,/,计数器的结构,基本型:,T0,,定时、计数。,T1,,定时、计数、串口波特率发生器。,增强型:增加了,T2,。见,5.3.4,节。,5.3.1,定时,/,计数器的结构和工作原理,TH1,、,TL1,TH0,、,TL0,TCON,TMOD,2024/11/16,19,定时,/,计数器的工作原理,实质是,16,位加,1,计数器,定时器模式时,是对内部,机器周期,计数。计数值乘以机器周期就是定时时间,计数器模式时,是对,外部事件,计数。脉冲由,T0,(,P3.4,)或,T1,(,P3.5,),引脚输入。,注意,:(,若,计数值,为,N,计数初值,为,X,),溢出信号使,TF0,或,TF1,置,1,,并,发出中断请求,,,16,位时有:,N=65536-X,,或,X=65536-N,12MHz,晶振时,计数频率低于,0.5MHz,2024/11/16,20,5.3.2,定时,/,计数器的控制,工作方式寄存器,TMOD,7,6,5,4,3,2,1,0,TMOD,GATE,C/T,M1,M0,GATE,C/T,M1,M0,字节地址:,89H,GATE,:门控位。,GATE,0,时,只要,TRx,为,1,,就可启动定时,/,计数器工作;,GATE,1,时,要,TRx,为,1,定时,/,计数器的启动还要加上,INTx,引脚为高电平这一条件。,C/T,:模式选择位。清,0,为定时模式,置,1,为计数方式。,M1M0,:工作方式设置位。可设置四种工作方式,(,见下页,)。,2024/11/16,21,M1M0,工作方式,说 明,00,方式,0,13,位定时,/,计数器,01,方式,1,16,位定时,/,计数器,10,方式,2,8,位自动重装定时,/,计数器,11,方式,3,T0,分成两个独立的,8,位定时,/,计数器;,T1,此方式停止计数,注意:,TMOD,不能进行位寻址,2024/11/16,22,控制寄存器,TCON,7,6,5,4,3,2,1,0,TCON,TF1,TR1,TF0,TR0,字节地址:,88H,TFx,:,Tx,溢出标志位。,响应中断后,TFx,有硬件自动清,0,。用软件设置,TFx,可产生同硬件置,1,或清,0,同样的效果。,TRx,:,Tx,运行控制位。,置,1,时开始工作;清,0,时停止工作。,TRx,要由软件置,1,或清,0,(,即启动与停止要由软件控制,)。,2024/11/16,23,5.3.3,定时,/,计数器的工作方式,T0,有方式,0,、,1,、,2,、,3,;,T1,有方式,0,、,1,、,2,。以,T0,为例说明。,方式,0,:,13,位方式,2024/11/16,24,C/T=1,时,则为计数模式,有:,X=2,13,-N=8192-N,C/T=0,时,则为定时模式,有:,X=2,13,-N=8192-N,,,N=,t,/Tcy,t,是定时时间,,Tcy,是机器周期时间,【,例,5-3】,若计数个数,N,为,2,,求计数初值。,公式法计算:,X,8192,2=8190=1FFEH,求补法计算:对,0 0000,0000,0010B,取反加,1,为:,1 1111,1111,1110B(,1FFEH,),初值计算:,公式法,求补法,:,X=,对,N,求补,2024/11/16,25,门控位作用,当,GATE=0,时,仅由,TR0,控制与门的开启。与门输出,1,时,控制开关接通,计数开始;,当,GATE=1,时,与门的开启由,INT0,和,TR0,共同控制。这种方式可以用来测量,INT0,引脚上正脉冲的宽度。,注意,:方式,0,的计数初值高,8,位和低,5,位确定麻烦,,实际应用中常由,16,位的方式,1,取代。,2024/11/16,26,方式,1,:,16,位方式,X=2,16,-N=65536-N,计数范围:,1,65536,计数初值要,分成,2,个字节,分别送入,TH0,、,TL0,2024/11/16,27,【,例,5-4】,若要求定时器,T0,工作于方式,1,,定时时间为,1ms,,当晶振为,6 MHz,时,求送入,TH0,