![]() |
發布時間: 2023-6-5 20:31
正文摘要:新手求助一下各位大神 想問一問串口通訊中SBUF接收發送的數據是怎樣形式的 就好像我在電腦上輸入數字“1”, SBUF里接收的是什么類型的數據 接收到這個數據能用來直接使用嗎 就好像下圖一樣 得到的數據好像和我想 ... |
就是數據類型定義的問題。搞清楚就好了 |
5t511 發表于 2023-6-6 15:56 謝謝你的解答 你說的這些已經去了解過了 也解決了我的問題 就是還有個問題能幫忙解答一下嗎 就是我的程序設置只能單字節的輸入和讀取, 如果我輸入“10”兩個字節的數據就會亂碼, 然后我自己去了解了多字節的串口收發,大概就是設置一個數組,數組可以接收N個數據, 在串口中斷時,數據存入數組,當數組達到N時,在根據主函數來發送,數組清空,這樣的循環來做 但是程序一直不能收發 |
SBUF 是串行數據緩沖器的全稱。在串口通訊中,當 CPU 向 SBUF 寫入數據時,99H 表示發送 SBUF;當 CPU 從 SBUF 讀出數據時,99H 表示接收 SBUF 1。SBUF 讀出的數據類型是 unsigned char,取值范圍是 0-255(16 進制 0x00 - 0xff)2。 如果你在電腦上輸入數字“1”,單片機實際接收到的數據是 0x31(1 對應的 ASCII 碼)2。你可以根據實際情況來決定是否直接使用接收到的數據。 |
SBUF 是串行數據緩沖器的全稱。在串口通訊中,當 CPU 向 SBUF 寫入數據時,99H 表示發送 SBUF;當 CPU 從 SBUF 讀出數據時,99H 表示接收 SBUF 1。SBUF 讀出的數據類型是 unsigned char,取值范圍是 0-255(16 進制 0x00 - 0xff)2。 如果你在電腦上輸入數字“1”,單片機實際接收到的數據是 0x31(1 對應的 ASCII 碼)2。你可以根據實際情況來決定是否直接使用接收到的數據。 |
你缺的知識太多。 1、先看二進制數,了解一個字節。 2、再看數字的串行表達方式。 3、了解串行協議 4、了解數據格式:BIN、HEX、ASCII。 |
csmyldl 發表于 2023-6-6 00:43 感謝 學習了 確實是這樣的 還有一個問題就是 串口中文本模式怎么輸入‘10’兩位甚至3位的數呢,像沒設置的輸入'10' 返回的都是亂碼 |
SBUF里接收的數據是二進制8位,是什么類型,由收發雙方協議,可以是ASCII字符,也可以是無符號整數或其他什么。 |
電腦里輸入1 ,如果是HEX數據模式發送,接收的是0x01,可以直接使用,如果是文本模式發送,接收的是0x31,需要減去0x30才可以直接使用 |