单片机C语言延时程序,如何计算延时时间?(高分悬赏!!)代码如下:

void delay(unsigned int a)
{
while(--a);
}
主函数中调用延时函数时,传递的值是200,即void delay(unsigned int a)中a=200。
请求高人给出延时时间,并给出计算方法。

我记得keil里面有时间的,好久不用了,单位好像是微秒吧!就是那个分步执行,按一下执行一步的..
比如前面那个箭头指到你的调用函数delay(200);假设执行到此部用时1110。
按一下执行,箭头指到下一“;”前的那一句了,如果此时用时显示变成了1510,说明延时函数延时了400us
要注意选择对的晶振频率
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-17
延迟就是无限执行while语句,一直到循环退出。执行一条语句一般是1-4个机器周期,而一个机器周期由12个时钟周期组成,时钟周期就是晶振的倒数。
比如12MHz的晶振,一个语句是一个周期,那就是1/12us 乘以 12 乘以 1 ,就是a=1的延时时间,a=200就再乘以200.
第2个回答  2012-05-17
不知你用的什么型号的单片机,假设你单片机执行一条指令的时间为x,则:
1:传递的参数为200,一直减到0用200个周期
2:每减一需要判断是否减到0,汇编后为比较指令,就要用200个比较指令的周期
总共用时就是200+200*比较指令的周期
第3个回答  2012-05-17
将代码通过编译工具转成汇编指令,然后计算执行完这个函数需要多少条指令周期,根据芯片DATASHEET,计算出总共需要的时间。
第4个回答  2012-05-17
每步相当于一微妙,--a每循环一次之前自减1,所以while循环的次数为a的值,时间t=200微妙
相似回答