找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机串口发送一个字节,为什么返回两个字节呢?

[复制链接]
跳转到指定楼层
楼主
ID:1093575 发表于 2023-9-14 23:20 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
串口设置了相同的传输速率,发送一个字节,应是返回一个字节,实际上返回了两个字节,请问哪里有问题呢

45c43dc5d4faded0.png (258.34 KB, 下载次数: 43)

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

使用道具 举报

沙发
ID:94031 发表于 2023-9-15 06:07 | 只看该作者
从你给的程序,说明不了你发一个字节应返回一个字节。
回复

使用道具 举报

板凳
ID:57657 发表于 2023-9-15 07:34 | 只看该作者
  SBUF = rev + 1;
    while (!TI);
    TI = 0;
回复

使用道具 举报

地板
ID:74687 发表于 2023-9-15 07:55 | 只看该作者
你去掉前面的0x
回复

使用道具 举报

5#
ID:227818 发表于 2023-9-15 08:00 | 只看该作者
发送缓冲区填不填0xFE,直接填FE试试?
回复

使用道具 举报

6#
ID:612392 发表于 2023-9-15 08:03 | 只看该作者
发送不要写0xfe,只写fe
回复

使用道具 举报

7#
ID:861694 发表于 2023-9-15 09:07 | 只看该作者
npn 发表于 2023-9-15 07:34
  SBUF = rev + 1;
    while (!TI);
    TI = 0;

可以说明一下这样改动的原因吗?
回复

使用道具 举报

8#
ID:94031 发表于 2023-9-15 10:57 | 只看该作者
你收到的数放在rev,发应该发rev而不是rev+1,你指定HEX模式直接写FE,不要写0x。

回复

使用道具 举报

9#
ID:1093575 发表于 2023-9-15 13:04 来自手机 | 只看该作者
谢谢大家了,恍然大悟。怪不得我仿真的时候在程序中发送可以接收到,而在串口发送却不能接收返回。我太爱你们了
回复

使用道具 举报

10#
ID:57657 发表于 2023-9-15 13:14 | 只看该作者
戡拤 发表于 2023-9-15 09:07
可以说明一下这样改动的原因吗?

等待字节发送完成,然后才可以发送下一个字节。
回复

使用道具 举报

11#
ID:1093575 发表于 2023-9-15 13:24 来自手机 | 只看该作者
xuyaqi 发表于 2023-9-15 10:57
你收到的数放在rev,发应该发rev而不是rev+1,你指定HEX模式直接写FE,不要写0x。

请问能用的proteus仿真吗?多少版本的。我用8.7版本的,从上位机发送,单片机还是接收不到字节
回复

使用道具 举报

12#
ID:1093575 发表于 2023-9-15 13:30 来自手机 | 只看该作者
xuyaqi 发表于 2023-9-15 10:57
你收到的数放在rev,发应该发rev而不是rev+1,你指定HEX模式直接写FE,不要写0x。

请问你用的proteus仿真吗?多少版本的。我用8.7版本的,从上位机发送,单片机还是接收不到字节
回复

使用道具 举报

13#
ID:1093575 发表于 2023-9-15 13:33 来自手机 | 只看该作者
我去掉0x后,在串口助手发送还是接收不到呢?
回复

使用道具 举报

14#
ID:1093575 发表于 2023-9-15 13:34 来自手机 | 只看该作者
使用仿真,在串口助手发送,单片机还是接收不到字节呢?

78{3`DF9~SH8{}2CSUQ]GE1(1).png (85.28 KB, 下载次数: 29)

78{3`DF9~SH8{}2CSUQ]GE1(1).png

44Y_Q4ZI47MCFDS[K314P@O(1).png (397.92 KB, 下载次数: 49)

44Y_Q4ZI47MCFDS[K314P@O(1).png
回复

使用道具 举报

15#
ID:77589 发表于 2023-9-15 17:32 | 只看该作者
linlandon 发表于 2023-9-15 13:34
使用仿真,在串口助手发送,单片机还是接收不到字节呢?

这种情况需要安装一个虚拟串口工具,虚拟出一对虚拟的串口,Protues中的P1的属性中,你选择这对虚拟串口中的一个,串口调试助手选择另外一个虚拟串口,这样才能正常通信。
回复

使用道具 举报

16#
ID:77589 发表于 2023-9-15 17:33 | 只看该作者

正解,不然串口调试助手就识别成两个字节了
回复

使用道具 举报

17#
ID:77589 发表于 2023-9-15 17:33 | 只看该作者
cjjdemon 发表于 2023-9-15 08:03
发送不要写0xfe,只写fe

正解,不然串口调试助手就识别成两个字节了
回复

使用道具 举报

18#
ID:1093575 发表于 2023-9-15 22:23 来自手机 | 只看该作者
谢谢大家,在大家帮助下终于搞定了,仿真也有回传,正常了
回复

使用道具 举报

19#
ID:94031 发表于 2023-9-16 06:05 | 只看该作者
linlandon 发表于 2023-9-15 13:24
请问能用的proteus仿真吗?多少版本的。我用8.7版本的,从上位机发送,单片机还是接收不到字节

我是直接用芯片运行,不是仿真。
回复

使用道具 举报

20#
ID:1040201 发表于 2023-9-16 08:56 | 只看该作者
发送不要写0x,只写fe
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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