找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1671|回复: 8
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
新手求助一下各位大神
想问一问串口通讯中SBUF接收发送的数据是怎样形式的 就好像我在电脑上输入数字“1”, SBUF里接收的是什么类型的数据
接收到这个数据能用来直接使用吗 就好像下图一样 得到的数据好像和我想要的有出入。。。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235200 发表于 2023-6-6 00:43 | 只看该作者
电脑里输入1 ,如果是HEX数据模式发送,接收的是0x01,可以直接使用,如果是文本模式发送,接收的是0x31,需要减去0x30才可以直接使用
回复

使用道具 举报

板凳
ID:94031 发表于 2023-6-6 10:48 | 只看该作者
SBUF里接收的数据是二进制8位,是什么类型,由收发双方协议,可以是ASCII字符,也可以是无符号整数或其他什么。
回复

使用道具 举报

地板
ID:1081798 发表于 2023-6-6 10:54 | 只看该作者
csmyldl 发表于 2023-6-6 00:43
电脑里输入1 ,如果是HEX数据模式发送,接收的是0x01,可以直接使用,如果是文本模式发送,接收的是0x31,需 ...

感谢 学习了 确实是这样的 还有一个问题就是 串口中文本模式怎么输入‘10’两位甚至3位的数呢,像没设置的输入'10' 返回的都是乱码
回复

使用道具 举报

5#
ID:123289 发表于 2023-6-6 15:38 | 只看该作者
你缺的知识太多。
1、先看二进制数,了解一个字节。
2、再看数字的串行表达方式。
3、了解串行协议
4、了解数据格式:BIN、HEX、ASCII。
回复

使用道具 举报

6#
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。你可以根据实际情况来决定是否直接使用接收到的数据。
回复

使用道具 举报

7#
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。你可以根据实际情况来决定是否直接使用接收到的数据。
回复

使用道具 举报

8#
ID:1081798 发表于 2023-6-6 16:32 | 只看该作者
5t511 发表于 2023-6-6 15:56
SBUF 是串行数据缓冲器的全称。在串口通讯中,当 CPU 向 SBUF 写入数据时,99H 表示发送 SBUF;当 CPU 从 S ...

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

使用道具 举报

9#
ID:291668 发表于 2023-6-6 16:41 | 只看该作者
就是数据类型定义的问题。搞清楚就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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