购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

7.3 定时器/计数器的控制寄存器与四种工作方式

7.3.1 定时器/计数器控制寄存器

TCON寄存器的功能主要是接收外部中断源(INT0、INT1)和定时器/计数器(T0、T1)送来的中断请求信号,并对定时器/计数器进行启动/停止控制 。TCON的字节地址是88H,它有8位,每位均可直接访问(即可位寻址)。TCON的字节地址、各位的位地址和名称功能如图7-4所示。

图7-4 TCON寄存器的字节地址、各位的位地址和名称功能

TCON寄存器的各位功能在前面已介绍过,这里仅对与定时器/计数器有关的位进行说明。

1)TF0位和TF1位, 分别为定时器/计数器0和定时器/计数器1的中断请求标志。当定时器/计数器工作产生溢出时,会将TF0或TF1位置“1”,表示定时器/计数器T0或T1有中断请求。

2)TR0位和TR1位, 分别为定时器/计数器0和定时器/计数器1的启动/停止位。在编写程序时,若将TR0或TR1设为“1”,那么T0或T1定时器/计数器开始工作;若设置为“0”,T0或T1定时器/计数器则会停止工作。

7.3.2 工作方式控制寄存器TMOD

TMOD寄存器的功能是控制定时器/计数器T0、T1的功能和工作方式 。TMOD寄存器的字节地址是89H,不能进行位操作。在上电(给单片机通电)复位时,TMOD寄存器的初始值为00H。TMOD的字节地址和各位名称功能如图7-5所示。

图7-5 TMOD的字节地址和各位名称功能

在TMOD寄存器中,高4位用来控制定时器/计数器T1,低4位用来控制定时器/计数器T0,两者对定时器/计数器的控制功能一样,下面以TMOD寄存器高4位为例进行说明。

1)GATE位:门控位,用来控制定时器/计数器的启动模式。当GATE=0时,只要TCON寄存器的TR1位置“1”,就可启动T1开始工作;当GATE=1时,除了需要将TCON寄存器的TR1位置“1”外,还要使 引脚为高电平,才能启动T1工作。

2) 位:定时、计数功能设置位。当 时,将定时器/计数器设置为定时器工作模式;当 时,将定时器/计数器设置为计数器工作方式。

3)M1、M0位:定时器/计数器工作方式设置位。M1、M0位取不同值,可以将定时器/计数器设置为不同的工作方式。TMOD寄存器高4位中的M1、M0用来控制T1的工作方式,低4位中的M1、M0用来控制T0的工作方式。M1、M0位不同取值与定时器/计数器工作方式的关系见表7-1。

表7-1 TMOD寄存器的M1、M0位值与定时器/计数器工作方式

7.3.3 定时器/计数器的工作方式

在TMOD寄存器的M1、M0位的控制下,定时器/计数器可以工作在四种不同的方式下,不同的工作方式适用于不同的场合。

1.方式0

当M1=0、M0=0时,定时器/计数器工作在方式0,它被设成13位计数器。在方式0时,定时器/计数器由TH、TL两个8位计数器组成,使用TH的8位和TL的低5位。

(1)定时器/计数器工作在方式0时的电路结构与工作原理

定时器/计数器T0、T1工作在方式0时的电路结构、工作原理相同。以T0为例,将TMOD寄存器的低4位中的M1、M0位均设为“0”,T0工作在方式0。定时器/计数器T0工作在方式0时的电路结构如图7-6所示。

当T0工作在方式0时,T0是一个13位计数器。 位通过控制开关S1来选择计数器的计数脉冲来源。当 时,计数脉冲来自单片机内部振荡器(经12分频);当 时,计数脉冲来自单片机T0引脚(P3.4端口)。

GATE位控制T0的启动方式。GATE位与 引脚、TR0位一起经逻辑电路后形成CON电平,再由CON电平来控制开关S2的通断。当CON=1时,S2闭合,T0工作;当CON=0时,S2断开,T0停止工作(S2断开后无信号送给T0)。GATE、 和TR0形成CON电平的表达式为

图7-6 定时器/计数器T0工作在方式0时的电路结构

从上式可知,若GATE=0,则 ,CON=TR0,即当GATE=0时,CON的值与TR0的值一致,TR0可直接控制T0的启动/停止;若GATE=1,则 ,即CON的值由TR0、 两个值决定,其中TR0的值由编程来控制(软件控制),而 的值由外部 引脚的电平控制,只有当它们的值都为“1”时,CON的值才为“1”,定时器/计数器T0才能启动。

(2)定时器/计数器初值的计算

若定时器/计数器工作在方式0,当其与外部输入端(T0引脚)连接时,可以用作13位计数器;当与内部振荡器连接时,可以用作定时器。

1)计数初值的计算。当定时器/计数器用作13位计数器时,它的最大计数值为8192(2 13 ),当T0引脚输入8192个脉冲时,计数器就会产生溢出而发出中断请求信号。如希望不需要输入8192个脉冲,计数器就能产生溢出,可以给计数器预先设置数值,这个预先设置的数值称为计数初值。 在方式0时,定时器/计数器的计数初值可用下式计算

