比如说i=6;while(i--)i;是延时了68微秒,怎么看出来的?请求帮助,谢谢!!
最后一个i是多写的,没有那个i;是i=6;while(i--);为什么是延时68微秒。我用的是STC89C52单片机。
可以用_nop_( )函数来实现微秒级的延时。
_nop_(); // 直接当成一条语句使用,产生一条NOP指令NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。
注:使用该函数时,需要将头文件#include<intrins.h>包含进源文件中。
比如STC89C52单片机时钟频率11.0592MHz,它执行一条语句的时间是1,0851us,但是怎么能看出i=6;while(i--);就是延时了68微妙;或者i=103;while(i>0);i--;又是延时了多少微秒呢,谢谢!!
追答编译成汇编 然后计算会执行多少条指令 乘上每条时间就可以了
由于编译的时候和编译器以及优化有关 所以单独从C上是看不出来的
另外,如果要求精确 最好用汇编命令写延时 因为编译的话 有可能不同时候得到的代码就变了
_nop();
一般用这个函数 执行一次等于一个语句时间