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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3103|回復: 4
收起左側

奇怪的單片機RI接收中斷標志

[復制鏈接]
ID:187947 發表于 2020-10-10 14:17 | 顯示全部樓層 |閱讀模式
本帖最后由 sddboy 于 2020-10-11 08:07 編輯

用串口助手   給單片機    發數據測試

發現  如果第一次 發送   000000 ,六個零 就是    30  30  30  30  30  30  觸發 RI 置1


如果第一次 發送 少于 6個0   , 例如4個零,就必須發送兩次4個零    才能觸發   RI 置1,觸發后,隨便發 幾個零 都能觸發 RI  置1


有沒有 大佬    知道什么原因 導致的
=====================
單片機 里主要代碼


           while(RI==0)
           {
              ;}

           num=SBUF;

           RI=0;


          執行 動作

==========================

RI 標志.JPG
51code232.JPG
回復

使用道具 舉報

ID:88256 發表于 2020-10-10 15:54 | 顯示全部樓層
必須搞清楚,單片機在接收到數據就會自動觸發 RI 置1,而不是靠程序,然后要用程序人工 RI 清0。
while(RI==0)這句并不是判斷單片機是否收到數據0,RI 只是一個接收到數據的標志,而單片機收到的數據會自動保存在SBUF里,所以你的程序應該稍微改一下(判斷num是什么數值,并且這個只是判斷一個而不是6個)

if(RI)
{
RI = 0;
num=SBUF;

用num判斷數據并執行相應的操作

}



回復

使用道具 舉報

ID:187947 發表于 2020-10-10 17:47 來自觸屏版 | 顯示全部樓層
hhdsdy 發表于 2020-10-10 15:54
必須搞清楚,單片機在接收到數據就會自動觸發 RI 置1,而不是靠程序,然后要用程序人工 RI 清0。
while(RI ...

while(RI==0){},如果不置位,RI=0滿足條件,等待死循環,沒什么問題吧,
照理我發送 任意數據 應該會觸發RI置1啊,可是初次串口通信 我必須發6個字節 才能觸發RI 置位
搞不懂
回復

使用道具 舉報

ID:88256 發表于 2020-10-10 19:54 | 顯示全部樓層
sddboy 發表于 2020-10-10 17:47
while(RI==0){},如果不置位,RI=0滿足條件,等待死循環,沒什么問題吧,
照理我發送 任意數據 應該 ...

你這樣寫總感覺怪怪的,也不好看程序。
發6個字節才能觸發RI,應該還是你的程序有問題,波特率是否計算錯誤?把完整程序發上來看看吧
回復

使用道具 舉報

ID:187947 發表于 2020-10-11 08:07 | 顯示全部樓層
hhdsdy 發表于 2020-10-10 19:54
你這樣寫總感覺怪怪的,也不好看程序。
發6個字節才能觸發RI,應該還是你的程序有問題,波特率是否計算 ...

單片機 串口代碼

51code232.JPG
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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