![]() |
發(fā)布時間: 2023-6-7 17:23
正文摘要:判斷從串口接收到的兩個字節(jié),即4位16進制的數(shù)據(jù),如果第一個字節(jié)對了led1亮然后判斷第二個,第二個字節(jié)對了led3亮。 但是令我很好奇的是某些數(shù)據(jù)是對的,另一些卻不能正確判斷 如fafb, e1d1 ,等,燈可以正常亮起 ... |
劉宇杰找實訓 發(fā)表于 2023-6-7 21:04 謝謝解答 |
串口中斷函數(shù)接收第一個字節(jié)之后,開啟定時器計數(shù)。接受下一個字節(jié)的時候清空定時器計數(shù)。如此,當沒有數(shù)據(jù)接收后,計時器無法清零,當計時器計數(shù)超過設(shè)定的數(shù)值之后,觸發(fā)定時器溢出中斷,此時數(shù)據(jù)即接收完畢 |
xuyaqi 發(fā)表于 2023-6-7 18:27 判斷和LED處理已放進主循環(huán),并且僅判斷一個字節(jié)。 仍只有部分數(shù)據(jù)led1可正常亮起,如ff.fb等 請問這是什么原因呢?我該如何解決嘞。求大佬指點 這是修改后的程序 void main() { UART_init(); //串口初始化 while(1) { if(num1==0x5A) { led1=0; //第一個字節(jié)對了之后led1亮 } else led1=1; } } void UART() interrupt 4 { while(!RI); //檢測是否接收完成 RI = 0; num1 = SBUF; } |
在串口中斷里應(yīng)該只處理數(shù)據(jù)接收,LED處理放在main循環(huán)里,不要因為LED處理影響數(shù)據(jù)接收。 |
Powered by 單片機教程網(wǎng)