首页 理论教育 知识准备:T0工作模式1的控制逻辑及初值计算示例

知识准备:T0工作模式1的控制逻辑及初值计算示例

时间:2023-06-30 理论教育 版权反馈
【摘要】:以下以T0工作模式1为例进行讲解,如图2.5.1所示。图2.5.1T0工作模式1的控制逻辑图图中,有一个单刀双掷开关,用于决定T0工作于定时器方式或计数器方式。表2.5.1T0、T1控制寄存器TCON注意:TMOD寄存器是一个不可以按位寻址的特殊功能寄存器,默认复位值为00H。将这个初值分别装在TH1和TL1中,初值分布如图2.5.2所示,即TH1=/256TL1=%256图2.5.2初值分布如果还是用定时器T1、工作方式1定时50ms,但是系统时钟改为6MHz,则初值如何计算呢?

知识准备:T0工作模式1的控制逻辑及初值计算示例

为完成本章相关实验,读者应具备以下相关知识。

1.T0、T1的定时功能和计数功能

AT89C52单片机内部有定时器/计数器T0、T1、T2(在此只介绍定时器/计数器T0、T1),它们都既可以作为定时器使用,又可以作为计数器使用。但不管作为定时器还是作为计数器,其本质都是加1计数器,只是计数信号来源不同。作为定时器使用时,计数信号来源来自单片机内部的机器周期,也就是每隔一个机器周期,计数器自动加1(如单片机的机器周期为1μs,计数5000次后,共消耗了5000×1μs=5ms,以此类推)。作为计数器使用时,计数信号来源来自外部信号,外部信号每发生一次改变,计数值自动加1(如T0作为计数器使用时,是对P3.4引脚送进来的外部脉冲信号进行计数)。

以下以T0工作模式1为例进行讲解,如图2.5.1所示。

图2.5.1 T0工作模式1的控制逻辑图

图中,有一个单刀双掷开关,用于决定T0工作于定时器方式或计数器方式。当时,开关接通定时功能(此时T0对机器周期进行计数);当=1时,开关接通计数功能(此时T0对由P3.4引脚送进来的外部脉冲信号进行计数)。T0计的数放在TH0和TL0中,在不同的工作模式下,TH0和TL0的位数不一样,能够存储数值的范围也不一样。这就好比不同的工作方式下提供有不同大小的水桶,能够装的水当然也不一样多,计满后自动将溢出标志位TF0置位,同时向CPU申请中断。

另外,图中还有一个开关“控制端”,用于控制定时/计数功能的启动和停止。这个开关由TR0、GATE、经一串组合逻辑电路(包括非门、或门、与门)控制。分析逻辑电路,我们不难得出下面的结论:

当GATE=0时,T0的启动和停止仅受TR0控制;当GATE=1时,T0的启动和停止由TR0和外部中断引脚上的电平状态共同控制。

2.与定时器/计数器T0、T1的相关寄存器

与定时器/计数器T0、T1的相关寄存器有控制寄存器TCON、工作模式寄存器TMOD,其内部结构如表2.5.1和表2.5.2所示,以及前述的中断优先级寄存器IP,中断允许寄存器IE。

注意:TCON寄存器是一个可以按位寻址的特殊功能寄存器。高四位负责定时器/计数器T0、T1的管理,默认复位值为00H。

表2.5.1 T0、T1控制寄存器TCON

注意:TMOD寄存器是一个不可以按位寻址的特殊功能寄存器,默认复位值为00H。

表2.5.2 T0、T1工作模式寄存器TMOD

3.定时器/计数器T0、T1的最大定时时间和实际定时时间(www.xing528.com)

最大定时时间=2n×机器周期

实际定时时间=(2n-定时初值)×机器周期

在此,n值取决于定时器/计数器的工作模式,如当工作于模式2时,n为8,工作于模式1时,n为16。

例如,使用定时器/计数器T1,选择工作模式1,工作于定时器方式,定时50ms,系统时钟为12MHz。

定时器T1在工作于模式1时为16位定时器/计数器,TH1和TL1各有8位。最大计数次数为216-1(从0000 0000 0000 0000B计到1111 1111 1111 1111B),如果要溢出,则计数次数为(216-1)+1=216。又系统时钟频率为12MHz,振荡周期为,机器周期T=12Tfoc=1μs,定时功能时计数器每一个机器周期计1次数,所以,最大定时时间=216次×1μs/次=216μs=65536 μs。

如果要定时50ms,即50ms要溢出一次,因为实际定时时间50ms=50000μs,小于模式1最大定时时间65536μs,所以计数初值不再从0开始。代入实际定时时间计算公式50ms=(216-计数初值)×1μs,解出计数初值=65536-50000=15536=0011 1100 1011 0000b。将这个初值分别装在TH1和TL1中,初值分布如图2.5.2所示,即

TH1=(65536-50000)/256 TL1=(65536-50000)%256

图2.5.2 初值分布

如果还是用定时器T1、工作方式1定时50ms,但是系统时钟改为6MHz,则初值如何计算呢?

比较上一例题,系统时钟变了,机器周期也就随之变了。机器周期T=12Tfoc=2μs,代入实际定时时间计算公式有:50ms=(216-计数初值)×2μs,解出

TH1=(65536-25000)/256 TL1=(65536-25000)%256

4.定时器/计数器T0、T1的初始化步骤

因为定时器/计数器T0、T1和P3.4、P3.5引脚共用,不做特别设置时,这两个引脚为通用I/O口,因此,在使用定时器/计数器T0、T1前,应首先对其进行初始化编程。具体过程如下:

(1)设置TMOD寄存器,选择工作模式和工作方式;

(2)结合实际定时时间(或计数次数)及相应的工作模式,设置定时器/计数器T0、T1的计数初值THx和TLx;

(3)设置中断允许控制寄存器IE,允许定时器/计数器T0、T1中断;

(4)设置T0、T1控制寄存器TCON,启动定时器。

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

我要反馈