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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機串口發送數據,通過按鍵判斷發送,但是沒有經過按鍵就直接發送了!

查看數: 2757 | 評論數: 10 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2020-11-3 10:50

正文摘要:

這個就是程序,我用得單片機開發板,接上串口以后,直接發送數據了,而不是通過我按下那個按鍵在發送那個數據,而是一直發送,但是我按下另一個按鍵以后,就變成另一個一直發送了,求大佬指點一下,為什么不 ...

回復

ID:730961 發表于 2020-11-3 14:58
大佬們,怎么用printf(“打印一句話啊”),通過串口調試助手顯示出來
ID:730961 發表于 2020-11-3 14:13
感謝大佬們,我把函數放在判斷里面,或者在加一個判斷就可以了
ID:245053 發表于 2020-11-3 13:19
主程序一直在執行fasong(num)函數,肯定是一直在發送數據了,fasong(num)要有條件(就是你的按鍵)的執行、結束
ID:278840 發表于 2020-11-3 13:11
當程序運行到fasong(num);串口就發送數據到上位機了,此時num= 0;如果要按鍵發送的話,就要在fasong()這個子函數加個判斷比如定義一個變量Switch=flag.if(Switch_flag){Switch_flag = 0;fasong();}按鍵將Switch置1,然后if里面清零
ID:424598 發表于 2020-11-3 12:50
發送函數要放到按鍵函數的判斷成功里面
ID:88256 發表于 2020-11-3 11:51
小白學51i 發表于 2020-11-3 11:27
沒太懂,我得理解是這樣得:初始化以后不是進入while(1);循環了嘛?他不是要一直掃描我的按鍵函數嘛? ...

   while(1)
   {
  keypros();   //按鍵函數
  fasong(num);  //發送函數
   }

你看看你寫的這個循環,執行按鍵處理之后就是發送,而不是判斷按下什么鍵去處理發送,所以就會一直發送
ID:730961 發表于 2020-11-3 11:27
lovezjf234 發表于 2020-11-3 11:18
fasong(num);  //發送函數  
你本來就一直在發送,沒有中斷過,最好用flag進行標記發送,或者用中斷進行發 ...

沒太懂,我得理解是這樣得:初始化以后不是進入while(1);循環了嘛?他不是要一直掃描我的按鍵函數嘛?我的按鍵按下以后才能發送num得值,不按下不就發送不了嘛?那么第一次不就是不能發送數據嘛?必須等我按下以后才能發送第一次得值?
ID:730961 發表于 2020-11-3 11:23
心有浮生 發表于 2020-11-3 11:20
你這串口發的dat是在哪賦值的,

不是有一個函數是
void fasong(u16 dat)   
{
    SBUF = dat;
    while(!TI);
    TI = 0;
}
num值給dat了
ID:654028 發表于 2020-11-3 11:20
你這串口發的dat是在哪賦值的,
ID:739545 發表于 2020-11-3 11:18
fasong(num);  //發送函數  
你本來就一直在發送,沒有中斷過,最好用flag進行標記發送,或者用中斷進行發送更好

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

Powered by 單片機教程網

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