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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

小白求助 關于51單片機串口數據處理

查看數: 1874 | 評論數: 5 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2023-6-7 17:23

正文摘要:

判斷從串口接收到的兩個字節,即4位16進制的數據,如果第一個字節對了led1亮然后判斷第二個,第二個字節對了led3亮。 但是令我很好奇的是某些數據是對的,另一些卻不能正確判斷 如fafb, e1d1 ,等,燈可以正常亮起 ...

回復

ID:1082596 發表于 2023-6-7 21:54
劉宇杰找實訓 發表于 2023-6-7 21:04
串口中斷函數接收第一個字節之后,開啟定時器計數。接受下一個字節的時候清空定時器計數。如此,當沒有數據 ...

謝謝解答
ID:1082659 發表于 2023-6-7 21:04
串口中斷函數接收第一個字節之后,開啟定時器計數。接受下一個字節的時候清空定時器計數。如此,當沒有數據接收后,計時器無法清零,當計時器計數超過設定的數值之后,觸發定時器溢出中斷,此時數據即接收完畢
ID:1082596 發表于 2023-6-7 20:06
xuyaqi 發表于 2023-6-7 18:27
在串口中斷里應該只處理數據接收,LED處理放在main循環里,不要因為LED處理影響數據接收。

判斷和LED處理已放進主循環,并且僅判斷一個字節。
仍只有部分數據led1可正常亮起,如ff.fb等
請問這是什么原因呢?我該如何解決嘞。求大佬指點
這是修改后的程序
void main()
{       
        UART_init(); //串口初始化
        while(1)
        {  
                if(num1==0x5A)
                {   led1=0;  //第一個字節對了之后led1亮
                }
                else led1=1;
       
        }       
}

void UART() interrupt 4
{         
        while(!RI);        //檢測是否接收完成
                RI = 0;       
                num1 = SBUF;
                       
}
ID:94031 發表于 2023-6-7 18:27
在串口中斷里應該只處理數據接收,LED處理放在main循環里,不要因為LED處理影響數據接收。

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

Powered by 單片機教程網

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