标题: 单片机串口通讯中SBUF接收发送的数据是怎样的? [打印本页]

作者: a372242775    时间: 2023-6-5 20:31
标题: 单片机串口通讯中SBUF接收发送的数据是怎样的?
新手求助一下各位大神
想问一问串口通讯中SBUF接收发送的数据是怎样形式的 就好像我在电脑上输入数字“1”, SBUF里接收的是什么类型的数据
接收到这个数据能用来直接使用吗 就好像下图一样 得到的数据好像和我想要的有出入。。。



作者: csmyldl    时间: 2023-6-6 00:43
电脑里输入1 ,如果是HEX数据模式发送,接收的是0x01,可以直接使用,如果是文本模式发送,接收的是0x31,需要减去0x30才可以直接使用
作者: xuyaqi    时间: 2023-6-6 10:48
SBUF里接收的数据是二进制8位,是什么类型,由收发双方协议,可以是ASCII字符,也可以是无符号整数或其他什么。
作者: a372242775    时间: 2023-6-6 10:54
csmyldl 发表于 2023-6-6 00:43
电脑里输入1 ,如果是HEX数据模式发送,接收的是0x01,可以直接使用,如果是文本模式发送,接收的是0x31,需 ...

感谢 学习了 确实是这样的 还有一个问题就是 串口中文本模式怎么输入‘10’两位甚至3位的数呢,像没设置的输入'10' 返回的都是乱码
作者: yzwzfyz    时间: 2023-6-6 15:38
你缺的知识太多。
1、先看二进制数,了解一个字节。
2、再看数字的串行表达方式。
3、了解串行协议
4、了解数据格式:BIN、HEX、ASCII。
作者: 5t511    时间: 2023-6-6 15:56
SBUF 是串行数据缓冲器的全称。在串口通讯中,当 CPU 向 SBUF 写入数据时,99H 表示发送 SBUF;当 CPU 从 SBUF 读出数据时,99H 表示接收 SBUF 1。SBUF 读出的数据类型是 unsigned char,取值范围是 0-255(16 进制 0x00 - 0xff)2。  如果你在电脑上输入数字“1”,单片机实际接收到的数据是 0x31(1 对应的 ASCII 码)2。你可以根据实际情况来决定是否直接使用接收到的数据。
作者: 5t511    时间: 2023-6-6 15:56
SBUF 是串行数据缓冲器的全称。在串口通讯中,当 CPU 向 SBUF 写入数据时,99H 表示发送 SBUF;当 CPU 从 SBUF 读出数据时,99H 表示接收 SBUF 1。SBUF 读出的数据类型是 unsigned char,取值范围是 0-255(16 进制 0x00 - 0xff)2。

如果你在电脑上输入数字“1”,单片机实际接收到的数据是 0x31(1 对应的 ASCII 码)2。你可以根据实际情况来决定是否直接使用接收到的数据。
作者: a372242775    时间: 2023-6-6 16:32
5t511 发表于 2023-6-6 15:56
SBUF 是串行数据缓冲器的全称。在串口通讯中,当 CPU 向 SBUF 写入数据时,99H 表示发送 SBUF;当 CPU 从 S ...

谢谢你的解答 你说的这些已经去了解过了 也解决了我的问题 就是还有个问题能帮忙解答一下吗
就是我的程序设置只能单字节的输入和读取,
如果我输入“10”两个字节的数据就会乱码,
然后我自己去了解了多字节的串口收发,大概就是设置一个数组,数组可以接收N个数据,
在串口中断时,数据存入数组,当数组达到N时,在根据主函数来发送,数组清空,这样的循环来做
但是程序一直不能收发

作者: li64331218    时间: 2023-6-6 16:41
就是数据类型定义的问题。搞清楚就好了





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1