當前位置:編程學習大全網 - 編程軟體 - 51單片機如何接收多字節串口?!!!

51單片機如何接收多字節串口?!!!

串口的發送和接收可以通過查詢和中斷來實現。

1,查詢方式比較適合半雙工機制,編寫思路簡單,程序結構簡單,全雙工通信容易出現問題。

2.中斷方法效率更高。妳的程序混合了這兩種方法,容易出錯。

以妳的程序為例。壹旦收到第壹個23H字符,就停止等待中斷服務中for循環的剩余5個字符。假設傳感器只發送三個字符,妳的程序在for循環中停止。

以妳的程序為例來改進它。在接收中斷服務時,每次接收壹個中斷只接收1個字符,完成後退出。

void uart_interrupt(void)中斷4使用0

{

靜態無符號字符I = 0;

無符號字符緩沖區;

if(RI==1)

{

buf = SBUF

開關(壹)

{

案例0:

if(buf = = 0x 23)I = 1;

打破;

案例1:

案例二:

案例三:

案例4:

案例5:

buffer[I-1]= buf;

i++;

if(buf==0x23)

I = 1;

如果(i==5)

{

do_something_here(緩沖);

I = 0;

}

打破;

默認值:I = 0;打破;

}

RI = 0;//RI被清除

}

if(TI = = 1)TI = 0;//TI清除

}

這種改變符合妳的思維習慣嗎?實際的串行協議分析與協議密切相關,最好使用狀態機。我把它變成程序裏的狀態機,想想,還不如換個程序。

  • 上一篇:船舶英語技術要求翻譯
  • 下一篇:判別分析的建立方法
  • copyright 2024編程學習大全網