定时/计数器的初始化编程及应用

cathy的头像

定时/计数器的编程

1、根据要求选择方式,确定方式控制字,写入TMOD寄存器,配置好工作模式。

2、根据要求计算定时/计数器的计数值,在求得计数初值,写入初始化寄存器 。

3、根据需求,开放定时/计数器中断选项。

4、设置 TCON,通过 TR0 置 1 来让定时器开始计数。

5、等待定时时间到,如果查询处理编写查询程序判断溢出标志,溢出标志等于1,如果中断方式处理,编写中断服务程序。

计算如何用定时器定时时间

我们的晶振(系统时钟)是 11.0592M,时钟周期就是 1/11059200,机器周期是 12/11059200,假如要定时 20ms,就是 0.02 秒,要经过x 个机器周期得到 0.02 秒,我们来算一下x*12/11059200=0.02,得到 x= 18432。16 位定时器的溢出值是 65536(因 65535 再加 1 才是溢出),于是我们就可以这样操作,先给 TH0 和 TL0一个初始值,让它们经过 18432 个机器周期后刚好达到 65536,也就是溢出,溢出后可以通过检测 TF0 的值得知,就刚好是 0.02 秒。那么初值 y = 65536 - 18432 = 47104,转成 16 进制就是 0xB800,也就是 TH0 = 0xB8,TL0 = 0x00。

使用16位定时/计数器

定时方式

“定时/计数器的初始化编程及应用"

“定时/计数器的初始化编程及应用"

计数方式

“定时/计数器的初始化编程及应用"

“定时/计数器的初始化编程及应用"

实例1 设单片机的fosc=12MHz,采用T1定时方式1在P2.0脚上输出周期为2ms的方波。

“定时/计数器的初始化编程及应用"

“定时/计数器的初始化编程及应用"

“定时/计数器的初始化编程及应用"

“定时/计数器的初始化编程及应用"

“定时/计数器的初始化编程及应用"

“定时/计数器的初始化编程及应用"

“定时/计数器的初始化编程及应用"

实例2 采用T0定时方式2在P2.0口输出周期为0.5ms的方波(设fosc=12MHz)

方式2,采用8位计数器,TLx。可自动重装载计数初值(TLx溢出后, THx→TLx);没有装载计数初值的延误,方式2定时精度相对较高。

“定时/计数器的初始化编程及应用"

“定时/计数器的初始化编程及应用"

版权声明:本文为CSDN博主「imxlw00」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/imxlw00/article/details/88029372
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。