单片机C语言延时计算问题,高手帮忙!

void delay(uint us) //delay time
{
while(us--);
}

void delay1(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<15;j++)
delay(1);
}
程序如上,如果要1S的延时,delay1(x)中x应该是多少?怎么计算?

这个问题,如果是笔答题,你需要给出你的单片机是多少位的,需要计算时钟分频。
如果是在调程序时就简单多了,在你的keilc上运行,点调试按钮,会在左边栏有时间计数,只要设定程序的断电,就是你这个程序的开始void delay1(),然后先给ms一个数值看下具体的时间是多少,然后再计算就好多了。追问

你好,用的是89c51,好像是8位的,12M晶振。x是多少啊?急求。

追答

4000

追问

4000?怎么感觉比1s长好多啊?不过还是很感谢你啊。定义的是无符号字符串,会不会是段错了啊。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-04
看用多少的晶振,还要看用的是什么单片机,有的单片机12个周期处理一条指令,有的6个还有1个的。
先看一周期=多少微妙
再看一条指令要几个周期,也就是处理一条指令要几微妙
ms一样的计算,看程序里一个循环要几个微秒
第2个回答  2011-08-04
是12M晶振的就大约是1000000/15.
相似回答