第7章 定时(计数器)
2 .2
2.2.1
模式0(方式0)与应用(P151) 模式0(方式0)与应用(P151) 0(方式0)与应用
结构框图
12
2.2.2 说明 若把M1,M0设置为00,则定时器工作于方式0。方式0为13 位的计器,由TL0的低5位和TH0的8位组成。TL0低5位计数溢 出时向TH0进位,TH0计数溢出时,置标志位TF0为“1”,同 时申请定时器T0中断。进人中断后该位自动被硬件清0,也可 用软件查询TF0。方式0初值计算麻烦,较少采用。 2.2.3 初值计算 当C/T=0时,多路开关连接振荡器的12分频器输出,T0对 机器周期脉冲计数,这是定时工作方式。其定时时间为: 的初值) 定时时间 t = (213-T0的初值)×机器周期 的初值) 时钟周期× = (213-T0的初值)×时钟周期×12
2
89C51单片机中有两个计数器,分别称之为T0和T1,这两 个计数器分别是由两个8位的RAM单元组成的,即每个计数 器都是16位的计数器,最大的计数量是65536。 1.1.3 定时 89C51中的计数器除了可以作为计数之用外,还可以用作 时钟。时钟的用途当然很大,如打铃器,电视机定时关机, 空调定时开关等等,那么计数器是如何作为定时器来用的呢? 一个闹钟,我将它定时在1个小时后闹响,换言之,也可以 说是秒针走了(3600)次,所以时间就转化为秒针走的次数 3600 的,也就是计数的次数了。 可见,计数的次数和时间之间的确十分相关。那么它们的 关系是什么呢?那就是秒针每一次走动的时间正好是1秒。为 此,只要计数脉冲的间隔相等,则计数值就代表了时间的流 逝。 可见,单片机中的定时器和计数器是同一事物,只不过计 数器是记录的外界的事情,而定时器则是由单片机提供一个 非常稳定的计数源。
10
TF1也可用程序置位或清0。这就是说,定时/计数器T1的中 断请求还能用程序产生,这称为软件中断。 ● TR1(TCON.6)——定时/计数器T1运行控制位。 TR1置l时,定时/计数器T1开始工作;TR1置0时,定时/ 计数器T1停止工作。TR1由软件置1或清0。所以,用软件可控 制定时/计数器的起停。 ● TFO(TCON.5)——定时/计数器TO溢出中断请求标志位, 其功能与TF1相同。 ● TR0(TCON.4)——定时/计数器T0运行控制位,其功能 与TR1相同。
4
定时/ 1.1.5 定时/计数器的计算 如果计数器的容量为:16位,则最大的计数值到65535。 因此计数计到65536就会产生溢出。 但现实生活中,经常会要求不到65536时就要发生溢出, 如何解决?比如:一个空的盆要1万滴水滴进去才会满,我 在开始滴水之前就先放入一勺水,还需要1万滴嘛?—— 采 用预置数的方法,若要计数100,那我就先放进65436,再来 100个脉冲,不就到了65536了吗? 定时也是如此,每个脉冲是1微秒,则计满65536个脉冲 1 65536 需时65.536毫秒,但现在我只要10毫秒就可以了,怎么 办?——10个毫秒为10000个微秒,所以,只要在计数器里 面放进55536就可以了。 51单片机概述 1.1.6 51单片机概述 89C51单片机中有2个16位的定时器/计数器,一般用TO表 TO表 TO 示定时器/计数器0 T1表示定时器 计数器1 表示定时器/ 示定时器/计数器0,T1表示定时器/计数器1。定时器/计数 器有定时和计数两种功能,其内部实质上是加法计数器。 它们都有定时和事件计数的功能,可用于定时控制、延时、 对外部事件计数和检测等场合。
1
2 3 4
SETB TRx ;启动定时器 TLx, 8192-COUNT) MOV TLx, #[(8192-COUNT) MOD 32] 制 MOV THx, #[(8192-COUNT) / 32 ] THx, 8192-COUNT) JNB TFx ;检查TFx是否溢出 检查TFx是否溢出 TFx ;取余数转16进 取余数转16进 16 ;取商转16进制 取商转16进制 16
7
1.3.2 定时器的优点 不论是定时工作方式还是计数工作方式,定时器在对内部 时钟或外部脉冲计数时,都不占用CPU时间,启动定时器/计 数器后,它们就自动工作,除非定时器/计数器定时时间到或 计数次数到,才可能中断CPU的当前操作,请求CPU处理,处理 完成后马上回到断点处继续原来的程序,而不是像软件延时那 样,始终占用CPU的时间,不能做其他处理。
1 .5
【TCON】—定时控制寄存器 TCON】
TCON的低4位用于控制外部中断,在中断方面已作介绍, 不再重述。TCON的高4位用于控制定时/计数器TO、T1的运 行。其格式如下:
●
TF1(TCON.7)——定时/计数器T1溢出中断请求标志 位。 定时/计数器T1计数溢出时由硬件自动置TF1=1。若中 断开放,CPU响应中断后TF1由硬件自动清0。T1工作时, CPU可随时查询TF1的状态。所以,采用查询方式时,TF1 可用作查询测试标志。
3
定时/ 1.1.3 定时/计数器的实质 定时/计数器的实质是一个X位的寄存器。完成定时或者 计数功能时都必须向其中输入计数脉冲。 如果一个12MHz的晶振,它提供给计数器的脉冲时间 间隔是多少呢?——1us。可见,计数脉冲的间隔与晶振 有关,6MHz的晶振,计数脉冲的间隔是2微秒。 定时/ 1.1.4 定时/计数器的溢出 让我们再来看水滴的例子,当水不断落下,盆中的水不 断变满,最终有一滴水使得盆中的水满了。这时如果再有 一滴水落下,就会发生什么现象?——水会漫出来,用个 术语来讲就是“溢出”。 水溢出是流到地上,而计数器溢出后将使得TF0变为 “1”。至于TF0是什么,以后再谈。 一旦TF0由0变成1,就是产生了变化,产生了变化就会 引发事件,就象定时的时间一到,闹钟就会响一样。
15
2.2.6 应用实例 设f= 12 MHz,定时时间t=2ms,求定时器TO的初值及THO、 TL0的值。 ● 方法1: TO的初值=213-定时时间t×时钟频率/12=213-2×10-3 ×12×106/12=8192-2000=6192=1830H=11000001 10000B 将TO的初值低5位送TLO,高8位送THO,则THO=OC1H, TL0=10H。 ● 方法2: TL0 = (8192-2000)/32 取余数 = 16 = 10H。 TH0 = (8192-2000)/32 取商 = 193 = OC1H,
14
当GATE=1,且TR0=1时,或门、与门全部打开,定时 器/计数器打开或关断受外部INT0脚信号的影响,INT0引 脚输入高电平时,允许计数,否则停止计数。常用这种操 作方式来测量外部INT0引脚信号的脉冲宽度。 2.2.5 应用方法
序号 MOV MOV MOV MOV TMOD, TMOD, TMOD, TMOD, #xxxx #x000 #xxxx #x100 设定MODE0的步骤 的步骤 设定 x000B xxxxB x100B xxxxB ;T0设定计时工作方式(内部输入) T0设定计时工作方式(内部输入) 设定计时工作方式 T1设定计时工作方式 内部输入) 设定计时工作方式( ;T1设定计时工作方式(内部输入) T0设定计数工作方式 T0输入 设定计数工作方式( 输入) ;T0设定计数工作方式(T0输入) ;T1设定计数工作方式(T1部输入) T1设定计数工作方式(T1部输入) 设定计数工作方式 部输入
M1M0 00 01 10 11 工作方式 方式0 方式1 方式2 方式3 功能 13位定时/计数器 16位定时/计数器 8位自动重装载定时/计数器 TO:分成两个8位定时/计数器 T1:停止计数
注意:TMOD不能位寻址,只能用字节指令设置定时/计 注意:TMOD不能位寻址,只能用字节指令设置定时/ 不能位寻址 数器的工作方式。CPU复位时 TMOD所有位清 复位时, 所有位清0 数器的工作方式。CPU复位时,TMOD所有位清0。 9
13
当C/T=1时,多路开关与引脚TO(P3.4)相连,外部计数 脉冲由引脚TO(P3.4)输入,当外部信号电平发生“1”到“0” 的跳变时,计数器加1,这时,T0成为外部计数器。其计数值 为: 计数次数 = 213-T0的初值 2.2.4 门控位的影响 当GATE=0时,允许软件控制位TR0或TR1启动定时器。 GATE信号经过“非”门后,输出变为“1”。由于该信号和引 脚INT0输入信号同为“或”门输入,所以“或”门的输出也 变为“l”。作为计数开关的“与”门只由TR0来控制。若TR0 置1,接通控制开关,启动定时器T0工作,允许TO在初值上加 法计数,直到溢出。溢出时,TH0、TL0寄存器复位,TF0置1, 并可申请中断。若不重装T0的初值,则T0的初值以0开始计数。 若TRO=0,则关断控制开关,停止计数。
1 .4
【TMOD】—工作模式寄存器(P149) TMOD】 工作模式寄存器(P149)
TMOD寄存器用来设置TO和T1的工作模式、定时/计数方式 以及其他引脚信号对定时器/计数器的影响等,其字节地址为 89 H,格式如图所示。
8
●
●
●
GATE——门控位。 GATE=0,允许软件控制位TR0或TR1启动定时/计数器工作; GATE=1,允许外部中断引脚INT0或INT1启动定时/计数器工作。 C/T——定时/计数器方式选择。 C/T=0为定时器方式;C/T=1为计数器方式。 M1M0:工作方式选择位。 定时/计数器四种工作方式的选择由M1M0的值决定,见表所示
5
1 .2
51单片机TC的结构 51单片机TC的结构 单片机TC
单片机中与定时器有关的特殊功能寄存器有:TMOD、 TCON、TH0、TL0、TH1和TL1。 TMOD是模式控制寄存器,其中两位控制两个定时器/计 数器的工作方式。TH0、TL0、TH1、TL1是时间常数寄存器, 用来存放定时或计数的初值。TCON是控制寄存器,它控制定 时器/计数器的启动和关闭。定时器结构如图所示。
7 单片机的定时 计 单片机的定时/计 数器及应用 数器