找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

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

正文摘要:

串口设置了相同的传输速率,发送一个字节,应是返回一个字节,实际上返回了两个字节,请问哪里有问题呢

回复

ID:1040201 发表于 2023-9-16 08:56
发送不要写0x,只写fe
ID:94031 发表于 2023-9-16 06:05
linlandon 发表于 2023-9-15 13:24
请问能用的proteus仿真吗?多少版本的。我用8.7版本的,从上位机发送,单片机还是接收不到字节

我是直接用芯片运行,不是仿真。
ID:1093575 发表于 2023-9-15 22:23
谢谢大家,在大家帮助下终于搞定了,仿真也有回传,正常了
ID:77589 发表于 2023-9-15 17:33
cjjdemon 发表于 2023-9-15 08:03
发送不要写0xfe,只写fe

正解,不然串口调试助手就识别成两个字节了
ID:77589 发表于 2023-9-15 17:33

正解,不然串口调试助手就识别成两个字节了
ID:77589 发表于 2023-9-15 17:32
linlandon 发表于 2023-9-15 13:34
使用仿真,在串口助手发送,单片机还是接收不到字节呢?

这种情况需要安装一个虚拟串口工具,虚拟出一对虚拟的串口,Protues中的P1的属性中,你选择这对虚拟串口中的一个,串口调试助手选择另外一个虚拟串口,这样才能正常通信。
ID:1093575 发表于 2023-9-15 13:33
我去掉0x后,在串口助手发送还是接收不到呢?
ID:1093575 发表于 2023-9-15 13:30
xuyaqi 发表于 2023-9-15 10:57
你收到的数放在rev,发应该发rev而不是rev+1,你指定HEX模式直接写FE,不要写0x。

请问你用的proteus仿真吗?多少版本的。我用8.7版本的,从上位机发送,单片机还是接收不到字节
ID:1093575 发表于 2023-9-15 13:24
xuyaqi 发表于 2023-9-15 10:57
你收到的数放在rev,发应该发rev而不是rev+1,你指定HEX模式直接写FE,不要写0x。

请问能用的proteus仿真吗?多少版本的。我用8.7版本的,从上位机发送,单片机还是接收不到字节
ID:57657 发表于 2023-9-15 13:14
戡拤 发表于 2023-9-15 09:07
可以说明一下这样改动的原因吗?

等待字节发送完成,然后才可以发送下一个字节。
ID:1093575 发表于 2023-9-15 13:04
谢谢大家了,恍然大悟。怪不得我仿真的时候在程序中发送可以接收到,而在串口发送却不能接收返回。我太爱你们了
ID:94031 发表于 2023-9-15 10:57
你收到的数放在rev,发应该发rev而不是rev+1,你指定HEX模式直接写FE,不要写0x。

ID:861694 发表于 2023-9-15 09:07
npn 发表于 2023-9-15 07:34
  SBUF = rev + 1;
    while (!TI);
    TI = 0;

可以说明一下这样改动的原因吗?
ID:612392 发表于 2023-9-15 08:03
发送不要写0xfe,只写fe
ID:227818 发表于 2023-9-15 08:00
发送缓冲区填不填0xFE,直接填FE试试?
ID:74687 发表于 2023-9-15 07:55
你去掉前面的0x
ID:57657 发表于 2023-9-15 07:34
  SBUF = rev + 1;
    while (!TI);
    TI = 0;
ID:94031 发表于 2023-9-15 06:07
从你给的程序,说明不了你发一个字节应返回一个字节。

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

Powered by 单片机教程网

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