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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9129|回復: 24
打印 上一主題 下一主題
收起左側

單片機C語言while(1)如何跳出死循環?

  [復制鏈接]
跳轉到指定樓層
樓主
ID:743654 發表于 2020-6-2 23:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
main()
{
        lcd_inita();//液晶初始化
        Delay(1, 5);//延時1.5s
        while(1)
        {        
        
               display_clo(255,0,0);//顯示紅色
                Delay(1 , 5);
                display_clo(0,255,0);//顯示綠色
                Delay(1 , 5);
                display_clo(0,0,255);//顯示藍色
                DelayKey(2 , 5);
                clear_all();//清屏
                display_str();//顯示字符串
               
        }
}
這是主函數,紅綠藍為測試顏色,最后要顯示字符串,如何跳出這個死循環?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:743654 發表于 2020-6-2 23:58 | 只看該作者
main()
{     
       int i=1;
       lcd_inita();//液晶初始化
        Delay(1, 5);//延時1.5s
        while(i)
        {        
        
               display_clo(255,0,0);//顯示紅色
                Delay(1 , 5);
                display_clo(0,255,0);//顯示綠色
                Delay(1 , 5);
                display_clo(0,0,255);//顯示藍色
                DelayKey(2 , 5);
                clear_all();//清屏
                display_str();//顯示字符串
               --i;
               if(i==0)
                break;
        }
}
這樣修改后還是死循環,無法跳出。
回復

使用道具 舉報

板凳
ID:394424 發表于 2020-6-3 07:03 | 只看該作者
為什么要跳出   你如果 只要執行一次 就不用while   找到一個合適的跳出條件可以用break
回復

使用道具 舉報

地板
ID:342774 發表于 2020-6-3 08:40 來自觸屏版 | 只看該作者
用do while
回復

使用道具 舉報

5#
ID:744327 發表于 2020-6-3 08:51 | 只看該作者
使用baerk可以跳出
回復

使用道具 舉報

6#
ID:282850 發表于 2020-6-3 09:02 | 只看該作者
刪除while(1)就行
回復

使用道具 舉報

7#
ID:767465 發表于 2020-6-3 09:09 | 只看該作者
if  ..(字符串)...break(中斷)很好用,樓主可以百度一下if  break用法
回復

使用道具 舉報

8#
ID:65956 發表于 2020-6-3 09:11 | 只看該作者
main()
{
        lcd_inita();//液晶初始化
        Delay(1, 5);//延時1.5s
        display_clo(255,0,0);//顯示紅色
        Delay(1 , 5);
        display_clo(0,255,0);//顯示綠色
        Delay(1 , 5);
        display_clo(0,0,255);//顯示藍色
        DelayKey(2 , 5);
        clear_all();//清屏
        display_str();//顯示字符串
        while(1);
}

main()
{
        uchar flag1=1;        

        lcd_inita();//液晶初始化
        Delay(1, 5);//延時1.5s
        while(1)
        {        
                if(flag1 == 1)
                {        
                        flag1 = 0;
                               display_clo(255,0,0);//顯示紅色
                        Delay(1 , 5);
                        display_clo(0,255,0);//顯示綠色
                        Delay(1 , 5);
                        display_clo(0,0,255);//顯示藍色
                        DelayKey(2 , 5);
                        clear_all();//清屏
                        display_str();//顯示字符串
               }
        }
}
以上兩種都是只執行一次的方法,僅供參考
回復

使用道具 舉報

9#
ID:70069 發表于 2020-6-3 09:12 | 只看該作者
break;可以跳出循環,如果上面死循環不想再進入就是,下面添加一個while(1)
另一種方式,上面不要while(1),在末尾加上while(1),
回復

使用道具 舉報

10#
ID:367934 發表于 2020-6-3 09:13 | 只看該作者
其實這個不應該叫死循環。應該是主循環。你如果跳出了這個循環,那么你的程序就結束了。
跳出循環一般是使用C語言關鍵字break;
最好就是通過某個條件來控制什么時候跳出這個循環。
比如循環次數。大于多少次就跳出循環。
void main()
{
   unsigned char i=0;
   while(1)
  {
     i++;
    if(i>10)
    {
      break;
     }
  }
}
如果在有返回值的函數中還可以用return關鍵字來跳出循環;
如:
int  getdata()
{
     int n=0;
    while(1)
    {
      ........
      return n;
    }
}
還有其他一些比較少用的方法可以跳出循環。
回復

