您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 51单片机定时器计数器
第5章定时器/计数器及其应用5.1定时器的结构及工作原理5.2定时器的TMOD和TCON寄存器5.3定时器的工作方式◦5.3.1方式0◦5.3.2方式1◦5.3.3方式2◦5.3.4方式35.4定时器的编程和应用1基本知识定时器/计数器简介1.计数概念同学们选班长时,要投票,然后统计选票,常用的方法是画“正”,每个“正”号五划,代表五票,最后统计“正”号的个数即可,这就是计数。单片机有两个定时/计数器T0和T1,都可对外部输入脉冲计数。2.计数器的容量我们用一个瓶子盛水,水一滴滴地滴入瓶中,水滴不断落下,瓶的容量是有限的,过一段时间之后,水就会逐渐变满,再滴就会溢出。单片机中的计数器也一样,T0和T1这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。3.定时一个钟表,秒针走60次,就是1分钟,所以时间就转化为秒针走的次数,也就是计数的次数,可见,计数的次数和时间有关。只要计数脉冲的间隔相等,则计数值就代表了时间,即可实现定时。秒针每一次走动的时间是1秒,所以秒针走60次,就是60秒,即1分钟。因此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。4.溢出上面我们举的例子,水滴满瓶子后,再滴就会溢出,流到桌面上。单片机计数器溢出后将使得TF0变为“1”,一旦TF0由0变成1,就是产生了变化,就会引发事件,就会申请中断。5.任意定时及计数的方法计数器的容量是16位,也就是最大的计数值到65536,计数计到65536就会产生溢出。如果计数值要小于65536,怎么办呢?一个空的瓶子,要1万滴水滴进去才会满,我们在开始滴水之前就先放入一些水,就不需要10000滴了。比如先放入2000滴,再滴8000滴就可以把瓶子滴满。在单片机中,我们也采用类似的方法,称为“预置数”的方法,我们要计1000,那就先放进64536,再来1000个脉冲,不就到了65536了吗?定时也是如此。6.单片机定时器/计数器的结构5.1定时器的结构及工作原理组成:两个16位的定时器T0和T1,以及他们的工作方式寄存器TMOD和控制寄存器TCON等组成。内部通过总线与CPU相连。定时器T0和T1各由两个8位特殊功能寄存器TH0、TL0、TH1、TL1构成。工作方式寄存器TMOD:用于设置定时器的工作模式和工作方式;控制寄存器TCON:用于启动和停止定时器的计数,并控制定时器的状态;单片机复位时,两个寄存器的所有位都被清0。8两个可编程的定时器/计数器T1、T0。每个定时器内部结构实际上就是一个可编程的加法计数器,由编程来设置它工作在定时状态还是计数状态。两种工作模式:(1)计数器工作模式就是对外部事件进行计数。计数脉冲来自相应的外部输入引脚T0(P3.4)或T1(P3.5)。当输入信号发生由1至0的负跳变(下降沿)时,计数器(TH0,TL0或TH1,TL1)的值增1。计数的最高频率一般为振荡频率的1/24。Why?(2)定时器工作模式也是通过计数实现的。计数脉冲来自内部时钟脉冲,每个机器周期计数值增1,每个机器周期=12个振荡周期,因此计数频率为振荡频率的1/12。所以定时时间=计数值×机器周期。4种工作方式(方式0-方式3)。1C/T=10当控制信号定时器工作在定时方式;加1计数器对脉冲f进行计数,每来一个脉冲,计数器加1,直到计时器计满溢出;因为,即一个计数脉冲的周期就是一个机器周期;计数器计数的是机器周期脉冲个数。从而实现定时。当控制信号定时器工作在计数方式;加1计数器对来自输入引脚T0(P3.4)和T1(P3.5)的外信号脉冲进行计数,每来一个脉冲,计数器加1,直到计时器计满溢出;TxTHxTFxTLxTRxINTx定时计数0f0/12ff控制信号K“1”启动,计数器运行;“0”停止,计数器停止;定时器/计数器原理框图加1计数器0/12ff0/12ff控制信号K可以控制计数器的“启动”和“停止”,K=TRx(INTx+GATE)11TCON(88H)在每个机器周期的S5P2期间采样检测引脚输入电平。若前一个机器周期采样值为“1”,后一个机器周期采样值为“0”,则计数器加1。新的计数值在检测到输入引脚电平发生“1”到“0”的负跳变(下降沿)后,于下一个机器周期的S3P1期间装入计数器中。由于CPU需要两个机器周期来识别一个“1”到“0”的跳变信号,所以最高的计数频率为振荡周期的1/24。12P1P2S1振荡周期状态周期机器周期机器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P25.1定时器的结构及工作原理13定时/计数器对输入信号的要求1.外部计数脉冲的最高频率为系统振荡器频率的1/24,例如选用12MHz频率的晶体,则可输入500KHz的外部脉冲。2.输入信号的高、低电平至少要分别保持一个机器周期。如图所示,图中Tcy为机器周期。可编程定时器的工作方式、启动、停止、溢出标志、计数器等都是可编程的——通过设置寄存器TMOD,TCON,TH0,TL0,TH1和TL1实现。当设置了定时器的工作方式并启动定时器工作后,定时器就按被设定好的工作方式独立工作,不再占用CPU,只有在计数器计满溢出时才向CPU申请中断,占用CPU。由此可见,定时器是单片机中工作效率高且应用灵活的部件。145.2定时器的TMOD和TCON寄存器8051单片机定时器主要有几个特殊功能寄存器组成:TMOD,TCON,TH0,TL0,TH1,TL1。TMOD:设置定时器的工作方式;TCON:控制定时器的启动和停止;TH0和TL0:存放定时器T0的初值或计数结果;TH0存放高8位,TL0存放低8位;TH1和TL1:存放定时器T1的初值或计数结果;TH1存放高8位,TL1存放低8位;155.2.1工作方式控制寄存器TMOD168位分为两组,高4位控制T1,低4位控制T0。(1)GATE—门控位0:以TRX(X=0,1)来启动定时器/计数器运行。1:用外中断引脚(INT0*或INT1*)上的高电平和TRX来启动定时器/计数器运行。(4)TMOD无位地址,不能位寻址。(5)复位时,TMOD所有位均为“0”。(3)C/T*—计数器模式和定时器模式选择位0:定时器模式。1:计数器模式。(2)M1、M0—工作方式选择位M1M0工作方式00方式0,13位定时器/计数器。01方式1,16位定时器/计数器。10方式2,8位常数自动重新装载11方式3,仅适用于T0,5.2.2控制寄存器TCON低4位与外部中断有关,后面介绍。高4位的功能如下:(1)TF1、TF0—计数溢出标志位定时器T0或T1计数溢出时,由硬件自动将此位置“1”;TFx可以由程序查询,也是定时中断的请求源;(2)TR1、TR0—计数运行控制位TRx=1:启动定时器/计数器工作TRx=0:停止定时器/计数器工作185.2.3定时/计数器的初始化MCS-51单片机的定时器/计数器是可编程的,但在进行定时或计数之前要对程序进行初始化,具体步骤如下:(1)对TMOD赋值,以确定定时器的工作模式;(2)置定时/计数器初值,直接将初值写入寄存器的TH0、TL0或TH1、TL1;(3)根据需要,对IE置初值,开放定时器中断;(4)对TCON寄存器中的TR0或TR1置位,启动定时/计数器,置位以后,计数器即按规定的工作模式和初值进行计数或开始定时。195.2.3定时/计数器的初始化初值计算:设计数器的最大值为M,则置入的初值X为:计数方式:X=M-计数值定时方式:由(M-X)T=定时值,得X=M-定时值/TT为计数周期,是单片机的机器周期。(模式0:M为213,模式1:M为216,模式2和3:M为28)20例如:机器周期为1μs时,若工作在模式0,则最大定时值为:213×1μs=8.192ms若工作在模式1,则最大定时值为:216×1μs=65.536ms5.3定时器的工作方式MCS-51的定时器T0有4种工作方式:即:方式0,方式1,方式2,方式3。MCS-51的定时器T1有3种工作方式:即:方式0,方式1,方式2。215.3定时器的工作方式——方式05.2.1方式0M1、M0设置为00,为13位计数器,以T1为例,其框图如下:22计数脉冲输入加1计数器5.3定时器的工作方式——方式0TH1D12D11D10D9D8D7D6D5TL1×××D4D3D2D1D023在这种方式下,16位寄存器TH1和TL1只用13位,由TH1的8位和TL1的低5位组成。TL1的高3位不定。当TL1的低5位计数溢出时,向TH1进位。而TH1计数溢出时,则向中断标志位TF1进位(即硬件将TF1置1),并请求中断。可通过查询TF1是否置“1”或考察中断是否发生来判定定时器T1的操作完成与否。5.3定时器的工作方式——方式0当C/T=0时,为定时工作模式,开关接到振荡器的12分频器输出上,计数器对机器周期脉冲计数。其定时时间为:(213-初值)×振荡周期×12例如:若晶振频率为12MHz,则最长的定时时间为(213-0)×(1/12)×12us=8.191ms当C/T=1时,为计数工作模式,开关与外部引脚T1(P3.5)接通,计数器对来自外部引脚的输入脉冲计数。当外部信号发生负跳变时计数器加1。245.3定时器的工作方式——方式0GATE控制定时器Tx(T1或T0)的条件:(1)当GATE=0时,“或门”输出恒为1,“与门”的输出信号K由TRx决定(即此时K=TRx),定时器不受INTx输入电平的影响,由TRx直接控制定时器的启动和停止。TRx=1;计数启动;TRx=0;计数停止;(2)当GATE=1时,“与门”的输出信号K由INTx输入电平和TRx位的状态一起决定(即此时K=TRx·INTx),当且仅当TRx=1且INTx=1(高电平)时,计数启动;否则,计数停止。255.3定时器的工作方式——方式15.3.2方式1M1、M0=01,为16位的计数器,除位数外,其他与方式0相同。其定时时间为:(216-初值)×振荡周期×12例如:若晶振频率为12MHz,则最长的定时时间为(216-0)×(1/12)×12us=65.536ms265.3定时器的工作方式——方式25.3.3方式2M1、M0=10,为自动恢复初值的8位计数器,等效框图如下:TLx作为8位计数器,THx作为重置初值的缓冲器。27THx作为常数缓冲器,当TLx计数溢出时,在置“1”溢出标志TFx的同时,还自动的将THx中的初值送至TLx,使TLx从初值开始重新计数。定时器/计数器的方式2工作过程如图(x=0,1)。5.3定时器的工作方式——方式2优点:方式0和方式1用于循环重复定时或计数时,在每次计数器挤满溢出后,计数器复0。若要进行新一轮的计数,就得重新装入计数初值。这样一来不仅造成编程麻烦,而且影响定时精度。而方式2具有初值自动装入的功能,避免了这个缺点,可实现精确的定时。缺点:只有8位计数器,定时时间短、计数范围小。其定时时间为:(28-初值)×振荡周期×12若晶振频率为12MHz,则最长的定时时间为(28-0)×(1/12)×12us=0.256ms28方式2工作过程图(x=0,1)。5.3定时器的工作方式——方式35.3.4方式3只适用于定时器/计数器T0。T1不能工作在方式3。如果将T1置为方式3,则相当于TR1=0,停止计数(此时T1可用来作串行口波特率产生器)。1.工作方式3下的T0T0在方式3时被拆成两个独立的8位计数器:TH0和TL0。8位计数器TL0使用T0的状态控制位C/T*、GATE、TR0、INT0,它既可以工作在定时方式,也可以工作在计数方式。8位定时器TH0被固定为一个8位定时器(不能作外部计数模式),并使用定时器T1的状态控制位TR1,同时占用定时器T1的中断请求
本文标题:51单片机定时器计数器
链接地址:https://www.777doc.com/doc-7153621 .html