微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 新手请教单片机while(1)的使用

新手请教单片机while(1)的使用

时间:10-02 整理:3721RD 点击:
代码如下:
#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);  这样不就锁死了吗?难道主程序只执行一次吗?是吧

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top