久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6215|回復: 19
收起左側

這個C語言程序為什么跳不出for循環?

  [復制鏈接]
ID:564944 發表于 2020-6-24 18:34 | 顯示全部樓層 |閱讀模式
要求:開機后,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
回復

使用道具 舉報

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);
}
回復

使用道具 舉報

ID:280512 發表于 2020-6-28 08:48 | 顯示全部樓層
main 函數一直在執行。led燈會一直閃爍。
回復

使用道具 舉報

ID:636538 發表于 2020-6-28 09:25 | 顯示全部樓層
加入while,防止程序跑飛,
回復

使用道具 舉報

ID:788840 發表于 2020-6-28 09:32 | 顯示全部樓層
這段代碼中有一個最大的問題是沒有主循環體,沒有while循環體,而直接是main函數,有一種可能性就是函數執行完一次后,回到開頭,重新執行,這就造成了一直閃爍
回復

使用道具 舉報

ID:791364 發表于 2020-6-28 09:59 | 顯示全部樓層
我覺得程序是沒問題的,但是可能仿真軟件哪里有問題,你可以給程序里面加一個if(a==11)break;試試
回復

使用道具 舉報

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:748788 發表于 2020-6-28 15:42 | 顯示全部樓層
為什么不跟蹤一下呢?將斷點設在LED=0處,看程序有沒有跳出for循環
回復

使用道具 舉報

ID:791852 發表于 2020-6-28 15:45 | 顯示全部樓層
應該是沒有while(1)導致程序跑飛
回復

使用道具 舉報

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:280000 發表于 2020-6-28 17:01 | 顯示全部樓層
設置斷點  調試一下代碼看看
回復

使用道具 舉報

ID:282850 發表于 2020-6-28 17:36 | 顯示全部樓層
程序本身沒有問題,看了說加while(1);的處理方法,是一種答案。但原則上沒有while(1),程序也是執行到main的最后一個}結束。
回復

使用道具 舉報

ID:529540 發表于 2020-6-29 15:48 | 顯示全部樓層
這不明擺著嗎,跳出for循環后又進去了啊,你又沒加限制,main函數會一直循環執行。
回復

使用道具 舉報

ID:792940 發表于 2020-6-29 16:36 | 顯示全部樓層
要習慣性的寫個while(1)。有內容要循環的,就寫進while(1)循環里,沒有要循環的,就在最后寫個while(1).
回復

使用道具 舉報

ID:791181 發表于 2020-6-29 17:07 | 顯示全部樓層
限制循環的地方,不然一直跑就一直閃
回復

使用道具 舉報

ID:735148 發表于 2020-6-29 17:39 | 顯示全部樓層
程序原則上沒有問題,但是最好加上while(1),然后自己設置停止點,不要讓程序走出main 函數。如果是軟件程序走出 main 就結束了。單片機很有可能會復位或者其他的原因再次進來。
回復

使用道具 舉報

ID:741406 發表于 2020-6-30 05:41 來自手機 | 顯示全部樓層
不要讓a初始化0,初始化放到for外邊,
回復

使用道具 舉報

ID:65956 發表于 2020-6-30 08:45 | 顯示全部樓層
我認為是超出單片機看門狗定時器時間造成的,如果你用的是STC單片機,建議在循環體中加喂狗就不會每次超時而重啟,這樣也就看出一直跳不出來,其實它已在一定時間后就重啟了
回復

使用道具 舉報

ID:415064 發表于 2020-6-30 09:39 | 顯示全部樓層
程序結束后跑飛了,然后自動自復位
回復

使用道具 舉報

ID:592807 發表于 2020-6-30 10:10 | 顯示全部樓層
你們51單片機度不用用while(1)卡程序的嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久99久久 | 国产精品特级毛片一区二区三区 | 亚洲一区二区免费 | 欧美一级久久精品 | 日韩电影免费观看中文字幕 | 夜夜爽99久久国产综合精品女不卡 | 国产中文一区二区三区 | 国产二区视频 | 午夜精品视频 | 亚洲444kkkk在线观看最新 | 亚洲一区在线播放 | 成人精品视频在线 | 在线91| 日韩久久成人 | 精品九九 | 99热精品在线 | 精品国产1区2区3区 一区二区手机在线 | 81精品国产乱码久久久久久 | 91精品中文字幕一区二区三区 | 91精品无人区卡一卡二卡三 | 亚洲精品视频一区二区三区 | 精品久久香蕉国产线看观看亚洲 | 日韩在线看片 | 久草免费在线 | 日日干日日色 | 日韩视频在线一区 | 国产在线一区二区三区 | 成人黄色电影在线观看 | 国产精品久久久久久久三级 | 国产视频中文字幕 | 在线看亚洲 | 久久亚洲天堂 | 中文区中文字幕免费看 | 亚洲欧美日韩久久 | 欧美 日韩 国产 在线 | 久热m3u8 | 久久久久久久一区 | 色综合网站 | 手机看片在线播放 | 成人在线观看免费 | 久久99网 |