![]() |
發布時間: 2022-4-11 14:35
正文摘要:如何改正請指點 發送程序 /************************************************************************************** &nbs ... |
machaore130 發表于 2022-4-13 11:05 我改的代碼也是查詢RI啊~ |
lkc8210 發表于 2022-4-12 00:04 這樣啊。您是想讓我用中斷方式(發送或接受完畢觸發串行口中斷)代替查詢方式(查詢RI和TI)以免因為while函數的缺陷卡在不必要的地方是嗎?我一直在糾結如何發送大于255的數實現多字節發送沒有關注到這一問題。 |
machaore130 發表于 2022-4-11 16:23 不是~ 你要把v的賦值動作放到while(1)里 放到while(1)之前只會賦值一次 而Receive()里有while(RI==0) 有機會死循環 所以改成回貼那樣 |
machaore130 發表于 2022-4-11 16:23 串口每次只能發送1個字節,如果V大于1個字節(255)就要按字節數量拆分,分多次傳輸。假設V=0x012c. 拆分V1=0x012c>>8;V2=0x012c;(高8位溢出,V2實際=0x2c),接收端再把兩個字節合并還原:V=V1<<8|V2; |
感謝您的解答。我能理解您的意思,您是想表明先給v賦值判斷v賦值完成后再進行顯示,這樣程序會更加嚴謹。但因為我不夠專業,程序可能存在問題較大。在改正后,仍不能將使得兩個數碼管顯示一樣的數字。說明發送函數和接收函數有問題。可能是因為SBUF僅有一個字節無法滿足要求也許我需要學習用多個字節按位表示一個數逐位發送才會達到要求。再次感謝您的幫助。 |
|