单片机C语言延时程序计算

void delay(uchar i)
{
uchar k,j;
for(;i>0;i--)
for(k=255;k>0;k--)
{
for(j=255;j>0;j--)
;
;
}
}

试问:当i取10时,这个函数延时多长时间呢?希望给出详细讲解过程。(晶振为12MHz)

这个是看你用什么单片机了,不同单片机速度不一样的,而且想用理论计算的话,就必须反汇编一下(我只知道这样),因为只有每条的汇编语句才知道要多少时钟周期,才好计算。如果想要结果呢就简单了,用KEILC里面的仿真,选好片子和晶振,前后打上断点运行,旁边有时间记录的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-25
keil 可以看仿真时间的,

计算的话我只知道51单片机的

假设晶振频率为x

那么用_nop_()精确延时

执行一条_nop_()需要的时间为t=12/x;
第2个回答  2010-07-17
编译完成后,点击keil菜单栏里的红色B标志,进入仿真。在主函数里,写
void main()
{
delay(10);
}
在delay(10);上设置断点,测设就可以了
第3个回答  2010-07-17
#include<stdio.h>
void main()
{ int i;
scanf("%d",i);
sleep(i);
}

这样可以延长时间i为几 暂停几秒
第4个回答  2010-07-17
用仿真来计算
相似回答