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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2346|回復: 8
收起左側

單片機C語言跳出while循環的時候出錯

[復制鏈接]
ID:410231 發表于 2019-8-12 21:58 | 顯示全部樓層 |閱讀模式
while(sign)
        {
                 level = GetADCResult();//獲取ad轉化結果
                sprintf(s, "%u\n", level);
                send_string(s);//使用串口發送字符串
                Delay10ms();
                if(level < 20 || level > 50)
                        continue;
                sign = 0;//跳出循環
        }
        alarm(10);//報警
代碼如上,但是加入跳出循環的語句后讀取到的ad轉化的結果不正確,這是為什么?求大佬告知。

回復

使用道具 舉報

ID:365802 發表于 2019-8-13 08:19 | 顯示全部樓層
嗯, continue的意思是說, 結束本次循環, 繼續下一次. 如果想結束循環體則需要使用break.
回復

使用道具 舉報

ID:213173 發表于 2019-8-13 08:22 | 顯示全部樓層
ad轉換結果正常范圍是0~255或0~1023,樓主限定有效范圍是20~50,否則報警。
        while(sign)
        {
                level = GetADCResult();//獲取ad轉化結果
                sprintf(s, "%u\n", level);
                send_string(s);//使用串口發送字符串
                Delay10ms();
                if(level < 20 || level > 50)
                {
                        //continue;
                        sign = 0;//跳出循環
                }
        }
        alarm(10);//報警
回復

使用道具 舉報

ID:588518 發表于 2019-8-13 09:19 | 顯示全部樓層
你讀取到的AD轉換結果的正確值在20到50之間?
回復

使用道具 舉報

ID:599611 發表于 2019-8-13 09:34 | 顯示全部樓層
樓主是不是想下面這個意思?
while(sign)
        {
                 level = GetADCResult();//獲取ad轉化結果
                sprintf(s, "%u\n", level);
                send_string(s);//使用串口發送字符串
                Delay10ms();
                if(level < 20 || level > 50)
                 {;
                 }
                else
                {
                   sign = 0;//跳出循環
                 }
        }
        alarm(10);//報警
回復

使用道具 舉報

ID:384252 發表于 2019-8-13 22:34 | 顯示全部樓層
從樓主提供的代碼來看,不管level 的值是多少,都會跳出while循環的喔,因為有sign = 0;所以不管怎么樣都會跳出while循環的。換句話說if(level<20 || level > 50) continue;就沒有什么意思了,只不過是多此一舉而已了
回復

使用道具 舉報

ID:599517 發表于 2019-8-13 23:09 來自觸屏版 | 顯示全部樓層
沒意義啊,sign= 0這里除了第一次之外每次都運行啊,還不如把while(sign)去掉!!
回復

使用道具 舉報

ID:593388 發表于 2019-8-14 05:00 | 顯示全部樓層
你這樣寫一定會錯, 因為 embedded 一定是要在無窮 loop 裡面跑. 不可以跳出 loop. 因為一旦跳出 loop, program 沒有 OS 可以承接, 當然會錯. 你應該是要在 while(1) 裡面用 case 切換.
回復

使用道具 舉報

ID:426861 發表于 2019-8-14 09:51 | 顯示全部樓層
因為跳出循環每次都會執行啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区在线播放 | 伊人成人免费视频 | 狠狠涩 | 中文字幕在线第一页 | 人人干人人艹 | 亚洲性人人天天夜夜摸 | 一区二区三区欧美大片 | 日本精品久久久一区二区三区 | 在线亚洲一区二区 | 免费观看一级毛片 | 中文字幕日韩一区 | 在线观看中文字幕视频 | 久久激情视频 | 97超碰免费| 97免费视频在线观看 | 四虎影院在线播放 | 狠狠爱一区二区三区 | 天堂一区 | 99精品欧美一区二区三区 | 欧美一区二区三区在线 | 超碰97免费在线 | 午夜精品影院 | 国产精品美女久久久久久久久久久 | 精品一区二区电影 | 一区免费看 | 992人人草 | 日本亚洲欧美 | 欧美中文字幕在线观看 | 欧美成人一级 | 国产剧情一区 | 国产一级在线 | 欧美日韩亚洲系列 | 国产精品久久久久久久久久 | 四虎影| 成人小视频在线观看 | 精品国产一区二区三区免费 | 久久久久国产一级毛片高清网站 | 一级黄色裸片 | 99久久精品免费看国产小宝寻花 | 欧美激情欧美激情在线五月 | 久久人爽爽人爽爽 |