标题:
这个C语言程序为什么跳不出for循环?
[打印本页]
作者:
陈二土
时间:
2020-6-24 18:34
标题:
这个C语言程序为什么跳不出for循环?
要求:开机后,P2.0控制的LED灯闪烁6次,闪烁间隔为500ms;闪烁结束后P4.7控制的LED灯常亮。
程序:
#include<reg52.h>
sbit LED=P2^0;
void delay(int i)
{
while(i--);
}
void main()
{
int a;
for(a=0;a<12;a++)
{
LED=~LED;
delay(50000);
}
LED=0;
}
仿真的时候一直闪烁不知道为什么....求解答
51hei图片20200624183144.png
(49.43 KB, 下载次数: 62)
下载附件
2020-6-24 18:32 上传
作者:
wulin
时间:
2020-6-28 05:18
void main()
{
int a;
for(a=0;a<12;a++)
{
LED=~LED;
delay(50000);
}
LED=0;
while(1);
}
作者:
青桑叶
时间:
2020-6-28 08:48
main 函数一直在执行。led灯会一直闪烁。
作者:
SKYLAR123
时间:
2020-6-28 09:25
加入while,防止程序跑飞,
作者:
ouyangshishi
时间:
2020-6-28 09:32
这段代码中有一个最大的问题是没有主循环体,没有while循环体,而直接是main函数,有一种可能性就是函数执行完一次后,回到开头,重新执行,这就造成了一直闪烁
作者:
heu_dzh
时间:
2020-6-28 09:59
我觉得程序是没问题的,但是可能仿真软件哪里有问题,你可以给程序里面加一个if(a==11)break;试试
作者:
黑麦威士忌
时间:
2020-6-28 10:37
应该是没有while(1)导致程序跑飞,建议改成这样
void main()
{
int a;
for(a=0;a<12;a++)
{
LED=~LED;
delay(50000);
}
while(1)
{
LED=0;
}
}
作者:
wwh2382
时间:
2020-6-28 15:42
为什么不跟踪一下呢?将断点设在LED=0处,看程序有没有跳出for循环
作者:
zeall1
时间:
2020-6-28 15:45
应该是没有while(1)导致程序跑飞
作者:
不要黑
时间:
2020-6-28 16:10
#include<reg52.h>
sbit LED=P2^0;
void delay(int i)
{
while(i--);
}
void main()
{
int a;
for(a=0;a<12;a++)
{
LED=~LED;
delay(50000);
}
LED=0;
while(1)
{
}
}
加while(1),实测有效。
作者:
湖南
时间:
2020-6-28 17:01
设置断点 调试一下代码看看
作者:
f556
时间:
2020-6-28 17:36
程序本身没有问题,看了说加while(1);的处理方法,是一种答案。但原则上没有while(1),程序也是执行到main的最后一个}结束。
作者:
ccdmcu
时间:
2020-6-29 15:48
这不明摆着吗,跳出for循环后又进去了啊,你又没加限制,main函数会一直循环执行。
作者:
电子back科技
时间:
2020-6-29 16:36
要习惯性的写个while(1)。有内容要循环的,就写进while(1)循环里,没有要循环的,就在最后写个while(1).
作者:
海南钓鱼王
时间:
2020-6-29 17:07
限制循环的地方,不然一直跑就一直闪
作者:
饮酒作乐
时间:
2020-6-29 17:39
程序原则上没有问题,但是最好加上while(1),然后自己设置停止点,不要让程序走出main 函数。如果是软件程序走出 main 就结束了。单片机很有可能会复位或者其他的原因再次进来。
作者:
约瑟
时间:
2020-6-30 05:41
不要让a初始化0,初始化放到for外边,
作者:
aking991
时间:
2020-6-30 08:45
我认为是超出单片机看门狗定时器时间造成的,如果你用的是STC单片机,建议在循环体中加喂狗就不会每次超时而重启,这样也就看出一直跳不出来,其实它已在一定时间后就重启了
作者:
wojiaoguogai
时间:
2020-6-30 09:39
程序结束后跑飞了,然后自动自复位
作者:
黄youhui
时间:
2020-6-30 10:10
你们51单片机度不用用while(1)卡程序的吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1