欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為什么我按鍵停止不了單片機程序的發送字節呢?

[復制鏈接]
跳轉到指定樓層
樓主
我想做一個按鍵控制開始和停止發送字節的程序,開始是可以開始發送,但是就時停止不了,邏輯指令不是while只要為假就跳出循環了么?為什么while(0)之后程序還是一直在發送字節啊

捕獲.JPG (32.09 KB, 下載次數: 37)

捕獲.JPG

11.JPG (31.6 KB, 下載次數: 38)

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

使用道具 舉報

沙發
ID:978814 發表于 2023-8-16 14:11 | 只看該作者
是這樣的,你這個是輪詢執行,當你按下開始后,P就等于了1那么你的while(p)就會鎖住,一直在執行這個循環里面的東西,不會再重頭開始掃描了,也就是即使你按下了停止,單片機也不會去執行,單片機被鎖在了while(p)中,如果想達到你的那個效果把while(p)改成if(p)就可以了
回復

使用道具 舉報

板凳
ID:161164 發表于 2023-8-16 14:30 | 只看該作者
76行的while改為if
回復

使用道具 舉報

地板
ID:1077099 發表于 2023-8-16 14:33 | 只看該作者
十二橡樹 發表于 2023-8-16 14:11
是這樣的,你這個是輪詢執行,當你按下開始后,P就等于了1那么你的while(p)就會鎖住,一直在執行這個循環 ...

但是這個大主體的while不也是循環么?就時main主函數里不是有一個while(1),他不會循環檢測的么?這塊的順序是什么樣的啊,嵌套指令后哪個為先哪個為后啊,求賜教啊
回復

使用道具 舉報

5#
ID:1077099 發表于 2023-8-16 14:36 | 只看該作者
十二橡樹 發表于 2023-8-16 14:11
是這樣的,你這個是輪詢執行,當你按下開始后,P就等于了1那么你的while(p)就會鎖住,一直在執行這個循環 ...

我改成if(p)和if(p==1)都試了還是無法停止啊
回復

使用道具 舉報

6#
ID:1077099 發表于 2023-8-16 14:40 | 只看該作者
lkc8210 發表于 2023-8-16 14:30
76行的while改為if

我改成了if(p)和if(p==1)都試了一下,都是可以開始但是無法停止
回復

使用道具 舉報

7#
ID:978814 發表于 2023-8-16 14:47 | 只看該作者
溜溜小白 發表于 2023-8-16 14:33
但是這個大主體的while不也是循環么?就時main主函數里不是有一個while(1),他不會循環檢測的么?這塊 ...

輪詢就是代碼那個在前就先執行那個循環,首先先進行你的初始化即uart(),然后進入你的主循環,以后單片機就在這個主循環中跑了,然后執行你下面的程序,當你按鍵什么都沒按下的時候,這個程序就一直在在主循環中從頭到尾的掃描,當你按下開始以后,你的內部循環while(p)就激活了,同理單片機就會在while(p)這個循環中從頭到尾的執行你的程序。如果你想使用whil(p)實現這個功能的話,你也可以把按鍵檢測作為中斷,在中斷中改變p的狀態
回復

使用道具 舉報

8#
ID:978814 發表于 2023-8-16 14:50 | 只看該作者
溜溜小白 發表于 2023-8-16 14:40
我改成了if(p)和if(p==1)都試了一下,都是可以開始但是無法停止

你的P定義是什么 能截一下整個代碼嗎 是有符號的還是無符號
回復

使用道具 舉報

9#
ID:1077099 發表于 2023-8-16 14:56 | 只看該作者
十二橡樹 發表于 2023-8-16 14:50
你的P定義是什么 能截一下整個代碼嗎 是有符號的還是無符號

unsiged char p 無符號的
回復

使用道具 舉報

10#
ID:978814 發表于 2023-8-16 15:07 | 只看該作者
你確定你的按鍵沒問題是嗎 這樣你試試用P3.4做開始按鍵 p3.5做停止 然后你看下能不能開始 如果不能開始就是P3.4 硬件有問題
回復

使用道具 舉報

11#
ID:161164 發表于 2023-8-16 15:13 | 只看該作者
溜溜小白 發表于 2023-8-16 14:40
我改成了if(p)和if(p==1)都試了一下,都是可以開始但是無法停止

71行改為p=0;
回復

使用道具 舉報

12#
ID:123289 發表于 2023-8-16 17:22 | 只看該作者
分開寫:
1、先寫一個發送函數send_ss,運行它就發送。
2、再寫一個停止發送函數stop_ss,運行它就停止發送。
做到這兩點后:
3、再依據鍵狀態,決定運行哪個函數。
這不是很清楚嗎?而且分開調試又方便。
回復

使用道具 舉報

13#
ID:69038 發表于 2023-8-16 17:31 | 只看該作者
邏輯問題,你這個while(p)就是一個坑,要么進不去,要么出不來。
回復

使用道具 舉報

14#
ID:69038 發表于 2023-8-16 17:37 | 只看該作者

在while(P)中插入P3_4處理代碼。試一下?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表