找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14742|回复: 5
收起左侧

单片机TH0 TL0的初值是怎么算的?定时的时间

[复制链接]
ID:94031 发表于 2019-6-2 09:18 | 显示全部楼层
以晶振12MHZ为例:
可以得到:
TMOD=0x01;
TL0=0xb0;
TH0=0x3c;

至于怎么来的请看:
12M晶振每秒可产生1M个机器周期,1M个机器周期就是1000000个机器周期。一个机器周期为1us, 50ms就需要50000个机器周期,定时器在方式1工作,为16位,最大值为65536,所以需设初值为65536-50000=15536;
15536转化为16进制得3cb0;故高位TH0=0x3c;TL0=0xb0;

不同频率晶振产生的机器周期不一样:
公式为:机器周期=晶振频率/12。。。这是在该晶振频率下每秒产生多少M机器周期。

比如当晶振频率为11.0592M的晶振。则每秒可产生机器周期为11.0592/12=0.9216M的机器周期,也就是921600个机器周期。50ms等于0.05秒,所以需要921600*0.05=46080个机器周期;定时器在方式1工作,为16位,最大值为65536,所以需设初值为65536-46080=19456;转为16进制为(4c00),所以高位TH0=0x4c; TL0=0x00;
---------------------
作者:92年程序员
来源:CSDN
原文:https://blog.csdn.net/qq_39790474/article/details/85034038
版权声明:本文为博主原创文章,转载请附上博文链接!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表