打印

如何计算C延时程序的准确时间

[复制链接]
1849|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
512365098|  楼主 | 2011-9-28 08:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在很多场合,需要用到延时程序,一般都是几毫秒,但不知道该如何验证,到底是不是这么多。我看到一般都是用for循环语句来实现,有的一层,有的是两层嵌套,不知道里面的数字是如何得来的,请高手指教。

相关帖子

沙发
512365098|  楼主 | 2011-9-28 08:58 | 只看该作者
举个例子,这是n ms的延时。
for( i = 0;i < n; i++ )
    {
        for( j = 0;j < 3;j++ )
          _NOP();
    }

使用特权

评论回复
板凳
21ID| | 2011-9-28 09:34 | 只看该作者
计算cyclecount,根据时钟来计算

使用特权

评论回复
地板
512365098|  楼主 | 2011-9-28 09:55 | 只看该作者
但是不知道一条C指令转换成多少条具有一个"cyclecount”的指令?

使用特权

评论回复
5
lilihua0721| | 2011-9-28 12:59 | 只看该作者
一般根据时钟来计算,换算成机器指令时间,延时程序最好用汇编编写

使用特权

评论回复
6
永远的不知| | 2011-9-28 16:04 | 只看该作者
实在不好计算,就用示波器查看。

使用特权

评论回复
7
21ID| | 2011-9-28 18:03 | 只看该作者
在simulator下看 4# 512365098

使用特权

评论回复
8
512365098|  楼主 | 2011-9-29 16:11 | 只看该作者
示波器也是测量出来的,只是想通过理论来验证下,估计是不太好算,一条C指令不知道能转化成多少条“基本指令”?

使用特权

评论回复
9
永远的不知| | 2011-9-29 16:49 | 只看该作者
本帖最后由 永远的不知 于 2011-9-29 16:51 编辑

8# 512365098

要想弄清楚,你可以反汇编一下,如果用汇编编过延时,估计也就明白了。
不能看C指令,不同C指令编译出的汇编指令数量也不同,时间自然也不同。

使用特权

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

本版积分规则

个人签名:在路上……

0

主题

532

帖子

1

粉丝