[51单片机] 单片机延时? 110 咋来的 求大佬讲解

[复制链接]
 楼主| fpgalover 发表于 2019-9-27 11:26 | 显示全部楼层 |阅读模式
为什么单片机延时语句内层FOR语句中变量恒为110  如何计算的

按我想的1/11.0592MHZ*12*110怎么也达不到1ms啊
算出来是约等于0.1ms才对吧 咋就是1ms呢
ayb_ice 发表于 2019-9-27 13:13 | 显示全部楼层
谁説是1MS呢
这取决于太多因素,与内核有关,与编译器有关,与优化级别有关
看反汇编,算指令执行次数
tianxj01 发表于 2019-9-27 15:44 | 显示全部楼层
什么叫变量恒为110,你看的什么书?又是怎么理解的?
for语句,变量完全可以自己控制,根据所用芯片的指令效率,就可以确定出,一个for语句延时和变量的关系。而且这个变量,你完全可以根据自己的需要来确定。比如我算出来一个for语句的标准时间是12个时钟周期,而已知时钟周期=1uS,则一个循环时间为12uS,假如变量=100,则这个for循环时间=100*12=1.2mS。
用for循环延时,在无高频率中断情况下,还算比较准确,当在机器内部有高频率中断条件下,则误差会相当大,甚至是几倍关系都算正常,所以,这时候如果需要准确延时,则一般采用内部定时器来实现精确延时,比如9600波特率的软串口时钟,这个需要至少±2%的精度,则必须采用定时器来做。
hayden0 发表于 2019-10-2 23:30 | 显示全部楼层
取反io,直接示波器看着调,不然影响因素太多没法算准确。
提醒你一点,最好别用死循环延时,效率太低!
 楼主| fpgalover 发表于 2019-10-20 14:47 | 显示全部楼层
感谢各位问题已解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

25

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部