宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商 www.MCU-Memory.com STC12C5410AD 系列 1T 8051 单片机中文指南
47
定时器应用举例
【例 1 】 定时 / 计数器编程,定时 / 计数器的应用编程主要需考虑:根据应用要求,通过程序初
始化,正确设置控制字,正确计算和计算计数初值,编写中断服务程序,适时设置控制位等。通常情况下,
设置顺序大致如下:
1)工作方式控制字(TMOD、T2CON)的设置;
2)计数初值的计算并装入 THx、TLx、RCAP2H、RCAP2L;
3)中断允许位 ETx、EA 的设置,使主机开放中断;
4) 启 / 停位 TRx 的设置等。
现以定时 / 计数器 0 或 1 为例作一简要介绍。
8051 系列单片机的定时器 / 计数器 0 或 1 是以不断加 1 进行计数的,即属加 1 计数器,因此,就不能
直接将实际的计数值作为计数初值送入计数寄存器 THx、TLx 中去,而必须将实际计数值以 28、213、216 为
模求补,以其补码作为计数初值设置 THx 和 TLx。
设:实际计数值为 X,计数器长度为 n(n=8、13、16),则应装入计数器 THx、TLx 中的计数初值为
2 n -x ,式中 2 n 为取模值。例如,工作方式 0 的计数长度为 13 位,则 n=13 ,以 2 13 为模,工作方式 1
的计数长度为 16 ,则 n=16 ,以 2 16 为模等等。所以,计数初值为(x )= 2 n-x 。
对于定时模式,是对机器周期计数,而机器周期与选定的主频密切相关。因此,需根据应用系统所选
定的主频计算出机器周期值。现以主频 6MHz 为例,则机器周期为:
一个机器周期 =
12
主振频率
=
12
6 × 106
μ s = 2 μ s
实际定时时间 Tc = x・Tp
式中 Tp 为机器周期,Tc 为所需定时时间,x 为所需计数次数。Tp 和 Tp 一般为已知值,在求出
Tp 后即可求得所需计数值 x,再将 x 求补码,即求得定时计数初值。即
(x)补 = 2n - x
例如,设定时时间 Tc = 5ms ,机器周期 TP = 2 μ s ,可求得定时计数次数
5ms
2 μ s
x =
= 2500 次
设选用工作方式 1,则 n=16,则应设置的定时时间计数初值为:(x)补 = 216 - x=65536-2500=63036,
还需将它分解成两个 8 位十六进制数,分别求得低 8 位为 3CH 装入 TLx,高 8 位为 F6H 装入 THx 中。
工作方式 0、1、2 的最大计数次数分别为 8192、65536 和 256。
对外部事件计数模式,只需根据实际计数次数求补后变换成两个十六进制码即可。
【例 2】 定时 / 计数器应用编程,设某应用系统,选择定时 / 计数器 1 定时模式,定时时间 Tc = 10ms,
主频频率为 12MHz,每 10ms 向主机请求处理。选定工作方式 1。计算得计数初值:低 8 位初值为 F0H,高 8
位初值为 D8H。
(1)初始化程序