
void delay1(int ms)
{
int i;
for(i=1000;i>0;i--)
while(ms--);
}
void delay2(int ms)
{
int i,j;
j=ms;
for(i=1000;i>0;i--)
while(j--);
}
void delay3(int ms)
{
int i,j;
for(i=1000;i>0;i--)
for(j=0;j
}
为什么只有第三个是正常的?前两个怎么错了?
delay1:一次FOR后,ms参数值已经是0了,后面就不执行while了,所以执行不圆盯薯了1000*ms次,你要改的话可则坦以把ms先赋值给另外一个变量,这样ms的值就不会改变啦。
{
int i,b;
for(i=1000;i>0;i--)
{
b=ms;
while(b--);
}
}
delay2用这橘者个改就可以了。
delay1无论参数ms为什么值只能延时固定的一凯侍段时间,delay2同理,它只是把ms赋值给了j,其错误和delay1是一雀孙激样的,你要明白这里的delay1和delay2实质上就是让单片机运行一千次for循环,顷袜而运行一千次for循环所用的时间就是延时的时间。delay3在前一个循环后又嵌套了一个循环而且整个循环都可以靠ms控制
void delay(int ms)
{
int i;
while(ms--)
{
for(i=0;i<1000;i++);
}
}