资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,定时器的讲解和使用 有对定时器,2,的详细讲解,第八章 定时器,1,章节概述 很棒,8.1,概述,8.2,定时器,T0,和,T1,的结构,8.3,定时器工作模式,8.4,定时器,T2,2,8.1,概述,定时器是单片机的重要功能模块之一,在检测、控制领域有广泛应用。,定时器常用作定时时钟,以实现定时检测、定时响应、定时控制,并且可用于产生,ms,宽的脉冲信号,驱动步进电机,定时和计数功能最终都是通过,计数实现,的,若计数的事件源是周期固定的脉冲,则可以实现,定时功能,,否则只能实现,计数功能,。因此可以将定时和计数功能由一个部件实现。,3,实现定时和计数的方法一般有:,软件定时、专用硬件电路和可编程定时器,/,计数器,三种方法。,软件定时,:执行一个循环程序进行时间延迟。定时准确,不需要外加硬件电路,但增加,CPU,开销。,专用硬件电路定时:,可实现精确的定时和计数,但参数调节不便。,可编程定时器计数器:,不占用,CPU,时间,能与,CPU,并行工作,实现精确的定时和计数,又可以通过编程设置其工作方式和其它参数,因此使用方便,。,4,定时器的基本工作原理是:利用计数器对固定周期的脉冲计数,通过寄存器的溢出来触发中断。,具体应用步骤:,1,)根据需要的定时时间,结合单片机的晶振频率,计算出寄存器的初始值,2,)根据需要开中断,3,)启动定时器,若已规定用软件启动,则可把,TR0,、,TR1,或,TR2,置“,1”,;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时。,5,XC866,单片机有三个,16,位的定时器,定时器,0,、定时器,1,和定时器,2,。,定时器,0,、,1,各具有四种工作模式;定时器,2,有两种工作模式。,定时器,0,、,1,和定时器,2,的任何一种工作模式均可通过程序对相应寄存器进行设置来选择。,定时器在定时时间到时,可以由程序决定是否产生中断请求信号,进而判断是否执行中断程序。,但是,无论中断请求信号是否产生,当定时器在定时时间到时,定时器的溢出标志位,TF0,(,TF1,)由硬件置“,1”,。,6,8.2,定时器,T0,和,T1,的结构,定时器,T0,和,T1,的结构如图,8-1,所示。,图,8-1,定时器,T0,和,T1,结构图,核心寄存器,16,位加法计数器,定时器模式寄存器,7,1.16,位加法计数器,16,位加法计数器是定时器的核心,图,8-1,中用寄存器,TH0,、,TL0,及,TH1,、,TL1,表示。,T,0,加法计数器的高,8,位和低,8,位分别用,TH0,、,TL0,表示,T,1,加法计数器的高,8,位和低,8,位分别用,TH1,、,TL1,表示,高,8,位和第,8,为可分别单独使用,当定时器工作时,加法计数器对内部机器周期脉冲,Tcy,计数。,Tcy,8,2.,模式寄存器(,TMOD,),TMOD,用来选择定时器,0,、,1,的工作模式,低,4,位用于定时器,0,,高,4,位用于定时器,1,,其组成如图,8-2,所示。,图,8-2,模式寄存器组成,方式选择,00,:模式,0,01,:,模式,1,10,:,模式,2,11,:,模式,3,方式选择,T1,T0,9,3.,控制寄存器(,TCON,),TCON,高,4,位用于控制定时器,0,、,1,的运行;低,4,位用于控制外部中断,与定时器无关。,定时器,0,、,1,运行控制位,TR0,(,TR1,):,TR0(TR1)=1,启动,TR0(TR1)=0,停止,定时器,0,、,1,溢出标志,TF0,(,TF1,):,溢出时该位由硬件自动置,1,,响应中断后,由硬件自动清,0,图,8-3,控制寄存器组成,10,4.,中断使能寄存器(,IEN0,),IEN0,中的,ET0,(,ET1,)位控制定时器,0,、,1,是否产生中断请求信号。为,0,时不产生中断请求信号,为,1,时允许产生中断请求信号。其结构如图,8-4,所示。,图,8-3,中断使能寄存器组成,定时器,0,中断使能位,定时器,0,中断使能位,11,8.3,定时器工作模式,定时器0 和定时器1 完全兼容,均可设定为四种不同的工作模式,如表8-1 所示。寄存器TMOD 的位域TxM选择定时器的工作模式。,两个定时器在模式0、1 和2 时独立工作;在模式3 时具有特定功能。,12,表,8-1,定时器,0,和定时器,1,工作模式,13,1.,工作模式,0,当,T0M,(,T1M,),=00,时定时器设定为工作模式,0,,此时定时器工作于,13,位定时状态。,其中,TH0,是高,8,位加法计数器,,TL0,是低,5,位加法计数器(,TL0,只用了低,5,位,高,3,位未用)。,TL0,加法计数溢出时向,TH0,进位,,TH0,加法计数溢出时硬件置,TF0=1,。,加法计数器对机器周期脉冲,Tcy,计数,每个机器周期,TL0,加,1,。,14,定时器的定时时间,计数初始值,X,最大定时能力:,15,模式,0,的结构图如图,8-4,所示。,图,8-4,方式,0,结构图,门控位,GATE=0,定时器不受控于外部信号;仅打开与门,是定时器仅有,TR,位控制;,GATE=1,定时器受控于外部信号,此时要求,TR=1,;,13,位加法计数器,16,例题,:,生成周期为,1.2,m,s,的等宽正方波。机器晶振,26.67MHz,。,使用,T0,以方式,0,工作,由,P,0.0,输出,1.2,m,s,机器周期:,37.5ns,。计数周期,Tcy,是机器脉冲的,2,分频,因此,Tcy=75ns,;,定时时间,0.6ms,。,以,0.6,m,s,为周期在,P1.0,端交替输出高低电平。,17,定时器初始化程序,MOV TL0,#0X00,MOV TH0,#0X06,MOV TMOD,#0X00,SETB ET0,SETB TR0,定时器中断服务程序,PUSH.,CPL P0_0,POP,T0,从,192,开始计数,直到超过,8192,即溢出,置,TF0=1,产生中断信号,18,2.,工作模式,1,T0M,(,T1M,),=01,时定时器设定为工作模式,1,,此时定时器,0,(定时器,1,)被设置为,16,位定时器。此时,TH0,、,TL0,都是,8,位加法计数器。其他与工作方式,0,相同。,定时器的定时时间,计数初始值,19,模式,1,的结构图如图,8-5,所示。,图,8-5,方式,1,结构图,16,位加法计数器,20,3.,工作模式,2,当,T0M,(,T1M,),=10,时定时器设定为工作模式,2,,此时定时器,0,(定时器,1,)被设置为可自动重载的,8,位定时器。,TL0,为,8,位加法计数器,,TH0,为存放该,8,位加法计数器初值的寄存器。,TH0,、,TL0,的初值都由程序预置。,在工作模式,2,中,定时器的定时时间由下式确定:,只有,T0,可工作于此模式,21,模式,2,的结构图如图,8-6,所示。,图,8-6,方式,2,结构图,8,位加法计数器,初值寄存器,22,4.,工作模式,3,当,T0M,(,T1M,),=11,时定时器设定为工作模式,3,,只有定时器,0,可以工作在工作模式,3,下。如把定时器,1,设置为工作模式,3,,则定时器,1,停止工作。,TL0,、,TH0,成为两个独立的,8,位加法计数器。它的工作情况与模式,0,、模式,1,类似,差别在于定时范围为:,模式,3,的结构图如图,8-7,所示。,TL0 占用定时器0 的控制位:GATE0,TR0 和TF0,TH0,占用定时器1 的控制位TR1 和TF1,TH0 溢出时将置位TF1,并且在ET1 置位时产生中断。,23,图,8-7,方式,3,结构图,24,T0,和,T1,的应用举例,例,若,f,OSC,=26.67MHz,,,T1,工作于方式,1,,产生,45ms,的定时中断,,TF1,为其中断源标志。试编写主程序和中断服务程序,使,P1.0,产生,周期为,90ms,的方波,。(忽略中断响应时间和指令执行时间),解:,让,P1.0,每,45,ms,取反一次,即可实现。定时器的单次定时时间不可能达到,45ms,,如果设定,16,位的工作模式,1,,最大定时时间也才为,4.9152ms,。,可让定时器,多次定时产生,4.5ms,的定时时间,如让,T1,工作在方式,1,,单次定时时间为,4.5ms,,那么,T1,中断,10,次就是,45ms,的时间。,25,(,1,)确定定时常数,假设使用,f,OSC,的,2,分频作为计数源,则,Tcy,2/f,OSC,2/,(,26.6710,6,),75ns,由公式,可知计数初值,TH1=0 x15,,,TL0=0 xA0,。,26,(,2,)初始化程序,包括,T1,初始化和中断系统初始化,主要是对,IP,、,IE,、,TCON,、,TMOD,的相应位进行正确的设置,并将时间常数送入,T1,。一般将初始化操作放在主程序中完成,当程序规模较大时,应编写单独的初始化程序,以利于程序的模块化设计。,(,3,)中断服务程序,中断服务程序除了完成要求的方波产生这一工作之外,还要注意将时间常数重新送入,T1,中,为下一次产生中断作准备。,27,程序清单如下(主程序):,#include,sbit P1_0=P10;,int count=10;/10,次,T1,中断为,45ms,void main(void),TMOD=0 x10;/T1,方式,1,P1_0=0;,TH1=0 x15;/,初值,TL1=0 xA0;,IEN0=0 x08;/,允许,T1,中断,IP|=0 x08;,IPH|=0 x08;/TF1,中断为高级中断,TR1=1,EA=1;/,总开中断,while(1);/,死循环,查询等待,TF1,置位,产生方波,注:寄存器所在页的选择没有列出,28,程序清单如下(中断服务程序片段):,TF1=0;,TH1=0 x15;,TL1=0 xA0;/,重填初值,If(count!=0),count,-,;,else,count=10;P1_0=!P1_0;,29,8.4,定时器,T2,8.4.1,概述,定时器,2,是一个,16,位通用计数器,其具有两种操作模式:,16,位自动重载模式和,16,位捕获模式。,如果预分频功能被禁止,定时器,2,工作时,,16,位通用加法计数器以,12,分频的周期脉冲计数,每个周期,16,位通用加法计数器加,1,或减,1,。,30,定时器,2,由,T2MOD,寄存器、,T2CON,存器、功能存器,TH2,、,TL2,、,RC2H,、,RC2L,等电路构成。,TH2,、,TL2,构成,16,位通用计数器。,RC2H,、,RC2L,作为,16,位寄存器,在自动重载模式中,RC2H,、,RC2L,作为,16,位通用计数器的,16,位初值寄存器,在捕捉模式中,当引脚,T2EX,上出现下降沿跳变时,把,TH2,、,TL2,的当前值捕捉到,RC2H,、,RC2L,中去。,31,8.4.2,定时器,T2,控制寄存器,1.,模式寄存器,T2MOD,寄存器,T2MOD,用来选择定时器,2,的工作模式。其组成如图,8-8,所示。,32,启动边沿选择位,外部启动使能位,捕获模式,/,重载模式,的边沿选择位,预分频使能位,计数器,递增,/,递减使能位,图,8-8 T2MOD,各位功能,33,2.,控制寄存器,T2CON,寄存器,T2CON,控制定时器,2,的工作模式,其各位功能如图,8-9,所示。,上溢,/,下溢标志位,外部事件标志位,展示,T2EX,引脚状态,捕获,/,重载模式选择位,0,:重载;,1,:捕获,外部使能控制位,1,:使能,T2EX,引脚控制;,0,:禁止,T2EX,引脚控制;,启动,/,停止控制位,图,8-9 T2CON,各位功能,34,8.4.3,定时器,T2,工作模式,1.,自动重载模式,控制寄存器,T2CON,中的,置“,0”,时,定时器,2,被选择为自动重载模式。,该模式下,定时器,2,计数至溢出时,将寄存器,RC2H,、,RC2L,中的,16,位初始值重新装入定时器的,TH2,、,TL2,寄存器中,开始新一轮计数循环。,并置位寄存器,T2CON,的,TF2,位表示计数溢出,从而向,CPU,发送中断请求信号。,溢出标志,TF2,必须由程序清零。根据控制寄存器,T2MOD,中,DCEN,控制位的设置,自动重载模式可进一步分为两种类型。,35,1,)禁止递增,/,递减计数模式,若,DCEN=0,,则递增,/,递减计数选择被禁止,此时定时器只能递增计数。工作原理如图,8-10,所示。,图,8-10 T2,禁止递增,/,递减计数模式,27,号引脚,使能,/,禁止引入外部信号控制,T2,中断标志位,通用,16,定时器寄存器,重载值寄存器,预分频使能位,36,若EXEN2=0,置位TR2 定时器开始递增计数,计数至最大值FFFFH 后溢出并置位TF2,同时将寄存器RC2 中的16 位重载值重新装入定时器寄存器。,重载值由软件预先设置。新一轮计数循环开始,定时器同上一轮计数循环一样,从重载值开始递增计数。,37,若,EXEN2=1,,置位,TR2,定时器开始递增计数至最大值,FFFFH,。,计数溢出,或输入引脚,T2EX,的负,/,正跳变(由寄存器,T2MOD,的位,EDGESEL,选择)均会引起,16,位重载,将寄存器,RC2,的内容重新装入定时器寄存器。,中断标志位:,若由溢出引起重载,溢出标志,TF2,置位。,若由引脚,T2EX,的负,/,正跳变引起重载,寄存器,T2CON,中的,EXF2,置位。,这两种情况均产生中断,定时器进入下一轮计数循环。,EXF2,标志和,TF2,一样必须由软件清零。,38,允许硬件启动时,(T2RHEN=1),T2EX,第一个上升沿,/,下降沿触发,TR2=1,启动,T2;,上升沿,/,下降沿的选择由,T2REGS,选择;,如果使能外部控制(,EXEN2=1,),引脚,T2EX,的边沿跳变完成两个任务:(由,T2REGS,选择上升沿,/,下降沿),启动,T2,EXF2,置位,39,2,)使能递增,/,递减计数模式,若,DCEN=1,,则递增,/,递减计数选择被使能,此时定时器可以递增或递减计数。工作原理如图,8-11,所示。,图,8-11 T2,使能递增,/,递减计数模式,40,引脚,T2EX,的逻辑电平为,1,时,定时器,2,递增计数,因此定时器递增计数,计数至最大值,FFFFH,后溢出并置位,TF2,,,RC2,寄存器的,16,位重载值重新装入定时器寄存器。,引脚,T2EX,的逻辑电平为,0,时,定时器,2,递减计数。定时器递减计数并当,THL2,的值和寄存器,RC2,中的值相等时发生下溢。下溢后置位,TF2,,并将值,FFFFH,重新载入定时器寄存器,THL2,中,41,若允许硬件启动T2(当T2RHEN=1)时,根据T2EX输入的是上升沿/下降沿可将T2设置为递增、递减计数,T2由上升沿启动,T2只能工作于递增模式,T2由下降沿启动,T2只能工作于递减模式,42,2.,捕获模式,控制寄存器,T2CON,中的,及,EXEN2,置位时,定时器进入,16,位捕获模式。,此模式下,,递减,计数功能必须禁止。,16,位计数器,始终递增计数,,计数至最大值,FFFFH,后溢出,,TF2,置位并将,0000H,重新载入定时器寄存器,TH2,、,TL2,中。,溢出后,TF2,置位,则定时器向,CPU,发送中断请求。,捕获模式的结构图如图,8-12,所示。,43,图,8-12 T2,捕获模式结构图,44,在引脚T2EX 的下降沿/上升沿(由T2MOD.EDGESEL 选择),将定时器寄存器(THL2)的值捕获到寄存器RC2 中。如果在计数器加1 时检测到捕获信号,计数器先加1 然后执行捕获操作,从而确保总能捕获到定时计数器的最新值。执行完捕获操作,EXF2 置位、可用来产生中断请求,45,若允许硬件启动T2(当T2RHEN=1)时,引脚T2EX输入的第一个下降沿/上升沿(由T2MOD.EDGESEL 选择)启动T2,在启动T2的同时,置位EXF2。,在下一个下降沿/上升沿到来时,将进行捕获操作。,46,例程分析,求矩形波,A,、,B,两点之间的时间,设晶振频率为,26.67MHZ,分析:,A,和,B,两点处各有一个跳变,在,A,、,B,跳变的这一刻进行定时器的启动和当前计数值的捕获,即可获得计数脉冲的个数,结合每个输入脉冲的周期即可计算,A,、,B,之间的时间,因此,该脉冲应加在定时器,T2,的外部输入引脚上,A,B,x,47,主程序:,MOV T2L,#0X00,MOV T2H,#0X00,MOV T2MOD,#0 xC0,;,T2,外部启动使能,并上升沿启动,MOV T2CON,#0 x09,;,使能外部电平变化影响,T2,,并设置,T2,为捕获模式。,MOV IEN0,#0 xA0,MOV IP,#0 x02,MOV IPH,#0 x02,SETB EA;,分频模式设为,00,,即计数脉冲频率为:,fclk/12,,即计数周期为:,450ns,48,中断服务程序,INT_T2:,PUSH R0,PUSH R1,MOV PSW,#0 x00,JB TF2,d0_TF2,;如果是,T2,溢出,跳转到,do_TF2,JB EXF2,do_EXF2,;如果是,T2,的外部输入引起,EXF2,置位,JB NDOV,do_NDOV,;如果是分数分频器引起的中断,JB SYNEN,do_SYNEN,;如果是,LIN,通信引起的中断,do_TF2:,MOV R0,RC2L,MOV R1,RC2H,LCALL COMP;,调用子程序,将,R1,、,R0,构成的,16,位,16,进制数*,450ns,(转为,16,进制),通过,16,进制数相乘指令即可得出时间,再转为,10,进制。,49,Click to edit company slogan.,The end,50,
展开阅读全文