例如:
for(i=999;i> 0;i--);
所用的时间?
以下是引用guest在2004-2-10 16:46:06的发言: 如何计算单片机一个For循环所需要的时间?如何计算单片机一个For循环所需要的时间? |
一个办法是看指令的条数。假设用12M晶振,指令运行是12分频,可以看成指令运行频率为12M/12=1M,也就是一条指令需要 1/1m = 1us(1微秒)。调用一些系统函数时,你可能不知道该函数到底需要用几条指令,那么可以用另一个更准确的方法:计时/计数器。
在你的 for 部分之前初始化计时器,让它开始计时,例如
TMOD = 0x01; // 计时器TC0 工作模式1,16位计时器
TH0 = 0; // 计时器高位的初值,随便多少(0-255)
TL0 = 0; // 计时器低位的初值,随便
TR0 = 1; // 开始计时
for () { } .... // 你的语句
然后用keil的调试功能,显示timer0窗口,单步运行,你可以看到计时器开始以后,每运行一步,计时器的值加1。用12M晶振时,计时器的1个值表示1毫秒。你看for循环期间,计时器跑了多少,就可以算出时间了。