找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机定时器初始化时,计算初值并将其写入TH0,TL0(用的是定时器0)到底是什么意...

[复制链接]
跳转到指定楼层
楼主
ID:372525 发表于 2018-7-19 14:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器初始化时,计算初值并将其写入TH0,TL0(用的是定时器0)到底是什么意思?如何计算?TH0,TL0又指什么?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 2018-7-20 06:32 | 只看该作者
对定时器T0来说是分成两个寄存器:TH0为高八位,TL0为低八位,组成了16位的定时器,当低位TL0计满就向高位TH0移一个数,然后清零。

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

先学理论,打基础,否则,问题多多,事倍功半。
回复

使用道具 举报

板凳
ID:164602 发表于 2018-7-20 09:35 | 只看该作者
你没有理解定时器的工作原理啊。
第一:定时器的计时原理——根据时钟的个数进行计数(简单来说就是数个数),而时钟的周期是由晶振确定的,有多少个时钟脉冲,就可以知道是多少时间。举例来说,常用晶振12M,51单片机12分频后,时钟就是1M,周期就是1us。如果你要定时10us,就要让定时器数10个脉冲。
第二:定时器中断的原理——就是溢出。你说的那两个初值寄存器,高低8位,一共16位,就是最大值65535,即0xFF,如果再加一,则会溢出,它们的值则回零,溢出的一位,就产生中断标志。
第三:结合上面两条知识,就可以算出原本应该在初值寄存器中的初值了——还是以上面讲的例子为例:需要定时10us,使用的是定时方式1,即16位定时器,要溢出产生中断,需要65536,但只计数10个脉冲,所以,初值就是65536-10=65526,换成十六进制,0xfff6。
第四:不同的工作方式,也有不同的计算,但都要有上面的基础知识。常用的就是16位定时器和8位自动重装定时器。

我这个说明也许不够细,你要再找找相关资料和书看看。没基础是不能走下去的哦。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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