有谁懂单片机C语言的吗?

这是一个单片机C语言延时一秒的延时程序,看不懂程序中的I=124 是怎么得到的?还有就是FOR循环能够解释一下。
void mDelay(unsigned int Delay)
{
unsigned int i;
for(;Delay>0;Delay--)
{
for(i=0;i<124;i++)
{;}

}
}

for(;Delay>0;Delay--)
C语言的意思是
循环初始Delay等于调用时的Delay,如果Delay大于0则做这个循环语句,每循环一次后Delay=Delay-1,如果Delay大于0则再执行这个循环.直到Delay变0.

Delay循环语句的循环体是i的循环语句,它对i做124次循环,i的循环体是空语句.
for(i=0;i<124;i++)
{;}

i=124次,应当是率定试验做出来的.例如做过一次1分钟的试验,得出7440次,那么1秒钟:7440/60=124次
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-08-07
124是从时钟频率与for(i=0;i<124;i++){;}这指令的执行时间得来的

比如80C51,mdelay函数想延时1ms,而执行for(i=0;i<124;i++){;}为“假设为”(实际用是几个,你可以自己算不会算可以发信息给我)4个机器周期,每个机器周期时长为[12*(1/晶振频率)秒],若晶振为6MHz时,每个机器周期为2us,这样124*4*2是992us,加上for(;Delay>0;Delay--)需要的8us,正好延时1ms
第2个回答  2007-08-08
其实这是算不准的,只是一个大概罢了.千万不要去仔细算,这样就陷进去了.如果要准确一点,就用定时器吧.
第3个回答  2007-08-11
124是经验得来的值啊.就是执行空语句执行124次,大概就能延时到1秒的意思.不是很准的.还受中断干挠.
相似回答