找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机串口通讯中SBUF接收发送的数据是怎样的?

查看数: 2148 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-6-5 20:31

正文摘要:

新手求助一下各位大神 想问一问串口通讯中SBUF接收发送的数据是怎样形式的 就好像我在电脑上输入数字“1”, SBUF里接收的是什么类型的数据 接收到这个数据能用来直接使用吗 就好像下图一样 得到的数据好像和我想 ...

回复

ID:291668 发表于 2023-6-6 16:41
就是数据类型定义的问题。搞清楚就好了
ID:1081798 发表于 2023-6-6 16:32
5t511 发表于 2023-6-6 15:56
SBUF 是串行数据缓冲器的全称。在串口通讯中,当 CPU 向 SBUF 写入数据时,99H 表示发送 SBUF;当 CPU 从 S ...

谢谢你的解答 你说的这些已经去了解过了 也解决了我的问题 就是还有个问题能帮忙解答一下吗
就是我的程序设置只能单字节的输入和读取,
如果我输入“10”两个字节的数据就会乱码,
然后我自己去了解了多字节的串口收发,大概就是设置一个数组,数组可以接收N个数据,
在串口中断时,数据存入数组,当数组达到N时,在根据主函数来发送,数组清空,这样的循环来做
但是程序一直不能收发
ID:1082368 发表于 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。你可以根据实际情况来决定是否直接使用接收到的数据。
ID:1082368 发表于 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。你可以根据实际情况来决定是否直接使用接收到的数据。
ID:123289 发表于 2023-6-6 15:38
你缺的知识太多。
1、先看二进制数,了解一个字节。
2、再看数字的串行表达方式。
3、了解串行协议
4、了解数据格式:BIN、HEX、ASCII。
ID:1081798 发表于 2023-6-6 10:54
csmyldl 发表于 2023-6-6 00:43
电脑里输入1 ,如果是HEX数据模式发送,接收的是0x01,可以直接使用,如果是文本模式发送,接收的是0x31,需 ...

感谢 学习了 确实是这样的 还有一个问题就是 串口中文本模式怎么输入‘10’两位甚至3位的数呢,像没设置的输入'10' 返回的都是乱码
ID:94031 发表于 2023-6-6 10:48
SBUF里接收的数据是二进制8位,是什么类型,由收发双方协议,可以是ASCII字符,也可以是无符号整数或其他什么。
ID:235200 发表于 2023-6-6 00:43
电脑里输入1 ,如果是HEX数据模式发送,接收的是0x01,可以直接使用,如果是文本模式发送,接收的是0x31,需要减去0x30才可以直接使用

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表