欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 這個C語言程序為什么跳不出for循環(huán)? [打印本頁]

作者: 陳二土    時間: 2020-6-24 18:34
標題: 這個C語言程序為什么跳不出for循環(huán)?
要求:開機后,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, 下載次數(shù): 62)

51hei圖片20200624183144.png

作者: 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 函數(shù)一直在執(zhí)行。led燈會一直閃爍。
作者: SKYLAR123    時間: 2020-6-28 09:25
加入while,防止程序跑飛,

作者: ouyangshishi    時間: 2020-6-28 09:32
這段代碼中有一個最大的問題是沒有主循環(huán)體,沒有while循環(huán)體,而直接是main函數(shù),有一種可能性就是函數(shù)執(zhí)行完一次后,回到開頭,重新執(zhí)行,這就造成了一直閃爍
作者: 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循環(huán)
作者: 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),程序也是執(zhí)行到main的最后一個}結束。
作者: ccdmcu    時間: 2020-6-29 15:48
這不明擺著嗎,跳出for循環(huán)后又進去了啊,你又沒加限制,main函數(shù)會一直循環(huán)執(zhí)行。
作者: 電子back科技    時間: 2020-6-29 16:36
要習慣性的寫個while(1)。有內容要循環(huán)的,就寫進while(1)循環(huán)里,沒有要循環(huán)的,就在最后寫個while(1).
作者: 海南釣魚王    時間: 2020-6-29 17:07
限制循環(huán)的地方,不然一直跑就一直閃
作者: 飲酒作樂    時間: 2020-6-29 17:39
程序原則上沒有問題,但是最好加上while(1),然后自己設置停止點,不要讓程序走出main 函數(shù)。如果是軟件程序走出 main 就結束了。單片機很有可能會復位或者其他的原因再次進來。
作者: 約瑟    時間: 2020-6-30 05:41
不要讓a初始化0,初始化放到for外邊,
作者: aking991    時間: 2020-6-30 08:45
我認為是超出單片機看門狗定時器時間造成的,如果你用的是STC單片機,建議在循環(huán)體中加喂狗就不會每次超時而重啟,這樣也就看出一直跳不出來,其實它已在一定時間后就重啟了
作者: wojiaoguogai    時間: 2020-6-30 09:39
程序結束后跑飛了,然后自動自復位
作者: 黃youhui    時間: 2020-6-30 10:10
你們51單片機度不用用while(1)卡程序的嗎




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1