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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于C語言if語句的執(zhí)行分析

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:777834 發(fā)表于 2021-3-16 18:54 來自觸屏版 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
大家好,有個語句執(zhí)行順序想不通,如圖,t是按鍵按下累計,當按鍵按到4時,也就是t為4時讓LED4依次自動亮到LED8,但是發(fā)現(xiàn)有時不是從LED4開始亮的,按到4后有時亮LED6開始、有時LED7開始、有時LED8開始。這是為什么呢,不是按順序下來的嗎?不要說if語句不能這樣用,我只想知道為什么而已,謝謝啦,還有不關按鍵和延時的事,我改了還是會出現(xiàn)

IMG_20210316_184239.jpg (1.09 MB, 下載次數(shù): 76)

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

使用道具 舉報

沙發(fā)
ID:366464 發(fā)表于 2021-3-16 21:00 | 只看該作者
是不是需加延時?
回復

使用道具 舉報

板凳
ID:151846 發(fā)表于 2021-3-16 21:39 | 只看該作者
按鍵處理問題
回復

使用道具 舉報

地板
ID:151846 發(fā)表于 2021-3-16 21:41 | 只看該作者
程序是按順序執(zhí)行的
回復

使用道具 舉報

5#
ID:213173 發(fā)表于 2021-3-16 22:44 | 只看該作者
假設變量t由外部中斷遞增,且周期遠大于delays_2ms(300),那么LED1、2、3隨t遞增分別點亮,當t=4時,LED4~8逐一點亮至全滅。如果t遞增周期小于LED4~8逐一點亮過程,t沒有機會清0,程序跑飛,亮燈隨機停留在LED4~7。要等到t溢出歸0,進入下次循環(huán)。單片機玩的就是邏輯與時間,樓主這段代碼的邏輯與時間都存在問題。

回復

使用道具 舉報

6#
ID:892852 發(fā)表于 2021-3-16 23:40 | 只看該作者
按鍵狀態(tài)應該是通過中斷獲取的吧。中斷發(fā)生的時候,程序可能正在執(zhí)行5個t==4語句中的任意一個,這個是隨機的,取決于中斷的時間。如果按鍵采用掃描的方式,應該可以規(guī)避這個問題。
回復

使用道具 舉報

7#
ID:151846 發(fā)表于 2021-3-16 23:45 | 只看該作者
while(1)順序執(zhí)行非常快的。你的t=4不知道什么時候出現(xiàn)。比如while順序執(zhí)行到第二或者第三個t==4后才出現(xiàn)t=4。那它肯定在那個if(t==4)執(zhí)行
回復

使用道具 舉報

8#
ID:68800 發(fā)表于 2021-3-16 23:50 | 只看該作者
程序if (t==4)不應該使用4個,需要整合到一個里面。如果你的按鍵中斷進入時間剛好在第一個if (t==4)之前那么程序會按照你的設計正常進入,而如果中斷進入時間在你的第二個或者第三個第四個中間那么就會出現(xiàn)隨機狀態(tài)。
回復

使用道具 舉報

9#
ID:151846 發(fā)表于 2021-3-16 23:59 | 只看該作者
本帖最后由 a4732710 于 2021-3-17 00:05 編輯

