找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:517466 发表于 2021-1-4 11:31 | 只看该作者
定时器的额工作过程是这样的:在设定初始值的基础上,每个计数周期,计数自动加一。当计数值达到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

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:451718 发表于 2021-1-4 11:40 | 只看该作者
知道计算原理就好了。 没必要纠结如何计算出来的。  就想现在很多时候,你在计算百位*百位运算的时候,都会掏出手机计算来按几下一样,而不是再用笔列个竖式去验算。  51单片机定时器的取值,也有专门的计算工具的。 目前我一直是用 stc-isp ,设好晶振频率,设好工作模式,代码都直接出来了。也不容易把高低位搞反。网上一搜就找到了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:232366 发表于 2021-1-4 11:46 | 只看该作者
suncat0504 发表于 2021-1-4 11:31
定时器的额工作过程是这样的:在设定初始值的基础上,每个计数周期,计数自动加一。当计数值达到0xFFFF时, ...

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

使用道具 举报

5#
ID:232366 发表于 2021-1-4 11:47 | 只看该作者
robinsonlin 发表于 2021-1-4 11:40
知道计算原理就好了。 没必要纠结如何计算出来的。  就想现在很多时候,你在计算百位*百位运算的时候,都会 ...

您说的是单片机烧写软件吧!!!!
回复

使用道具 举报

6#
ID:390416 发表于 2021-1-4 12:07 | 只看该作者

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

回复

使用道具 举报

7#
ID:232366 发表于 2021-1-4 16:34 来自手机 | 只看该作者
人人学会单片机 发表于 2021-1-4 12:07
这个就是定时器的工作原理图。看图操作
欢迎你们去观看《人人学会单片机》视频教程。B站和原子哥网站, ...

有点听不太懂有点深奥
回复

使用道具 举报

8#
ID:798201 发表于 2021-1-5 17:23 | 只看该作者
例如定时50MS(晶振用11.0592MHZ),初值计算方法:

12*(1÷11.0592)=1.085us


50ms=50000us
50000÷1.085=46083


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

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

9#
ID:232366 发表于 2021-1-9 09:56 | 只看该作者
zwf33 发表于 2021-1-5 17:23
例如定时50MS(晶振用11.0592MHZ),初值计算方法:

12*(1÷11.0592)=1.085us

非常感谢!
回复

使用道具 举报

10#
ID:232366 发表于 2021-1-9 09:57 | 只看该作者
问题已解决
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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