搜索
热搜: 博途 单片机 CAD
查看: 28|回复: 0

[原创帖] 51单片机定时器延时时间计算

[复制链接]

64

主题

69

帖子

926

积分

管理员

Rank: 9Rank: 9Rank: 9

GB

807

威望

16

热心值

2

精华

10

主题
64

违规

0

GKR 发表于 2019-8-1 12:57:33 |阅读模式
延时时间要根据晶振频率计算,不同板子可能有所不同。

时钟周期:
1/时钟源,在我现在这块板子上,如果晶振频率是11.0592M,也就是时钟周期是1/11059200秒

机器周期:
一般51单片机是12个时钟周期,也就是 12/11059200秒

单次定时最长时间:

如果是16位的计数器,16位最大值是65535,共可计数65536次。基本的常数一定要记住,还要记住8位最大值是255,共可计数256次,还要记住8位上每位代表的数值。
12 * 65536/11059200 = 0.0711s,也就是,71 ms内的定时可以单次定时就完成。如果定时时间超过71 ms,就要溢出循环了。

一次定时需要几次机器周期:
计算公式:定时秒数/机器周期
比如我要定时1秒, 1/(12/11059200)= 921600次,16位计数器最大可计数65536次,921600次早就溢出了。我们可以每次定时10 ms,循环100次就可以定时1秒了,1 s缩小100百倍就是10 ms, 也就是每次需要计数9216次。

确实计数器初始值:
定时10ms时,如果计数器从0开始计数,我们就不知道什么时候到了9216次。所以应该计数了9216次,16位计数器最多计数95536次,然后就溢出,一溢出TCON的TF位就会置1,我们只要经常检测TF位就可以知道什么时候完成10ms的定时了。
计算公式:计数器初始值=最大计数次数 - 需要计数次数
如果定时10 ms,计数器的初始值就是 65536 - 9216

计算计数器的高位和低位:

16位的计数器,也就是两个8位组成,8位的最大计数次数是256。所以:
计数器高位TH = 初始值/256
计数器低位TL = 初始值%256

回复

使用道具 举报

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

本版积分规则

免责声明:
工控人论坛(gongkong.ren)所发布的一切破解补丁、注册机和注册信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@Zwying.Com

快速回复 返回列表 搜索

QQ|Archiver|手机版|小黑屋|工控人 ( 京ICP备17025554号-4 )|网站地图

GMT+8, 2019-8-24 05:59 , Processed in 0.046072 second(s), 6 queries , Redis On.

本站由 Discuz! X3.4 强力驱动

© 2019 GongKongRen Inc.

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