标题: 单片机串口发送一个字节,为什么返回两个字节呢? [打印本页]

作者: linlandon    时间: 2023-9-14 23:20
标题: 单片机串口发送一个字节,为什么返回两个字节呢?
串口设置了相同的传输速率,发送一个字节,应是返回一个字节,实际上返回了两个字节,请问哪里有问题呢

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

45c43dc5d4faded0.png

作者: xuyaqi    时间: 2023-9-15 06:07
从你给的程序,说明不了你发一个字节应返回一个字节。
作者: npn    时间: 2023-9-15 07:34
  SBUF = rev + 1;
    while (!TI);
    TI = 0;
作者: zyftank    时间: 2023-9-15 07:55
你去掉前面的0x
作者: newlined    时间: 2023-9-15 08:00
发送缓冲区填不填0xFE,直接填FE试试?
作者: cjjdemon    时间: 2023-9-15 08:03
发送不要写0xfe,只写fe
作者: 戡拤    时间: 2023-9-15 09:07
npn 发表于 2023-9-15 07:34
  SBUF = rev + 1;
    while (!TI);
    TI = 0;

可以说明一下这样改动的原因吗?
作者: xuyaqi    时间: 2023-9-15 10:57
你收到的数放在rev,发应该发rev而不是rev+1,你指定HEX模式直接写FE,不要写0x。


作者: linlandon    时间: 2023-9-15 13:04
谢谢大家了,恍然大悟。怪不得我仿真的时候在程序中发送可以接收到,而在串口发送却不能接收返回。我太爱你们了
作者: npn    时间: 2023-9-15 13:14
戡拤 发表于 2023-9-15 09:07
可以说明一下这样改动的原因吗?

等待字节发送完成,然后才可以发送下一个字节。
作者: linlandon    时间: 2023-9-15 13:24
xuyaqi 发表于 2023-9-15 10:57
你收到的数放在rev,发应该发rev而不是rev+1,你指定HEX模式直接写FE,不要写0x。

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

请问你用的proteus仿真吗?多少版本的。我用8.7版本的,从上位机发送,单片机还是接收不到字节
作者: linlandon    时间: 2023-9-15 13:33
我去掉0x后,在串口助手发送还是接收不到呢?
作者: linlandon    时间: 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

作者: Longan.Wang    时间: 2023-9-15 17:32
linlandon 发表于 2023-9-15 13:34
使用仿真,在串口助手发送,单片机还是接收不到字节呢?

这种情况需要安装一个虚拟串口工具,虚拟出一对虚拟的串口,Protues中的P1的属性中,你选择这对虚拟串口中的一个,串口调试助手选择另外一个虚拟串口,这样才能正常通信。
作者: Longan.Wang    时间: 2023-9-15 17:33
zyftank 发表于 2023-9-15 07:55
你去掉前面的0x

正解,不然串口调试助手就识别成两个字节了
作者: Longan.Wang    时间: 2023-9-15 17:33
cjjdemon 发表于 2023-9-15 08:03
发送不要写0xfe,只写fe

正解,不然串口调试助手就识别成两个字节了
作者: linlandon    时间: 2023-9-15 22:23
谢谢大家,在大家帮助下终于搞定了,仿真也有回传,正常了
作者: xuyaqi    时间: 2023-9-16 06:05
linlandon 发表于 2023-9-15 13:24
请问能用的proteus仿真吗?多少版本的。我用8.7版本的,从上位机发送,单片机还是接收不到字节

我是直接用芯片运行,不是仿真。
作者: liucan2020    时间: 2023-9-16 08:56
发送不要写0x,只写fe




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