使用道具 舉報

11#
ID:452950 發表于 2020-6-3 10:20 | 只看該作者
把括號里的1改成跳出的條件,當條件==0時跳出循環。
回復

使用道具 舉報

12#
ID:70069 發表于 2020-6-3 11:04 | 只看該作者
cheney03 發表于 2020-6-2 23:58
main()
{     
       int i=1;

你這樣是沒用的。main函數本身就是一個循環函數,會不停的執行。你這樣的跳出后,會在進入。如果不想再進入了。在后面再加一條while(1),使程序進入另一個循環出不來就行。
回復

使用道具 舉報

13#
ID:768434 發表于 2020-6-3 14:39 | 只看該作者
執行break();函數可以跳出循環
回復

使用道具 舉報

14#
ID:743654 發表于 2020-6-3 17:07 | 只看該作者
f556 發表于 2020-6-3 09:02
刪除while(1)就行

是的,只要執行一次,刪除while循環就可以了。
回復

使用道具 舉報

15#
ID:743654 發表于 2020-6-3 17:13 | 只看該作者
aking991 發表于 2020-6-3 09:11
main()
{
        lcd_inita();//液晶初始化

謝謝,方法可行
回復

使用道具 舉報

16#
ID:765062 發表于 2020-6-8 16:26 | 只看該作者
陷入死循環主要是While里的判斷語句時是真,所以一直都在做循壞,1改為==0
回復

使用道具 舉報

17#
ID:416289 發表于 2020-6-8 17:13 | 只看該作者
goto  break
回復

使用道具 舉報

18#
ID:769641 發表于 2020-6-8 17:35 | 只看該作者
跳出循環一般是使用C語言關鍵字break;
回復

使用道具 舉報

19#
ID:599619 發表于 2020-6-8 17:43 | 只看該作者
cheney03 發表于 2020-6-2 23:58
main()
{     
       int i=1;

用 do while()ya
回復

使用道具 舉報

20#
ID:687261 發表于 2020-6-8 21:00 | 只看該作者
要么使用beak,要么對判斷條件進行修改
回復

使用道具 舉報

21#
ID:402946 發表于 2020-6-9 08:18 來自觸屏版 | 只看該作者
哈哈,break直接結束循環或者return直接結束main函數
回復

使用道具 舉報

22#
ID:771727 發表于 2020-6-9 12:26 | 只看該作者
不想死循環可以不用while(1)吧
回復

使用道具 舉報

23#
ID:772467 發表于 2020-6-9 13:55 | 只看該作者
內部加一個break就可以了,如果需要條件可以用在條件語句中在break
回復

使用道具 舉報

24#
ID:772467 發表于 2020-6-9 13:57 | 只看該作者
內部用break就可以,如果需要條件可以把braek嵌套在條件內
回復

使用道具 舉報

25#
ID:707397 發表于 2020-6-9 15:29 | 只看該作者
cheney03 發表于 2020-6-2 23:58
main()
{     
       int i=1;

你還--i做什么,把if刪掉
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久久免费观看 | 91www在线观看 | 久久人人国产 | 欧美成人高清视频 | 国产精品久久久久久久久久 | 浴室洗澡偷拍一区二区 | 一区二区三区四区在线 | 伊人伊人 | 国产一区二区三区色淫影院 | 久久亚洲一区二区 | 久久久久国产精品午夜一区 | 久草网址 | 免费在线成人网 | 欧美激情在线播放 | 精品国产一区二区国模嫣然 | 久久免费视频1 | 日韩中文在线观看 | 日本一二三区电影 | 四虎网站在线观看 | 久久91精品国产 | 一区二区免费高清视频 | 91精品久久久久久久久中文字幕 | 日韩中文一区 | 91精品中文字幕一区二区三区 | 中文字幕精品一区二区三区在线 | 亚洲久久久 | 日韩电影中文字幕在线观看 | 欧美日韩综合一区 | 久久精品国产一区 | 一起操网站 | 四色永久 | av一级 | 国产精品国产成人国产三级 | 欧美舔穴| 亚洲成人一二区 | 天堂网av在线 | 玖玖国产精品视频 | 亚洲天堂男人的天堂 | 欧美视频精品 | 国产日韩精品一区二区 | 金莲网 |