[51单片机] 关于延时函数的精度

[复制链接]
1332|9
 楼主| 734664813 发表于 2015-2-12 15:34 | 显示全部楼层 |阅读模式
void delay()   //delay 5us
{ ;; }

如题,这个延时函数为什么能做到5us的延时?除了函数内部的两个空语句占用两个机器周期外,是不是还有延时函数的调用时间,这样两段时间加起来就将近5us?
mcu5i51 发表于 2015-2-12 17:10 | 显示全部楼层
很容易被优化掉,这样的程序少写
dirtwillfly 发表于 2015-2-12 22:35 | 显示全部楼层
这个函数的延时,和单片机的运行频率有很大关系
 楼主| 734664813 发表于 2015-2-13 08:26 | 显示全部楼层
dirtwillfly 发表于 2015-2-12 22:35
这个函数的延时,和单片机的运行频率有很大关系

前辈能不能给个例子解析下
Ryanhsiung 发表于 2015-2-13 08:55 | 显示全部楼层
看频率,还要看汇编代码 确定指令数
dirtwillfly 发表于 2015-2-13 09:15 | 显示全部楼层
734664813 发表于 2015-2-13 08:26
前辈能不能给个例子解析下

不用例子。
你分别用12MHz和6MHz的晶振,他的执行时间就会差一倍
鹏鹏0830 发表于 2015-2-13 10:40 | 显示全部楼层
你可以用示波器看看,也未必是精准的5us吧
 楼主| 734664813 发表于 2015-2-13 11:55 | 显示全部楼层
Ryanhsiung 发表于 2015-2-13 08:55
看频率,还要看汇编代码 确定指令数

用反汇编来确定子函数实际的机器周期么,谢谢点拨
icecut 发表于 2015-2-13 12:47 | 显示全部楼层
你先看汇编
ddllxxrr 发表于 2015-2-13 13:05 | 显示全部楼层
这种再精确也有误差,只是用示波看下,如果接近就可以了,如果想精确定时,最好用定时器
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

41

帖子

0

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