52单片机小白求助关于定时器初值求模和取余

52单片机小白求助关于定时器初值求模和取余,想问问坛友们单片机定时器工作方式1  设定为16位计数 TH0和TL0装初值 例如定时50MS: TH0=(6553…

52单片机小白求助关于定时器初值求模和取余,想问问坛友们单片机定时器工作方式1  设定为16位计数
TH0和TL0装初值
例如定时50MS:
TH0=(65536-50000=15536)/256;  
TL0=(65536-50000=15536)%256;
结果查质料得知是对TH0初值进行求模和对TL0初值进行求余可是始终不得解
这过程是怎么计算啊?知道的坛友能不能告知一下呢?
比如以实例举个例子呢!!!   跪谢了!!!

,定时器的额工作过程是这样的:在设定初始值的基础上,每个计数周期,计数自动加一。当计数值达到0xFFFF时,下一个脉冲到来的时候,数据达到65536,就会溢出,从而产生中断。所以说这个初始值决定了产生中断所需要花费的时间。
对16位计数器模式,TH0和TL0两个存储器构成一个16位,TH0存储高八位,TL0存储低八位。也就是说,初始值=TH0 * 256 + TL0
如果设置某个初始值,使定时器再接收到50000个计数脉冲后(对12M晶振,时钟周期为1微秒,50000个时钟周期,就是50ms),产生溢出并中断的话,因为中断溢出的数值是65536(对无符号数据,两字节数据的最大值是65536),那么初始值就应该是65536-50000=15536这个数据,也就是15536=TH0 * 256 + TL0,那么以下计算方式就是确定TH0和TL0应该设置的初始数据。
TH0=15536/256=60;  
TL0=15536%256=176;
验算方式很简单:TH0*256+TL0=60*256+176=15536,知道计算原理就好了。 没必要纠结如何计算出来的。  就想现在很多时候,你在计算百位*百位运算的时候,都会掏出手机计算来按几下一样,而不是再用笔列个竖式去验算。  51单片机定时器的取值,也有专门的计算工具的。 目前我一直是用 stc-isp ,设好晶振频率,设好工作模式,代码都直接出来了。也不容易把高低位搞反。网上一搜就找到了。,

suncat0504 发表于 2021-1-4 11:31

定时器的额工作过程是这样的:在设定初始值的基础上,每个计数周期,计数自动加一。当计数值达到0xFFFF时, …

真的是太感谢楼主一语道破困惑我好几天的问题终于解决!!!!!,

robinsonlin 发表于 2021-1-4 11:40

知道计算原理就好了。 没必要纠结如何计算出来的。  就想现在很多时候,你在计算百位*百位运算的时候,都会 …

您说的是单片机烧写软件吧!!!!,
52单片机小白求助关于定时器初值求模和取余插图


这个就是定时器的工作原理图。看图操作
欢迎你们去观看《人人学会单片机》视频教程。B站和原子哥网站,我们都有播放的。

,

人人学会单片机 发表于 2021-1-4 12:07


这个就是定时器的工作原理图。看图操作
欢迎你们去观看《人人学会单片机》视频教程。B站和原子哥网站, …

有点听不太懂有点深奥,例如定时50MS(晶振用11.0592MHZ),初值计算方法:

12*(1÷11.0592)=1.085us

50ms=50000us
50000÷1.085=46083

TH0=(65536-46083)/256;  
TL0=(65536-46083)%256;,

zwf33 发表于 2021-1-5 17:23

例如定时50MS(晶振用11.0592MHZ),初值计算方法:

12*(1÷11.0592)=1.085us

非常感谢!,问题已解决

作者: soufei

为您推荐


Fatal error: Can't use function return value in write context in /www/wwwroot/www.qianrushi.com.cn/wp-content/themes/news/footer.php on line 115