定时计数器例解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 sbit LED = P0^0; void main (void ) { P0 = 0xff; //初始化端口 EA = 1 ; //允许所有中断 ET0 =1 ; //允许T0 中断 TMOD = 0x01 //T0方式1 计时0.05s TH0 = -50000/256; TL0 = -50000% 256; TR0 = 1 ; //开中断,启动定时器 while(1) }

void intserv1(void) interrupt 1 using 1 {

TH0 = -50000/256; TL0 = -50000% 256; LED =! LED;

R1 1K Ω

}

相关文档
最新文档