首页 理论教育 51系列单片机定时/计数器的工作方式及控制技术

51系列单片机定时/计数器的工作方式及控制技术

时间:2023-11-24 理论教育 版权反馈
【摘要】:图7-3定时器0在方式1时的逻辑结构图由图可知,方式1构成一个16位定时/计数器,其结构与操作几乎完全与方式0相同,唯一差别是二者计数位数不同。图7-5定时器0在方式3时的逻辑结构图应注意:工作方式3仅使用于T0,T1无工作方式3。如果定时/计数器T0工作于方式3,那么定时/计数器T1的工作方式就不可避免地受到一定的限制,因为自己的一些控制位已被定时/计数器借用,只能工作在方式0、方式1或方式2下。

51系列单片机定时/计数器的工作方式及控制技术

由前述内容可知,通过对TMOD寄存器中M0、M1位进行设置,定时器可选择4种工作方式,下面逐一进行论述。

1.方式0

方式0构成一个13位定时/计数器。图7-2是定时器0在方式0时的逻辑电路结构,定时器1的结构和操作与定时器0完全相同。

图7-2 定时器0(或定时器1)在方式0时的逻辑电路结构图

由图可知:16位加法计数器(TH0和TL0)只用了13位。其中,TH0占高8位,TL0占低5位(只用低5位,高3位未用)。当TL0低5位溢出时自动向TH0进位,而TH0溢出时向中断位TF0进位(硬件自动置位),并申请中断。

时,多路开关连接12分频器输出,定时器0对机器周期计数,此时,定时器0为定时器。定时时间=(M-T0初值)×时钟周期×12=(213-T0初值)×时钟周期×12。

时,多路开关与T0(P3.4)相连,外部计数脉冲由T0脚输入,当外部信号电平发生由1到0的负跳变时,计数器加1,此时,定时器0为计数器。

当GATE=0时,或门被封锁,信号无效。或门输出为1,打开与门,TR0直接控制定时器0的启动和关闭。TR0=1,接通控制开关,定时器0从初值开始计数直至溢出。溢出时,计数器为0,TF0置位,并申请中断。如要循环计数,则定时器0需重置初值,且需用软件将TF0复位。

当GATE=1时,与门的输出由输入电平和TR0位的状态来确定。若TR0=1,则与门打开,外部信号电平通过引脚直接开启或关断定时器0,当为高电平时,允许计数,否则停止计数;若TR0=0,则与门被封锁,控制开关被关断,停止计数。

2.方式1

定时器工作于方式1时,其逻辑结构图如图7-3所示。

图7-3 定时器0(或定时器1)在方式1时的逻辑结构图

由图可知,方式1构成一个16位定时/计数器,其结构与操作几乎完全与方式0相同,唯一差别是二者计数位数不同。作定时器用时,其定时时间=(M-T0初值)×时钟周期×12=(216-T0初值)×时钟周期×12。(www.xing528.com)

3.方式2

定时/计数器工作于方式2时,其逻辑结构图如图7-4所示。

图7-4 定时器0(或定时器1)在方式2时的逻辑结构图

由图可知,方式2中,16位加法计数器的TH0和TL0具有不同功能,其中,TL0是8位计数器,TH0是重置初值的8位缓冲器

方式0和方式1用于循环计数,在每次计满溢出后,计数器都复0,要进行新一轮计数还需重置计数初值。这不仅导致编程麻烦,而且影响定时时间精度。方式2具有初值自动装入功能,避免了上述缺陷,适合用作较精确的定时脉冲信号发生器。其定时时间为(M-定时器0初值)×时钟周期×12=(28-定时器0初值)×时钟周期×12

方式2中16位加法计数器被分割为两个,TL0用作8位计数器,TH0用以保持初值。在程序初始化时,TL0和TH0由软件赋予相同的初值。一旦TL0计数溢出,TF0将被置位,同时,TH0中的初值装入TL0,从而进入新一轮计数,如此循环不止。

4.方式3

定时/计数器工作于方式3时,其逻辑结构图如图7-5所示。

图7-5 定时器0在方式3时的逻辑结构图

应注意:工作方式3仅使用于T0,T1无工作方式3。在这种方式下,T0被分解为两个独立的8位计数器TL0和TH0。其中,TL0占用原定时器T0的控制位、引脚和中断源,即GATA、TR0、TF0、P3.4(T0)引脚和引脚。除计数位数不同于工作方式0、工作方式1外,其功能、操作与工作方式0和1完全相同,可定时也可计数。TH0则占用定时器T1的控制位TF1和TR1,同时还占用了定时器T1的中断源,其启动和关闭只能受TR1控制。TH0只能对机器周期计数,因此,TH0只能用作简单的内部定时,不能对外部脉冲计数,是定时器T0附加的一个8位定时器。

如果定时/计数器T0工作于方式3,那么定时/计数器T1的工作方式就不可避免地受到一定的限制,因为自己的一些控制位已被定时/计数器借用,只能工作在方式0、方式1或方式2下。在这种情况下,定时/计数器T1通常作为串行口的波特率发生器使用,以确定串行通信的速率,因为TF1被定时/计数器0借用了,只能把计数溢出直接送给串行口。当作波特率发生器使用时,只需设置好工作方式,即可自动运行。如要停止它的工作,需送入一个把它设置为方式3的方式控制字即可,这是因为定时/计数器本身就不能工作在方式3,如硬把它设置为方式3,自然会停止工作。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