就是数据类型定义的问题。搞清楚就好了 |
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才可以直接使用 |