51单片机定时器(二)

书接上回,下面是定时器的其他工作方式。

一、工作方式1:(还是拿t0做说明)

定时/ 计数器的工作方式1自己经验是用的比较多的,它的结构图如下:

 

 

 

TH0的八位和TL0的八位构成一个16位定时/计数器,可以定时时间最长

   在工作方式1下,计数器的计数值范围是:

          1—65536(216

    当为定时工作方式1时,定时时间的计算公式为:

         (216—计数初值)╳晶振周期╳12

    或   (216—计数初值)╳机器周期

    其时间单位与晶振周期或机器周期相同。

    如果单片机的晶振选为6.000MHz,则最小定时时间为:

        [213—(216—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us)

        (216—0)╳1/6╳10-6╳12=131072╳10-6(s)=131072(us)。

工作方式1的使用,和方式0完全一样,不必赘言。

二、工作方式2

工作方式2的结构图如下:

 

 

 从图中可以看出来,计数寄存器变成了一个——TL0,工作方式2下多了一个重装载寄存器,也就是原来的TH0。

        在工作方式2下,如果TL0中的数据溢出,那么原先存储在TH0中的数据就会自动的装载到TL0中去,这是由单片机的硬件实现的,这样我们就不用在手动给定时器赋初值,而且硬件重装载不会耽误时间,所以工作方式2的计时是最准确的。但是就是这样一来的计数结构只有8位,计数值有限,最大只能到255。所以这种工作方式很适合于那些重复计数的应用场合。例如我们可以通过这样的计数方式产生中断,从而产生一个固定频率的脉冲。也可以当作串行数据通信的波特率发送器使用。

        工作方式2下的其他使用和工作方式0,1相同。

三、工作方式3

之前的3种工作方式中,定时器t0和t1的工作方式完全相同,而在工作方式3中终于有了个性的发挥不在相同了。

下面是工作方式3情况下t0的结构图。

 

 


可以看出,t0被分成了2个定时器,每个八位,定时/计数器0的TL0拆成的定时器和之前方式0,1一样,不过TH0拆成的就“因霸”了,它把原先定时器1的溢出标志位给占用了,而且还不受GATE门控的控制,这样以来,如果定时器0的TH0构成的8位定时器在使用,定定时器1就憋屈了,没有溢出位使用。当然定时器0也不能做计数器使用。那定时器1怎么办呢?

如果不使用定时器0,定时器1还可以“做人”,如果使用,拿它就放弃了,不要工作方式3了!反正也就是做之前工作放松做的活,在这种情况下,定时/计数器1通常作为串行口的波特率发生器使用,以确定串行通信的速率,因为已没有TF1被定时/计数器0借用了,只能把计数溢出直接送给串行口。当作波特率发生器使用时,只需设置好工作方式,即可自动运行。如要停止它的工作,需送入一个把它设置为方式3的方式控制字即可,这是因为定时/计数器本身就不能工作在方式3,如硬把它设置为方式3,自然会停止工作。

 

posted @   勇敢蘑菇  阅读(1237)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示