这个程序为什么会进行循环呢 不是应该顺序执行一次吗

2019-07-18 11:47发布

#include <REGX51.H>
sbit led=P1;
delay(unsigned int y)
{
        while(y--);
}
void main(void)

{
        P1=0xff;
        delay(50000);
        P1=0x00;
        delay(50000);

}
这个程序为什么会进行循环呢             不是应该顺序执行一次吗

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
xiaoyiniio
1楼-- · 2019-07-18 17:37
你都没返回。。。
xiaohunnanzi
2楼-- · 2019-07-18 21:14
是不是看门狗引起的
武力戡乱
3楼-- · 2019-07-18 21:45
沙发那座正解!但注意哈,你用的是keil,部分编译器还有有区别的,有的就只是执行一遍。
a454672135
4楼-- · 2019-07-19 02:23
程序的执行就是在main函数里循环的。正常的程序编写会在main函数的开始进行一些初始化函数的调用,变量赋初值之类的,之后再加一个while(1){...},程序就会while里循环了,知道return跳出。如果你想这个程序只执行一次的话应该这么写。
#include <REGX51.H>
sbit led=P1;
delay(unsigned int y)
{
        while(y--);
}
void main(void)

{
        P1=0xff;
        delay(50000);
        P1=0x00;
        delay(50000);
         while(1);
}

另附一般书写规律

...//之前省略函数,头文件
void main()
{
     config();//这个可以进行各种初始化
     ....//省略各种定时器,AD,传感器等初始化
     while(1)
     {
        .....//主程序循环执行
     }
}



纯手敲,供参考,我也是刚刚工作的初学者,大神勿喷,见谅。
a454672135
5楼-- · 2019-07-19 05:29
 精彩回答 2  元偷偷看……
zhangwm_82
6楼-- · 2019-07-19 11:08
程序“飞了”,你在main()最下面加上while(1);就可以了

一周热门 更多>