微秒级的延时函数怎能么写

[复制链接]
 楼主| bin126_com 发表于 2012-4-8 14:27 | 显示全部楼层 |阅读模式
我这样写的:(晶振为11.0592)
  1. void delay_us(uint i)
  2. {
  3. while(i--);
  4. }


预想的是delay_us(M);就是延时M微秒,可是仿真看看不是!delay_(1)就延时了80多微秒?为什么呢,要怎么设计呢?:Q
HWM 发表于 2012-4-8 20:06 | 显示全部楼层
具体延时长短还和具体MCU和编译结果有关。
NE5532 发表于 2012-4-8 20:52 | 显示全部楼层
1.足够快的主频,编译带来的误差可忽略不计
2.用汇编写
caner_hn 发表于 2012-4-9 11:59 | 显示全部楼层
楼主单片机太慢了.上个STM32试试.哈哈
icecut 发表于 2012-4-9 13:25 | 显示全部楼层
while(--i);

1us左右
diweo 发表于 2012-4-9 18:01 | 显示全部楼层
用2个甚至更多for嵌套:lol
 楼主| bin126_com 发表于 2012-4-9 22:05 | 显示全部楼层
我用的是 STC89C52 `````` 11.0592M晶振,感觉差别太大了,比如要延时450us或60us,总不能用
_nop_()函数吧····
zhangli019 发表于 2012-4-14 20:16 | 显示全部楼层
en ,用_nop_()比较靠谱
yangxiaolongqq 发表于 2012-4-17 23:42 | 显示全部楼层
建议LZ用_nop_()
 楼主| bin126_com 发表于 2012-4-18 16:17 | 显示全部楼层
建议LZ用_nop_()
yangxiaolongqq 发表于 2012-4-17 23:42

但是几百几百的微妙怎么用写呢?用for+nop ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

118

帖子

0

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

7

主题

118

帖子

0

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