找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

这个C语言程序为什么跳不出for循环?

查看数: 7070 | 评论数: 19 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-6-24 18:34

正文摘要:

要求:开机后,P2.0控制的LED灯闪烁6次,闪烁间隔为500ms;闪烁结束后P4.7控制的LED灯常亮。 程序: #include<reg52.h> sbit LED=P2^0; void delay(int i) {         w ...

回复

ID:592807 发表于 2020-6-30 10:10
你们51单片机度不用用while(1)卡程序的吗
ID:415064 发表于 2020-6-30 09:39
程序结束后跑飞了,然后自动自复位
ID:65956 发表于 2020-6-30 08:45
我认为是超出单片机看门狗定时器时间造成的,如果你用的是STC单片机,建议在循环体中加喂狗就不会每次超时而重启,这样也就看出一直跳不出来,其实它已在一定时间后就重启了
ID:741406 发表于 2020-6-30 05:41
不要让a初始化0,初始化放到for外边,
ID:735148 发表于 2020-6-29 17:39
程序原则上没有问题,但是最好加上while(1),然后自己设置停止点,不要让程序走出main 函数。如果是软件程序走出 main 就结束了。单片机很有可能会复位或者其他的原因再次进来。
ID:791181 发表于 2020-6-29 17:07
限制循环的地方,不然一直跑就一直闪
ID:792940 发表于 2020-6-29 16:36
要习惯性的写个while(1)。有内容要循环的,就写进while(1)循环里,没有要循环的,就在最后写个while(1).
ID:529540 发表于 2020-6-29 15:48
这不明摆着吗,跳出for循环后又进去了啊,你又没加限制,main函数会一直循环执行。
ID:282850 发表于 2020-6-28 17:36
程序本身没有问题,看了说加while(1);的处理方法,是一种答案。但原则上没有while(1),程序也是执行到main的最后一个}结束。
ID:280000 发表于 2020-6-28 17:01
设置断点  调试一下代码看看
ID:789121 发表于 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),实测有效。
ID:791852 发表于 2020-6-28 15:45
应该是没有while(1)导致程序跑飞
ID:748788 发表于 2020-6-28 15:42
为什么不跟踪一下呢?将断点设在LED=0处,看程序有没有跳出for循环
ID:791579 发表于 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;
        }
}
ID:791364 发表于 2020-6-28 09:59
我觉得程序是没问题的,但是可能仿真软件哪里有问题,你可以给程序里面加一个if(a==11)break;试试
ID:788840 发表于 2020-6-28 09:32
这段代码中有一个最大的问题是没有主循环体,没有while循环体,而直接是main函数,有一种可能性就是函数执行完一次后,回到开头,重新执行,这就造成了一直闪烁
ID:636538 发表于 2020-6-28 09:25
加入while,防止程序跑飞,
ID:280512 发表于 2020-6-28 08:48
main 函数一直在执行。led灯会一直闪烁。
ID:213173 发表于 2020-6-28 05:18
void main()
{
    int a;
    for(a=0;a<12;a++)
    {
        LED=~LED;
        delay(50000);
    }
    LED=0;
    while(1);
}

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表