定时器/计数器的工作方式是什么?
扫描二维码
随时随地手机看文章
定时器/计数器有 4 种工作方式 ,由 TMOD 设置,并由 TCON 控制。TMOD 和 TCON 都属于特殊功能寄存器。
1. 定时器/计数器的方式寄存器 TMOD
TMOD 的地址是 89H ,它不能位寻址 ,它里面的内容被称为方式字,设置时一次写入,其各位的定义如图 6.2 所示。高 4 位用于定时器 T1 ,低 4 位用于定时器 T0 。
下面介绍 TMOD 各位功能。
1) M1M0 工作方式控制位
两位可组合成 4 种编码,分别对应 4 种工作方式,见表 6.1 所示。
2) C/T珚 定时器方式或计数器方式选择位
当 C/T珚 =1 时,为计数器方式;当 C/T珚 = 0 时,为定时器方式。
3) GATE 定时器/计数器运行门控标志位
当 GATE=1 时,只有 INT0(或 INT1) 引脚为高电平且 TR0(或 TR1) 置 1 时,相应的
定时器/计数器才被选通工作 ,这时可用于测量在 INTx 端出现的正脉冲的宽度 。若GATE=0 ,则只要 TR0 (或 TR1) 置 1 ,定时器/计数器就被选通,而不管 INT0(或 INT1) 的电平是高还是低。
2.定时器/计数器控制寄存器 TCON
特殊功能寄存器 TCON 用于控制定时器的操作及对定时器中断的控制。
TF0 、TF1 分别是定时器/计数器 T0 、T1 的溢出标志位,加法计数器计满溢出时置 1,申请中断,在中断响应后自动复 0。TF 产生的中断申请是否被接受,还需要由中断是否开放来决定。
TR1、TR0 分别是定时器/计数器 T1 、T0 的运行控制位,通过软件置 1 后,定时器/计数器才开始工作,在系统复位时被清 0。
工作方式
定时器/计数器的工作方式有 4 种,由 TMOD 中的 M1 和 M0 位选择,工作方式不同,计数长度(即最大值 M)和计数方式也不同。
方式 0:
当 M1M0 设置为 00 时,定时器选定为方式 0 工作。在这种方式下,16 位寄存器只用了 13 位,加法计数器由 TL 的低 5 位和 TH 的高 8 位组成,而 TL 的高 3 位弃之不用。工作方式 0 的逻辑图如图 6.3 所示。
当 GATE=0 时,只要 TCON 中的 TR0 为 1 ,TL0 及 TH0 组成的 13 位计数器就开 始计数 ;当 GATE=1 时,此时仅 TR0=1 仍不能使计数器计数,还需要 INT0引脚为高电 平才能使计数器工作 。当 GATE=1 和 TR0=1 时,TH0+TL0 是否计数取决于 INT0引脚的信号,当 INT0由低电平变为高电平时,开始计数;当 INT0由高电平变为低电平时,停止计数,这样就可以用来测量在 INT0 引脚上出现的正脉冲宽度。
图 6.3 方式 0(13 位计数器)
当 13 位计数器加 1 到全“1”以后,再加 1 就产生溢出,这时置 TCON 的 TF0 为 1 ,同 时把计数器全变为“0”。这种方式的计数长度 M 为 2 的 13 次方。由于加法计数器是 13 位的,故赋的初值也应是 13 位二进制数。但应注意,13 位初值的高 8 位赋值给 TH0 ,低 5 位数前面加 3 个 0 凑成 8 位之后赋给 TL0 。如要求计数值 N 为 1000 ,则初值 X 为
X=M-1000=8192-1000=7192=1110000011000B
其二进制数前 8 位是 11100000 ,后 5 位是 11000 ,因此赋初值时 TH=0E0H ,TL=18H 。
方式 1 :
方式 1 和方式 0 的工作相同,唯一的不同是加法计数器是由 16 位计数器组成的,高 8 位为 TH ,低 8 位为 TL 。其控制逻辑图如图 6.4 所示。给它赋初值时,16 位二进制数的高 8 位赋给 TH ,低 8 位赋给 TL,最大计数值 M 为 2 的 16 次方。
图 6.4 方式 1(16 位计数器)
方式 2:
方式 2 使定时器/计数器作为能自动重置初值连续工作 的 8 位计数器,TL 作 8 位加 法计数器,TH 用于重置初值的常数缓冲器,如图 6.5 所示。TH 由软件预置初值 ,当 TL 产生溢出时,一方面使溢出标志 TF 置 1 ,同时把 TH 中的 8 位数据重新装入 TL 中。
方式 0 、1 在计数器计满溢出后由软件重新赋初值,方式 2 就省去了这种麻烦,所以它常用于定时控制或串行口的波特率发生器。如希望每隔 250 μs 产生一个定时控制脉冲,若晶振频率为 12 MHz ,则此时计数初值 X= M-N= (256-250)/1=6 ,故 只要在 TH0,TL0 中预置初始值 6 ,将定时器/计时器 T0 设置成定时工作方式 2,则就能很方便地实现上述功能。
图 6.5 方式 2(初始常数自动重装载)
方式 3:
方式 3 对 T0 和 T1 是不相同的,若 T1 设置为方式 3 ,则停止工作(其效果与 TR1=0 相同), 所以方式 3 只适用于 T0。
在工作方式 3 ,定时器/计数器 T0 被分成两个独立的 8 位计数器 TL0 和 TH0 。如 图 6.6 所 示 。 由 图 可 见 ,TL0 利用 T0 本身的一些控制(C/T ,GATE ,TR0 ,INT0 和 TF0), 它的操作与方式 0 和方式 1 类似,只不过是一个 8 位计数器,而 TH0 借用 了 T1 的控制位 TR1 和 TF1 ,并规定只能用作定时器功能,对机器周期计数。在这种方式中,TH0 控制了 T1 的中断,T1 可以设置为方式 0~2 ,主要用于任何不需要中断控制的场合,或用作串行口的波特率发生器。
图 6.6 方式 3(两个 8 位独立计数器)
通常 ,当 T1 用作串行口波特率发生器时,T0 才定义为方式 3,以增加一个 8 位计数器。