打印

请问这个微秒级的子函数对吗?

[复制链接]
1491|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Guillaume_Meng|  楼主 | 2012-7-25 16:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问这个微秒级的子函数对吗?

void delayms(uint t)   //延时子程序
{
uint i;
    for(i=t;i>0;i--,_nop_());
}

_nop()是1us,那我把z的值设多少就是延时多少微秒,对吗?谢谢!

相关帖子

沙发
joyme| | 2012-7-25 16:56 | 只看该作者
不对,for循环本身就需要执行时间,你看编译后的结果就知道了

使用特权

评论回复
板凳
joyme| | 2012-7-25 16:57 | 只看该作者
即1MIPS(即指令周期为1us)的情况下,根本做不到1us的延时

使用特权

评论回复
地板
airwill| | 2012-7-25 19:35 | 只看该作者
循环里:
一条 nop 和 一条 DJNZ 指令, 需要3个uS(36个机器周期)

使用特权

评论回复
5
ningling_21| | 2012-7-25 23:24 | 只看该作者
看汇编就知道了...

使用特权

评论回复
6
wukunshan| | 2012-7-27 00:04 | 只看该作者
进入函数需要时间,执行for语句需要时间。具体要用编译器调试才确定。

使用特权

评论回复
7
Ryanhsiung| | 2012-7-27 08:34 | 只看该作者
不可能到1us,具体时间你看汇编代码会比较清楚!
  还要考虑进栈 出栈的时间,中断的影响时间!!

使用特权

评论回复
8
dlyt_test001| | 2012-7-27 10:02 | 只看该作者
要考虑FOR的判断时间,和此函数的进入及退出时间!
还要考虑编译器的影响。
看汇编会清楚一点。

使用特权

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

本版积分规则

27

主题

265

帖子

0

粉丝