当前位置: 代码迷 >> 单片机 >> 定时器赋值有关问题
  详细解决方案

定时器赋值有关问题

热度:5   发布时间:2016-04-28 15:15:21.0
定时器赋值问题
我请问下大神,给计数寄存器赋出值语句如下:
TH0=(65536-1000)/256;
TH0= (65536-1000)%256;
我想知道为什么要除256啊?
还请高手指教啊~~~~

------解决方案--------------------
一个除、一个模,都是给 TH0 赋值,LZ 是不是输入错误了?

TH0 是不是只有一个字节的长度呢,呵呵...
------解决方案--------------------

TH0=(65536-1000)/256;
TL0= (65536-1000)%256;

比较常用的将一个数按16位存放
例如,我要将1000写如TH0(高8位),TL0(低8位)
就是TH0=(1000>>8);TL0=(1000&0x00ff);
等同于TH0=1000/256;TL0=1000%256
------解决方案--------------------
想起了微机原理的考试。。
------解决方案--------------------
T0是16位的定时器,最大计数2的16次方即65536,1000表示需要计数的个数,65536-1000表示定时器T0的初始值,该初始值存储在8位寄存器TH0、TL0中,2的8次方即256,(65536-1000)/256得到高8位的值,存储在TH0中, (65536-1000)%256得到低8位的值,存储在TL0中。


------解决方案--------------------
TH0和TL0都是字节表示的,最大值是255,故要用256做除法和模运算。
然后TH0和TL0合成一个字(双字节),计数到FFFFH就会溢出成0000H,并产生中断;这个时候必须再对TH0和TL0重新赋值,否则它们就会从0000H开始计数了。
  相关解决方案