?for循环的延时时间怎么确定

[复制链接]
5940|7
 楼主| yuri714 发表于 2008-11-13 09:59 | 显示全部楼层 |阅读模式
比如如何确定
            for(int i=10000;i>0;i--)
在一定的硬件环境下延时了多长时间?
我见很多程序里都这样延时,可我不会算时间。。。
computer00 发表于 2008-11-13 10:25 | 显示全部楼层

计算不方便,仿真或者用示波器测量。

ljm810010 发表于 2008-11-13 10:45 | 显示全部楼层

不同编译器不同配置不同MCU都不同,入反汇编看

hotyong 发表于 2008-11-13 10:46 | 显示全部楼层

这东西有公式计算的

时间是  a+b*i      a.b在i的类型不同时不同
可在编译器中查看时间,推算出a,b的值,,(有个把周期的误差)
djyos 发表于 2008-11-13 15:42 | 显示全部楼层

给你支个招

    我的程序一般有一个全局变量:ns_of_for,意思是一个for循环的纳秒数,是在程序初始化阶段用定时器测10000个for循环算出来的。注意使用时循环变量类型必须和测量时一致。
aceice 发表于 2008-11-13 16:50 | 显示全部楼层

想精确还是用定时器

不同的编译方式都会影响最终的结果,需要反汇编看具体汇编代码是怎么样的来算周期。
saul2006 发表于 2008-12-7 23:01 | 显示全部楼层

我也不懂

一个例子:石英晶体为12MHz,如果要延时0.2秒,循环可以写成:
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
这两个20,一个248怎么算出来的呀?
aceice 发表于 2008-12-8 09:45 | 显示全部楼层

查查反汇编吧~

同一条语句编译模式不同,结果都不一样的~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

180

帖子

0

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