你這樣改while中第5行if((t==4)&&(LED3==0)就會順序執(zhí)行
或者改按鍵處理方法if……自己想肯定按順序執(zhí)行了
回復

使用道具 舉報

10#
ID:68800 發(fā)表于 2021-3-17 00:03 | 只看該作者
if(t==4)不能做成多個,需要把多個整合成一個。按鍵為中斷進入,時間為隨機。如果進入時間剛好停留在多個if(t==4)前后就會出現(xiàn)跳過前面的if(t==4)過程。
回復

使用道具 舉報

11#
ID:151846 發(fā)表于 2021-3-17 07:43 | 只看該作者
要想每次都從LED4亮起,需要從第5行改起i((t==4)&&(LED3==0))
第6行if((t==4)&&(LED4==0))第7行if((t==4)&&(LED5==0))依此類推
也可以改按鍵處理程序
回復

使用道具 舉報

12#
ID:65956 發(fā)表于 2021-3-17 08:11 | 只看該作者
你應該用
if(){
}
else if(){
}
else{
}
應用這樣的判斷順序就不會出現(xiàn)你說的樣子了,祝你順利
回復

使用道具 舉報

13#
ID:798631 發(fā)表于 2021-3-17 08:58 | 只看該作者
做程序還是要嚴謹些,   機器是不會出錯的,這是做開發(fā)的根基。這樣的程序架構本身就不合理,要知道延時300對于單片機來說是很長的時間足夠單片機做很多事情了。在此期間你處理了t值就會出現(xiàn)你所說的現(xiàn)象
回復

使用道具 舉報

14#
ID:824490 發(fā)表于 2021-3-17 09:37 | 只看該作者
超過3個的并列IF,請使用Switch
回復

使用道具 舉報

15#
ID:889178 發(fā)表于 2021-3-17 09:48 | 只看該作者
路過,看了下雖然看不懂,但是幫你頂。
回復

使用道具 舉報

16#
ID:777834 發(fā)表于 2021-3-17 12:50 來自觸屏版 | 只看該作者
wulin 發(fā)表于 2021-3-16 22:44
假設變量t由外部中斷遞增,且周期遠大于delays_2ms(300),那么LED1、2、3隨t遞增分別點亮,當t=4時,LED4~8 ...

謝謝回復,t在沒有按鍵控制為0時,不能自行清0吧,就算清0也按順序運行完吧,還是不能理解
回復

使用道具 舉報

17#
ID:777834 發(fā)表于 2021-3-17 12:52 來自觸屏版 | 只看該作者
547886405 發(fā)表于 2021-3-16 23:40
按鍵狀態(tài)應該是通過中斷獲取的吧。中斷發(fā)生的時候,程序可能正在執(zhí)行5個t==4語句中的任意一個,這個是隨機 ...

按鍵我用掃描做的程序或延時做的程序,LED也都會跑飛
回復

使用道具 舉報

18#
ID:777834 發(fā)表于 2021-3-17 12:54 來自觸屏版 | 只看該作者
a4732710 發(fā)表于 2021-3-16 23:45
while(1)順序執(zhí)行非常快的。你的t=4不知道什么時候出現(xiàn)。比如while順序執(zhí)行到第二或者第三個t==4后才出現(xiàn)t= ...

我的理解像你一樣,但是程序不是從上邊執(zhí)行下來的嗎?
回復

使用道具 舉報

19#
ID:777834 發(fā)表于 2021-3-17 12:57 來自觸屏版 | 只看該作者
liugao888 發(fā)表于 2021-3-16 23:50
程序if (t==4)不應該使用4個,需要整合到一個里面。如果你的按鍵中斷進入時間剛好在第一個if (t==4)之前那 ...

謝謝回復,這樣寫是為了驗證自己的想法,正規(guī)點不會這樣寫的
回復

使用道具 舉報

20#
ID:777834 發(fā)表于 2021-3-17 12:57 來自觸屏版 | 只看該作者
a4732710 發(fā)表于 2021-3-16 23:59
你這樣改while中第5行if((t==4)&&(LED3==0)就會順序執(zhí)行
或者改按鍵處理方法if……自己想肯定按順序執(zhí)行了

謝謝回復
回復

使用道具 舉報

21#
ID:777834 發(fā)表于 2021-3-17 12:59 來自觸屏版 | 只看該作者
liugao888 發(fā)表于 2021-3-16 23:50
程序if (t==4)不應該使用4個,需要整合到一個里面。如果你的按鍵中斷進入時間剛好在第一個if (t==4)之前那 ...

謝謝回復,我的理解跟你一樣,發(fā)帖跟大家交流下
回復

使用道具 舉報

22#
ID:777834 發(fā)表于 2021-3-17 13:00 來自觸屏版 | 只看該作者
liugao888 發(fā)表于 2021-3-17 00:03
if(t==4)不能做成多個,需要把多個整合成一個。按鍵為中斷進入,時間為隨機。如果進入時間剛好停留在多個 ...

嗯,應該是這樣。謝謝回復
回復

使用道具 舉報

23#
ID:777834 發(fā)表于 2021-3-17 13:01 來自觸屏版 | 只看該作者
aking991 發(fā)表于 2021-3-17 08:11
你應該用
if(){
}

嗯,正規(guī)點還是這樣寫的,謝謝回復
回復

使用道具 舉報

24#
ID:777834 發(fā)表于 2021-3-17 13:06 來自觸屏版 | 只看該作者
15830266185 發(fā)表于 2021-3-17 08:58
做程序還是要嚴謹些,   機器是不會出錯的,這是做開發(fā)的根基。這樣的程序架構本身就不合理,要知道延時300 ...

是的,謝謝回復,以后會注意的,會寫規(guī)范點,這里寫出來僅交流用,
回復

使用道具 舉報

25#
ID:777834 發(fā)表于 2021-3-17 13:07 來自觸屏版 | 只看該作者
名字不是重點 發(fā)表于 2021-3-17 09:37
超過3個的并列IF,請使用Switch

嗯,有時Switch比if不好用
回復

使用道具 舉報

26#
ID:777834 發(fā)表于 2021-3-17 13:08 來自觸屏版 | 只看該作者
不一一回復啦,謝謝大家啦,從大家的回復中知道答案啦
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 乳色吐息在线观看 | 欧美一区二区三区久久精品 | 国产成人一区二区 | 黄色av网站免费看 | 日韩小视频 | 精品久久久久久久 | 欧州一区二区三区 | 久久久久国产一区二区三区四区 | 欧美三级三级三级爽爽爽 | 成人亚洲视频 | 中文字幕av亚洲精品一部二部 | 99久久亚洲 | 成人黄页在线观看 | 玖玖操 | 欧美不卡| 亚洲欧美日韩久久 | 欧美在线观看一区 | 亚洲第一成年免费网站 | 韩日一区二区三区 | 在线免费观看亚洲 | 日本高清视频在线播放 | 国产精品成人国产乱一区 | 97人澡人人添人人爽欧美 | 国产丝袜一区二区三区免费视频 | 中文字幕一区在线观看视频 | 成人av播放| 三级高清 | 欧美日韩精品久久久免费观看 | 欧美激情一区二区三区 | 日韩有码一区 | 在线中文字幕av | 国产精品一区二区在线播放 | www.色综合| 国产综合精品 | 久久黄视频 | 九九热最新视频 | 亚洲一区二区精品视频在线观看 | 色综合色综合色综合 | 亚洲免费在线观看 | 中文字幕福利视频 | 国产成人福利视频在线观看 |