background image
宏晶科技: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 中去,而必须将实际计数值以 2
、2
13
、2
16
模求补,以其补码作为计数初值设置 THx 和 TLx。
设:实际计数值为 X,计数器长度为 n(n=8、13、16),则应装入计数器 THx、TLx 中的计数初值为
- x ,式中 2
为取模值。例如,工作方式 0 的计数长度为 1 3 位,则 n = 1 3 ,以 2
1 3
为模,工作方式 1
的计数长度为 1 6 ,则 n = 1 6 ,以 2
1 6
为模等等。所以,计数初值为(x )=   2
- x 。
对于定时模式,是对机器周期计数,而机器周期与选定的主频密切相关。因此,需根据应用系统所选
定的主频计算出机器周期值。现以主频 6MHz 为例,则机器周期为:
一个机器周期 =
12
主振频率
12
6 × 10
μ s = 2 μ s
实际定时时间 Tc = x・Tp
式中 T p 为机器周期,T c 为所需定时时间,x 为所需计数次数。T p 和 T p 一般为已知值,在求出
Tp 后即可求得所需计数值 x,再将 x 求补码,即求得定时计数初值。即
                      
(x)补 = 2
n 
- x
例如,设定时时间 T c   =   5 m s ,机器周期 T P   =   2 μ s ,可求得定时计数次数
5ms
2 μ s
x =
= 2500 次
设选用工作方式 1,则 n=16,则应设置的定时时间计数初值为:(x)补 = 2
16 
- 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)初始化程序