计数初值=2 13 -计数值

比如希望输入1000个脉冲计数器就能产生溢出,计数器的计数初值应设置为7192(8192-1000)。

2)定时初值的计算。当定时器/计数器用作定时器时,它对内部振荡器产生的脉冲(经12分频)进行计数,该脉冲的频率为 f osc /12,脉冲周期为12/ f osc ,定时器的最大定时时间为2 13 ·12/ f osc ,若振荡器的频率 f osc 为12MHz,定时器的最大定时时间为8192μs。如果不希望定时这么长,定时器就能产生溢出,可以给定时器预先设置数值,这个预先设置的数值称为定时初值。 在方式0时,定时器/计数器的定时初值可用下式计算

定时初值=2 13 -定时值=2 13 -tf osc /12

比如单片机时钟振荡器的频率为12MHz(即12×10 6 Hz),现要求定时1000μs(即1000×10 -6 s)就能产生溢出,定时器的定时初值应为

定时初值=2 13 -tf osc /12=8192-1000×10 -6 ×12×10 6 /12=7192

2.方式1

当M1=0、M0=1时,定时器/计数器工作在方式1,它为16位计数器 。除了计数位数不同外,定时器/计数器在方式1的电路结构与工作原理与方式0完全相同。定时器/计数器工作在方式1时的电路结构(以定时器/计数器T0为例)如图7-7所示。

定时器/计数器工作在方式1时的计数初值和定时初值的计算公式分别如下:

计数初值=2 16 -计数值

定时初值=2 16 -定时值=2 16 -tf osc /12

图7-7 定时器/计数器T0在方式1时的电路结构

3.方式2

定时器/计数器工作方式0和方式1时适合进行一次计数或定时,若要进行多次计数或定时,可让定时器/计数器工作在方式2。 当M1=1、M0=0时,定时器/计数器工作在方式2,它为8位自动重装计数器 。定时器/计数器工作在方式2时的电路结构(以定时器/计数器T0为例)如图7-8所示。

图7-8 定时器/计数器T0在方式2时的电路结构

工作在方式2时,16位定时器/计数器T0分成TH0、TL0两个8位计数器,其中TL0用来对脉冲计数,TH0用来存放计数器初值。在计数时,当TL0计数溢出时会将TCON寄存器的TF0位置“1”,同时也控制TH0重装开始,将TH0中的初值重新装入TL0中,然后TL0又开始在初值的基础上对输入脉冲进行计数。

定时器/计数器工作在方式2时的计数初值和定时初值的计算分别如下:

计数初值=2 8 -计数值

定时初值=2 8 -定时值=2 8 -tf osc /12

4.方式3

定时器/计数器T0有方式3,而T1没有(T1只有方式0~2)。当TMOD寄存器低4位中的M1=1、M0=1时,T0工作在方式3。在方式3时,T0用作计数器或定时器。

(1)T0工作在方式3时的电路结构与工作原理

在方式3时,定时器/计数器T0用作计数器或定时器,在该方式下T0的电路结构如图7-9所示。

在方式3时,T0被分成TL0、TH0两个独立的8位计数器,其中TL0受T0的全部控制位控制(即原本控制整个T0的各个控制位,在该方式下全部用来控制T0的TL0计数器),而TH0受T1的部分控制位(TCON的TR1位和TF1位)控制。

图7-9 T0工作在方式3时的电路结构

在方式3时,TL0既可用作8位计数器(对外部信号计数),也可用作8位定时器(对内部信号计数);TH0只能用作8位定时器,它的启动受TR1的控制(TCON的TR1位原本用来控制定时器/计数器T1)。当TR1=1时,TH0开始工作;当TR1=0时,TH0停止工作,当TH0计数产生溢出时会向TF1置位。

(2)T0工作在方式3时T1的电路结构与工作原理

当T0工作在方式3时,它占用了T1的一些控制位,此时T1还可以工作在方式0~2(可通过设置TMOD寄存器高4位中的M1、M0的值来设置),在这种情况下T1一般用作波特率发生器。当T0工作在方式3时,T1工作在方式1和方式2的电路结构如图7-10所示。

图7-10 T0工作在方式3时,T1工作在方式1和方式2的电路结构

图7-10a是T0在方式3时T1工作在方式1(或方式0)时的电路结构。在该方式下,T1是一个16位计数器,由于TR1控制位已被借用来控制T0的高8位计数器TH0,所以T1在该方式下无法停止,一直处于工作状态。另外,由于TF1位也借给了TH0,所以T1溢出后也不能对TF1进行置位产生中断请求信号,T1溢出的信号只能输出到串行通信接口,此方式下的T1为波特率发生器。

图7-10b是T0在方式3时T1工作在方式2时的电路结构。在该方式下,T1是一个8位自动重装计数器,除了具有自动重装载功能外,其他与方式1相同。 NwA1e3gjF6iJ/re4Ui9n9/Al3grv8MS0sOOoop+YVI80+pdTAzV35c0mSQJSE+u8

点击中间区域
呼出菜单
上一章
目录
下一章
×