单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,2024/12/12,1,第,5,章,80C51,的中断系统及定时,/,计数器,80C51,单片机的,中断系统,5.1,80C51,单片机的,中断处理过程,5.2,80C51,单片机的,定时,/,计数器,5.3,80C52,的定时,/,计数器,2,5.4,2024/12/12,2,5.1,80C51,单片机的中断系统,5.1.1 80C51,中断系统的结构,CPU,进行工作,A,时发生了事件,B,,请求,CPU,马上处理,CPU,暂时中断当前工作,A,,转去处理事件,B,事件,B,处理完后,回到工作,A,被中断的地方继续处理,A,工作,中断的概念,中断源,中断请求,中断服务,中断返回,中断系统,中断的优点,:,CPU,利用率高,控制实时性强,系统可靠性好,2024/12/12,3,80C51,中断系统的结构,5,个中断源、,2,个优先级,2024/12/12,4,中断源,5.1.2 80C51,的中断源,外部中断,0,(,INT0,),外部中断,1,(,INT1,),T0,溢出中断(,TF0,),T1,溢出中断(,TF1,),串行口中断(,RI,或,TI,),2024/12/12,5,触发方式设置及中断标志,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/12/12,6,两种触发方式比较:,电平方式,时,,INTx,低电平必须保持到响应时,否则就会漏掉;在中断服务结束前,,INTx,低电平必须撤除,否则中断返回之后将再次产生中断例,,8255,的中断请求线在接受读或写操作后即被复位,因此以其去请求电平触发方式的中断比较方便边沿方式,时,采样到有效下降沿后,在,IEx,中将锁存一个,1,若,CPU,暂时不能响应,申请标志也不会丢失,直到响应时才清,0,例,,ADC0809,的转换结束信号,EOC,为正脉冲,经反相后就可以作为,80C51,的,INTx,信号,2024/12/12,7,溢出中断标志,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/12/12,8,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/12/12,9,中断优先级控制,中断优先级由,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/12/12,10,中断优先级遵循的原则,几个中断同时申请,先响应高级的中断,正进行的中断服务,同级或低级中断不能对其中断,但可以被高级中断所中断为此,中断系统内设有对应高、低,2,个,优先级状态触发器,(用户不能寻址)状态触发器的复位由中断返回指令,RETI,控制2024/12/12,11,5.2,80C51,单片机中断处理过程,5.2.1,中断响应条件和时间,中断响应条件,有中断请求,相应的中断允许位为,1,CPU,开中断(即,EA=1,),遇下面情况之一将不被响应(,此间中断条件失效,中断丢失,),正在处理同级或高级中断,当前选择周期不是所执行指令的最后一个机器周期,正在执行,RETI,或,访问,IE,或,IP,的指令,2024/12/12,12,中断响应时间,中断响应至少需要,3,个完整的机器周期,(,3,8,个)!,受阻时要附加,3,5,个机器周期(,无同级或高级中断正进行,),排序周期,不是指令的最后机器周期,(,如,MUL,,,5,个,),排序周期,恰逢,RETI,类指令,(,要再跟指令,若是,MUL,,,8,个,),2024/12/12,13,5.2.2,中断响应过程,CPU,响应中断过程,将相应优先级状态触发器置,1,(,阻断后来同级或低级中断,),执行硬件,LCALL,指令(,PC,入栈,中断服务程序入口址送,PC,),执行中断服务程序,编写中断服务程序注意,中断服务程序入口存放指令,LJMP,或,AJMP,现场保护与现场恢复,2024/12/12,14,5.2.3,中断返回,中断服务程序最后指令必须是,RETI,,其功能:,将断点从堆栈弹送,PC,,,CPU,从原断点继续执行,将相应优先级状态触发器清,0,,恢复原来工作状态,注意,不能用,RET,代替,RET,I,中断服务程序中,PUSH,和,POP,必须成对使用,2024/12/12,15,5.2.4,中断程序举例,【,例,5-1】,单外部中断源示例,void Ex0()interrupt 0,Flag=,Flag;,while(1),if(Flag=0),/,左移,ScanNum=_crol_(ScanNum,1);,P0=ScanNum;,else,/,右移,ScanNum=_cror_(ScanNum,1);,P0=ScanNum;,DelayMs(500);,2024/12/12,16,【例5-2】如图所示,编写程序实现:系统上电后,数码管显示“P”。
按下S0键则数码管进行加计数,S1键则数码管进行减计数计数值显示在数码管上void t0Isr()interrupt 1,if(Flag0=0)Flag0=1;,Flag1=0;,void Ex1Isr()interrupt 2,if(Flag1=0)Flag1=1;,Flag0=0;,2024/12/12,17,5.3,80C51,单片机的定时,/,计数器,结构,基本型:,T0,,定时、计数T1,,定时、计数、串口波特率发生器增强型:增加了,T2,见,5.3.4,节5.3.1,定时,/,计数器的结构和工作原理,TH1,、,TL1,TH0,、,TL0,TCON,TMOD,2024/12/12,18,工作原理,-,实质是,16,位加,1,计数器,定时器,模式时,对内部,机器周期,计数定时时间,=,计数值,*,机器周期,计数器,模式时,是对,外部脉冲,计数脉冲由,T0,(,P3.4,)或,T1,(,P3.5,),引脚输入注意,:(,若,计数值,为,N,计数初值,为,X,),溢出信号使,TF0,或,TF1,置,1,,并,发出中断请求,,,16,位时有:,X=65536-N,12MHz,晶振时,计数频率低于,0.5MHz,2024/12/12,19,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,,就可启动计数器工作;,GATA,1,时,定时器的启动还要加上,INTx,引脚为高电平这一条件C/T,:,模式选择位,清,0,为定时模式,置,1,为计数方式M1M0,:,工作方式设置位,可设置四种工作方式,(,见下页,)2024/12/12,20,M1M0,工作方式,说 明,00,方式,0,13,位定时,/,计数器,01,方式,1,16,位定时,/,计数器,10,方式,2,8,位自动重装定时,/,计数器,11,方式,3,T0,分成两个独立的,8,位定时,/,计数器;,T1,此方式停止计数,注意:,TMOD,不能进行位寻址,2024/12/12,21,控制寄存器,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/12/12,22,5.3.3,定时,/,计数器的工作方式,T0,有方式,0,、,1,、,2,、,3,;,T1,有方式,0,、,1,、,2,。
以,T0,为例说明方式,0,:,13,位方式,2024/12/12,23,C/T=1,时,则为计数模式,有:,X=2,13,-N=8192-N,C/T=0,时,则为定时模式,有:,X=2,13,-N=8192-N,,,N=,t,/Tcy,【,例,5-3】,若计数个数,N,为,2,,求计数初值公式法计算:,X,8192,2=8190=1FFEH,求补法计算:对,0 0000 0000 0010B,取反加,1,为:,1 1111 1111 1110B(,1FFEH,),初值计算:,公式法,求补法,:,X=,对,N,求补,2024/12/12,24,门控位作用,当,GATE=0,时,仅由,TR0,控制与门的开启与门输出,1,时,控制开关接通,计数开始;,当,GATE=1,时,与门的开启由,INT0,和,TR0,共同控制这种方式可以用来测量,INT0,引脚上正脉冲的宽度注意,:方式,0,的计数初值高,8,位和低,5,位确定麻烦,,实际应用中常由,16,位的方式,1,取代2024/12/12,25,方式,1,:,16,位方式,X=2,16,-N,=,65536-N,计数范围:,1,65536,计数初值要,分成,2,个字节,分别送入,TH0,、,TL0,2024/12/12,26,【,例,5-4】,若要求定时器,T0,工作于方式,1,,定时时间为,1ms,,当晶振为,6 MHz,时,求送入,TH0,和,TL0,的计数初值各为多少?应怎样送入,TH0,和,TL0,?,由于晶振为,6 MHz,,所以机器周期,Tcy,为,2,S,,因此:,N=t/Tcy,=110,-3,/210,-6,500,X,2,16,-N,65536-500,65036,FE0CH,也可以利用以下,2,条语句完成:,TH0=,(65536-500),/,256;,商,为计数初值的,高字节,TL0=,(65536-500),%,256;,余数,为计数初值的,低字节,分别将,FEH,送入,TH0,中,,0CH,送入,TL0,中即可。
2024/12/12,27,方式,2,:,8,位自动重装方式,X=2,8,-N=256-N,计数范围:,1,256,特别适合与脉冲信号发生器,2024/12/12,28,方式,3,:,(仅,T0,有此方式,,T1,的方式,3,将停止计数),TL0,进行,8,位定时,/,计数,TH0,进行,8,位定时(,T1,方式,2,时,可出借,TR1,、。