打印

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

[复制链接]
3257|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bin126_com|  楼主 | 2012-4-8 14:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我这样写的:(晶振为11.0592)
void delay_us(uint i)
{
while(i--);
}


预想的是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试试.哈哈

使用特权

评论回复
5
icecut| | 2012-4-9 13:25 | 只看该作者
while(--i);

1us左右

使用特权

评论回复
6
diweo| | 2012-4-9 18:01 | 只看该作者
用2个甚至更多for嵌套:lol

使用特权

评论回复
7
bin126_com|  楼主 | 2012-4-9 22:05 | 只看该作者
我用的是 STC89C52 `````` 11.0592M晶振,感觉差别太大了,比如要延时450us或60us,总不能用
_nop_()函数吧····

使用特权

评论回复
8
zhangli019| | 2012-4-14 20:16 | 只看该作者
en ,用_nop_()比较靠谱

使用特权

评论回复
9
yangxiaolongqq| | 2012-4-17 23:42 | 只看该作者
建议LZ用_nop_()

使用特权

评论回复
10
bin126_com|  楼主 | 2012-4-18 16:17 | 只看该作者
建议LZ用_nop_()
yangxiaolongqq 发表于 2012-4-17 23:42

但是几百几百的微妙怎么用写呢?用for+nop ?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

118

帖子

0

粉丝