标题:
单片机定时器初始化时,计算初值并将其写入TH0,TL0(用的是定时器0)到底是什么意...
[打印本页]
作者:
pyc
时间:
2018-7-19 14:36
标题:
单片机定时器初始化时,计算初值并将其写入TH0,TL0(用的是定时器0)到底是什么意...
定时器初始化时,计算初值并将其写入TH0,TL0(用的是定时器0)到底是什么意思?如何计算?TH0,TL0又指什么?
作者:
angmall
时间:
2018-7-20 06:32
对定时器T0来说是分成两个寄存器:TH0为高八位,TL0为低八位,组成了16位的定时器,当低位TL0计满就向高位TH0移一个数,然后清零。
http://www.51hei.com/bbs/dpj-103111-1.html
先学理论,打基础,否则,问题多多,事倍功半。
作者:
HC6800-ES-V2.0
时间:
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位自动重装定时器。
我这个说明也许不够细,你要再找找相关资料和书看看。没基础是不能走下去的哦。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1