新手请教单片机while(1)的使用
#include<reg52.h>
sbit led1=P1^0;
unsigned int i,j;
void main()
{
//while(1);
{
for(i=0;i<500;i++)
for(j=0;j<100;j++)
led1=0;
for(i=500;i>0;i--)
for(j=110;j>0;j--)
led1=1;
}
}
请大家看收程序,我把while(1)注释了,程序也在反复执行,那这个while(1)还有何意义呢?
这是由于你的主程序就只有这一段 while(1)之前没有赋初值 等其他的语句
不知道为什国外的工程师都喜欢用for(;;){}
良好的编程习惯,
这个不用问为什么的 就跟1+1=2同样道理
每个人有每个人的风格,国外不一定就是用你写的那样,很多人还是传统的写法。没有while(1)很容易让程序跑飞。
复杂一点的程序没有while会出错的 。
楼上这样写,程序就死了,就一直死等,只有等响应中断
你的程序写的有问题,while(1)后面不应有“;”,你再把while(1)语句的"{"和"}"也注释了调试下。
同意10楼看法。
main()本身就有循环,如果你一定要只闪一次,
#include<reg52.h>
sbit led1=P1^0;
static unsigned int x;
void delay(void)
{ unsigned char i,j,m;
for(m=2;m>0;m--)
for(i=0;i<200;i++)
for(j=0;j<200;j++);
}
void main()
{ x=0;
while(1)
{led1=1;
delay();
x++;
if(x==1)
{
led1=0;delay();}
else {led1=1;delay();
}
}
}试试这个 吧
不会死循环
程序很简单吗,就是控制灯的闪烁,while(1)就是让程序一直在跑,表现为灯一直在闪烁
编译器的功劳
while(1)就是一个死循环,只有遇到break和中断响应才会跳出啊
受教了
学习了,
主程序不就是一遍遍的执行吗?最后一行来一句while(1); 这样不就锁死了吗?难道主程序只执行一次吗?是吧