定时计数器例解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定时/计数器应用
1、定时/计数器初始化
过程:
①根据要求给方式寄存器TMOD送一个方式控制字,以设置定时器响应的工作方式。
②根据需要给C/T选送初值以确定需要的定时时间或计数的初值。
③根据需要给中断允许寄存器IE送中断控制字,以开放相应的中断和控制中断优先级。
④给TCON送命令字以启动或禁止C/T运行。
2、定时/计数器初值的计算
初值计算公式为
T(初值)= 2 N–定时时间/机器周期时间
其中N与工作方式有关。方式0时,N=13;方式1时N=16 ;方式2和3时,N=8 ,机器周期时间= 12 / f osc
例如:已知晶振为12MHz 时,求定时0.2ms时T0工作方式0、方式1、方式2、方式3时的定时初值。
(1)工作方式0
213-200/1=8192 – 200 = 7992= 1F38H
1F38 化成二进制:1F38 = 0001 1111 0011 1000 B 则低5位送TL0为18H,高8位送TH0 为F9H 。
(2)工作方式1
216-200/1 = 65536 – 200 = 65336 = FF38H
则TH0 = FFH ,TL0=38H。
(3)工作方式2
28– 200/1= 56 = 38H
TH0 = 38H ,TL0 = 38H
(4)工作方式3 同方式2
设单片机系统时钟频率为12MHz,要求在P0.0的LED定时50ms 循环灭亮。
1、硬件原理图:
2、程序设计
初始值计算:T0初值 = 216 – 50000 us / 1us = 65536 – 50000 = 15536 = 3CB0H 则TH0=3CH , TL0= B0H 。 简便方法,减初始值法 定义50 ms :
TH0 = -50000 / 256 //定时器T0的高4位赋值 TL0= - 50000 % 256 //定时器T0的低4位赋值 完整程序:
#include
void intserv1(void) interrupt 1 using 1 {
TH0 = -50000/256; TL0 = -50000% 256; LED =! LED;
R1 1K Ω
}