《定时计数器.ppt》由会员分享,可在线阅读,更多相关《定时计数器.ppt(28页珍藏版)》请在三一办公上搜索。
1、单片机原理与接口应用,8051定时/计数器,华中科技大学光电子工程系,MCS51,一、8051定时/计数器概述,8051单片机片内有二个十六位定时器计数器:定时器0(T0)和定时器1(T1)。都有定时或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。2个16位定时器实际上都是16位加1计数器。T0由2个8位持殊功能寄存器TH0和TL0构成,T1由TH1和TL1构成。每个定时器都可由软件设置为定时工作方式或计数工作方式。这些功能都由特殊功能寄存器TMOD设置和TCON所控制。,1.定时工作方式,设置为定时工作方式时,定时器计数的脉冲是由8051片内振荡器输出经12分频后产生的。
2、每个机器周期使定时器(T0或T1)的数值加1直至计计数满产生溢出。如:当8051采用12MHz晶体时,每个机器周期为1s,计数额率为1MHz。,2.计数工作方式,设置为计数工作方式时,通过引脚T0(P34)和T1(P35)对外部脉冲信号计数。当输入脉冲信号产生由1至0的下降沿时,定时器的值加1,在每个机器周期的S5P2期间采样T0和T1的输入电平。若前一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的数值装入计数器。检测一个1至0的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一。,输入脉冲信号的基本要求,虽然对输入信号的占空比无特殊要
3、求,但为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。,不管是定时工作方式还是计数方式,定时器T0或T1在对内部时钟或对外部事件计数时,不占用CPU的时间,除非定时器计数器溢出,才可能中断CPU的当前操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。除了可以选择定时器或计数器工作方式外,每个定时器计数器还有四种工作模式,也就是每个定时器可构成四种电路结构模式。其中,模式0一模式2对T0和T1是一样的,模式3对两者是不同的。,二、定时计数器的控制字,定时器共有两个控制字:定时器控制寄存器TCON(88H)定时器工作模式寄存器TMOD(89H)由软件写入
4、TMOD和TCON两个八位寄存器,用来设置T0或T1的工作模式和控制功能。定时器控制寄存器TCON除可字节寻址外,各位还可位寻址当8051系统复位时两个寄存器都被清0。,1.工作模式寄存器TMOD(89H),TMOD用于控制T0和T1的操作模式。其各位的定义格式如下:定时器T1 定时器T0,1.1 M1 M0 工作模式选择位 共有四种工作模式,1.2 C/T 计数器方式定时器方式选择位,C/T0,设置为定时方式。定时器计数 805l片内脉冲,亦即对机器周期计数。C/T1,设置为计数方式,计数器的输入是来自T0(P34)或Tl(P3.5)端的外部脉冲。,1.3 GATE 门控位,GATE0时,只
5、要用软件使TR0(或TRl)置1就启动了定时器,而不管INT0(或INT1)的电平是高还是低。GATEl时,只有当INT0(或INT1)引脚为高电平且由软件使TR0(或TRl)置1时,才能启动定时器工作。TMOD不能位寻址,只能用字节设置定时器工作方式;低半字节设定T0,高半字节设定T1。,2.控制寄存器TCON(88H),TCON 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H(88H)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TCON各位的作用如下:TF1:T1溢出标志位。当T1溢出时由硬件自动使中断触发器TF1置1,并向CPU申请中断。当CPU响应进
6、入中断服务程序后,TF1又被硬件自动清0。TF1也可以用软件清0。TF0:T0溢出标志位。其功能和操作情况如TF1。TR1:T1运行控制位。可由软件置1或清0来启动或关闭T1。指令(SETB TRl)使TR1位置1,定时器T1便开始计数。TR0:T0运行控制位。其功能及操作情况同TRl。8051复位时,TCON的所有位被清0。,三、定时器的四种工作模式,8051单片机的定时器计数器T0和T1可由软件对特殊功能寄存器TMOD中控制位 CT的设置,以选择定时功能或计数功能。对M1、M0位的设置,可选择四种工作模式,即模式0、模式1、模式2和模式3。在模式0、I和2时,T0与T1的工作模式相同;在模
7、式3时,两个定时器的工作模式不同。,1.模式0,模式0是选择定时器(T0或T1)高8位加低5位的个13位定时器计数器。在这种模式下,16寄存器(TH0和TL0)只用13位,其中TL0的高3位末用,其余位占整个13位的低5位,TH0占高8位。当TL0的低5位溢出时向TH0进位而TH0溢出时向中断标志位TF0进位(硬件置位TF0),并申请中断。T0溢出否可查询TF0是否置位,以产生T0中断。,T0在模式0时的逻辑电路结构,C/T0时,控制开关接通振荡器十二分频输出端,就是定时工作方式。其定时时间为:t(213一T0初值)振荡周期12 当C/T1时,控制开关使引脚T0(P34)与13位计数器相连,外
8、部计数脉冲由引脚T0P34输入,当外部信号电平发生“1”到“0”跳变时计数器加1,这时,T0成为外部事件计数器。这就是计数工作方式。,GATE0时,使或门输出A点电位为常“1”,或门被封锁,于是,引脚INT0输入信号无效。这时或门输出的常“1”打开与门,B点电位取决于TR0状态,于是由TR0一位就可控制计数开关K开启或关断T0。若软件使TR0置1,便接通计数开关K,启动T0在原值上加1计数,直至溢出。溢出时,13位寄存器清0,TF0置位,并申请中断,T0仍从0重新开始计数。若TR00。则关断计数开关K,停止计数。当GATE=1时,A点电位取决于(P3.4)引脚的输入电平。仅当(P3.4)输入高
9、电平时TR0l时,B点才是高电平,计数开关K闭合T0开始计数,当INT0由1变0时,T0停止计数。这一特性可以用来测量在(P3.4)端出现的正脉冲的宽度。,2模式1,该模式是一个16位定时器计数器。其结构与操作几乎与模式0完全相同,唯一的差别是:在模式1中,寄存器TH0和TL0是以全16位参与操作,用于定时工作方式时,定时时间为:t(216一T0初值)时钟周期12 用于计数工作方式时,计数长度为21665536(个外部脉冲),3.模式2,模式2把T0(或T1)配置成个可以自动重装载的8位定时器计数器。TL0计数溢出时,不仅使溢出中断标志位TF0置1,而且还自动把TH0中的内容重装载到TL0中。
10、这时16位的计数器被拆成两个8位;TL0用作8位计数器,TH0用以保持初值。,在程序初始化时,TL0和TH0由软件赋予相同的初值。旦TL0计数溢出,置位TF0,并将TH0中的初值再自动装入TL0,继续计数,循环重复。用于定时器工作方式时,其定时时间(TF0溢出周期)为;t(28TH0初值)振荡周期12用于计数器工作方式时,最大计数长度(TH0初值0)为:28256(个外部脉冲)。这种工作方式可省去用户软件中重装常数的程序,并可产生相当精度的定时时间。特别适用作串行口波待率发生器。,4模式3,操作模式3对T0和T1是大不相同的。若将T0设置为模式3,TL0和TH0被分成为两个互相独立的8位计数器
11、。其中TL0用原T0的各控制位、引脚和中断源。即CT、GATE、TR0、TF0和T0(P34)引脚、(P32)引脚。TL0除仅用8位寄存器外,其功能和操作与模式0(13位计数器)、模式1(16位计数器)完全相同。TL0也可工作为定时器方式或计数器方式。TH0只可用作简单的内部定时功能,它占用了定时器T1的控制位TR1和T1的中断标志位TF1,其启动和关闭仅受TRl的控制。定时器T1无操作模式3状态。,四、定时器计数器的编程和应用,例1:假设利用定时器T0模式1产生一个50Hz的方波,由P10输出,采用12MHz时钟定时器,CPU不作其它工作。,定时器不作其它工作,因而可以采用查询的方式进行控制
12、。初值可由下式算得:(216一x)110-6(1/50)(1/2)得:x555360D8F0H。,程序如下:,MOVTMOD,#01H;定时器T0模式0SETBTR0;启动T0L0:MOVTH0,#0D8H;置初值 MOVTL0,#0F0H;L1:JNBTF0,L1;等待溢出CLRTF0;清标志CPLP1.0;取反SJMPL0,例2:测量在(P3.3)端出现的正脉冲的宽度,门控制位GATE使定时器计数器T1的启动计数受INT1的控制;当GATE为1,TR1为1时,只有INT1引脚输入高电平时,T1才允许计数,利用GATE的这个功能,可测试INT1引脚(P33)上正脉冲的宽度(机器周期数),原理:,程序如下:,MOV TMOD,#90H;定时器T1模式1、定时MOVTH1,#00H;设定初值MOVTL1,#00H;JBP3.3,$;等待INT1变低SETBTR1;启动T1JNBP3.3,$;等待INT1变高 JB P3.3,$;开始计数,等待变低 CLRTR1;停止计数,请看下一节,