|
發布時間: 2023-8-16 13:56
正文摘要:我想做一個按鍵控制開始和停止發送字節的程序,開始是可以開始發送,但是就時停止不了,邏輯指令不是while只要為假就跳出循環了么?為什么while(0)之后程序還是一直在發送字節啊 |
|
在while(P)中插入P3_4處理代碼。試一下? |
| 邏輯問題,你這個while(p)就是一個坑,要么進不去,要么出不來。 |
|
分開寫: 1、先寫一個發送函數send_ss,運行它就發送。 2、再寫一個停止發送函數stop_ss,運行它就停止發送。 做到這兩點后: 3、再依據鍵狀態,決定運行哪個函數。 這不是很清楚嗎?而且分開調試又方便。 |
溜溜小白 發表于 2023-8-16 14:40 71行改為p=0; |
| 你確定你的按鍵沒問題是嗎 這樣你試試用P3.4做開始按鍵 p3.5做停止 然后你看下能不能開始 如果不能開始就是P3.4 硬件有問題 |
十二橡樹 發表于 2023-8-16 14:50 unsiged char p 無符號的 |
溜溜小白 發表于 2023-8-16 14:40 你的P定義是什么 能截一下整個代碼嗎 是有符號的還是無符號 |
溜溜小白 發表于 2023-8-16 14:33 輪詢就是代碼那個在前就先執行那個循環,首先先進行你的初始化即uart(),然后進入你的主循環,以后單片機就在這個主循環中跑了,然后執行你下面的程序,當你按鍵什么都沒按下的時候,這個程序就一直在在主循環中從頭到尾的掃描,當你按下開始以后,你的內部循環while(p)就激活了,同理單片機就會在while(p)這個循環中從頭到尾的執行你的程序。如果你想使用whil(p)實現這個功能的話,你也可以把按鍵檢測作為中斷,在中斷中改變p的狀態 |
lkc8210 發表于 2023-8-16 14:30 我改成了if(p)和if(p==1)都試了一下,都是可以開始但是無法停止 |
十二橡樹 發表于 2023-8-16 14:11 我改成if(p)和if(p==1)都試了還是無法停止啊 |
十二橡樹 發表于 2023-8-16 14:11 但是這個大主體的while不也是循環么?就時main主函數里不是有一個while(1),他不會循環檢測的么?這塊的順序是什么樣的啊,嵌套指令后哪個為先哪個為后啊,求賜教啊 |
| 76行的while改為if |
| 是這樣的,你這個是輪詢執行,當你按下開始后,P就等于了1那么你的while(p)就會鎖住,一直在執行這個循環里面的東西,不會再重頭開始掃描了,也就是即使你按下了停止,單片機也不會去執行,單片機被鎖在了while(p)中,如果想達到你的那個效果把while(p)改成if(p)就可以了 |