![]() |
發布時間: 2020-10-10 14:17
正文摘要:本帖最后由 sddboy 于 2020-10-11 08:07 編輯 用串口助手 給單片機 發數據測試 發現 如果第一次 發送 000000 ,六個零 就是 30 30& ... |
sddboy 發表于 2020-10-10 17:47 你這樣寫總感覺怪怪的,也不好看程序。 發6個字節才能觸發RI,應該還是你的程序有問題,波特率是否計算錯誤?把完整程序發上來看看吧 |
hhdsdy 發表于 2020-10-10 15:54 while(RI==0){},如果不置位,RI=0滿足條件,等待死循環,沒什么問題吧, 照理我發送 任意數據 應該會觸發RI置1啊,可是初次串口通信 我必須發6個字節 才能觸發RI 置位 搞不懂 |
必須搞清楚,單片機在接收到數據就會自動觸發 RI 置1,而不是靠程序,然后要用程序人工 RI 清0。 while(RI==0)這句并不是判斷單片機是否收到數據0,RI 只是一個接收到數據的標志,而單片機收到的數據會自動保存在SBUF里,所以你的程序應該稍微改一下(判斷num是什么數值,并且這個只是判斷一個而不是6個) if(RI) { RI = 0; num=SBUF; 用num判斷數據并執行相應的操作 } |