找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15148|回复: 5
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:158886 发表于 2019-6-1 21:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁来讲一下,TH0 TL0的初值是怎么算出来的,定时的时间
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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
版权声明:本文为博主原创文章,转载请附上博文链接!
回复

使用道具 举报

板凳
ID:155507 发表于 2019-6-2 09:52 | 只看该作者
TH0 TL0的初值
先说说总值:

方式1为16位的定时器/计数器,对定时器T0来说是分成两个寄存器(可以形象地比作容器吧,请自行查阅):TH0为高八位,TL0为低八位,组成了16位的定时器,当低位TL0计满就向高位TH0移一个数,然后清零。
以12Mhz的晶振来说,机器周期是1us,计满TH0、TL0就需要2^16-1个数,再来一个数就“溢出”产生中断,一次溢出也就是65536us,约等于65.5ms,如果要定时50ms的话就要给他们装一个预装值(初值),总值-需要值=预装值,
也就是65536-50000=15536,预装后,定时器从预装值开始加值,定时器溢出中断后,会重新从预装值开始加值加到50ms就再产生中断,从而达到了定时的目的。如果要定时1s就可以让定时器中断1000ms/50ms=20次。
另外一点,TH0和TL0中应该装入的总数是15536,然后把15536对256求模:15536/256=60装入TH0中,把15536对256求余:15536%256=176装入TL0中,因为这是两个八位28*28的容器。
所以就有了
TH0=(65535-50000)/256
TL0=(65535-50000)%256



http://www.51hei.com/bbs/dpj-103111-1.html

http://www.51hei.com/bbs/dpj-105679-1.html


回复

使用道具 举报

地板
ID:123289 发表于 2019-6-4 10:16 | 只看该作者
很简单:
定时器就是个加法器,每输入一个CLK脉冲它的T0就+1(T0由TH0和TL0合成)。
要点是:当T0=1111111111111111(65535)后再来一个CLK,T0就变成0,且给出一个溢出信号。
就可以在得到这个溢出信号后,不让它=0,而重新给它一个起点数字!
所以你只要知道CLK取的是什么信号,这个信号的间隔时间是多少就OK了,余下的是小学数学问题了。
CLK可以取晶振频率、可以取晶振分频后的频率,可以取外部分IO上的脉冲,很灵活。这就看你如何设置选择了。
你要学会看手册,这些手册上都有。
回复

使用道具 举报

5#
ID:554573 发表于 2019-6-4 12:32 | 只看该作者
如果觉得计算麻烦可以网上搜初值计算器,有小程序的
回复

使用道具 举报

6#
ID:158886 发表于 2019-6-4 23:04 | 只看该作者
数学逻辑不好,有点懵,,2楼的3楼讲的都不错,看了之后明白了一点,总数减定时,的差,用16进制表示,再给TH TL,晶振不一样是不是值也不一样!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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