求助单片机串口通信的问题

2019-07-15 12:37发布

使用串口调试助手做串口通信,使用的单片机型号是STC15F2K60S2,写了一个返回接收到的数据的程序,然而,实际调试时,两位数的可以正常接收显示,一旦发送3位数,串口就只能接收到分开的数据,比如用串口调试助手发送111,接收回来显示的是11  01,试过好多次都是这样。求助大神请问是哪里出问题了呢?
调试助手 调试助手
串口初始化 串口初始化
串口发送字节 串口发送字节
串口中断服务程序 串口中断服务程序
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
mingmingge8991
1楼-- · 2019-07-16 12:34
你的程序没有问题,你在发送的时候是发送的16进制数据,你输入的是111其实系统默认变成1101 。你输入11 01 结果也一样。至于你在文本模式下,有时候能接受到有时不能接受到应该是你单片机没有处理过来,因为你在接收里有在发送,建议你做数据断帧处理,然后将接收到数据全部发送出去。数据断帧处理代码你要的话可以免费提供(95186869@qq.com)
zlj2008
2楼-- · 2019-07-16 13:36
楼上解释的精辟
黑眼圈红了
3楼-- · 2019-07-16 17:49
blust 发表于 2016-11-14 15:32
你是在接收中断里面直接调用发送函数,在连续接收时可能会导致数据发送与接收冲突,从而丢失数据。最好是在接收中断里做一个标志位,然后在主程序里面调用发送函数。或者等一组数据接收完之后再整体发送回去。

恍然大悟.jpg   谢谢指导。
黑眼圈红了
4楼-- · 2019-07-16 23:00
mingmingge8991 发表于 2016-11-14 23:13
你的程序没有问题,你在发送的时候是发送的16进制数据,你输入的是111其实系统默认变成1101 。你输入11 01 结果也一样。至于你在文本模式下,有时候能接受到有时不能接受到应该是你单片机没有处理过来,因为你在接收里有在发送,建议你做数据断帧处理,然后将接收到数据全部发送出去。数据断帧处理代码你要的话可以免费提供 ...

谢谢,如果可以的话,代码我也想要。
hong_ace
5楼-- · 2019-07-16 23:19
 精彩回答 2  元偷偷看……

一周热门 更多>