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

2019-07-15 12:37发布

使用串口调试助手做串口通信,使用的单片机型号是STC15F2K60S2,写了一个返回接收到的数据的程序,然而,实际调试时,两位数的可以正常接收显示,一旦发送3位数,串口就只能接收到分开的数据,比如用串口调试助手发送111,接收回来显示的是11  01,试过好多次都是这样。求助大神请问是哪里出问题了呢?
调试助手 调试助手
串口初始化 串口初始化
串口发送字节 串口发送字节
串口中断服务程序 串口中断服务程序
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
blust
1楼-- · 2019-07-15 16:02
 精彩回答 2  元偷偷看……
blust
2楼-- · 2019-07-15 16:10
本帖最后由 blust 于 2016-11-14 11:45 编辑

你调试时选择的是HEX模式,这个模式是十六进制表示的,你发11时其实不是发送的11,而是十六进制数0x11,换成十进制数就是17,是一个字节,所以不会错。但是你发111时,按照十六进制的解析就是前一个字节是0x11,后一个字节由于你只输了一位,默认高位为0,就是0x01,所以你接收到的就是11 01 ,并没有错误。
blust
3楼-- · 2019-07-15 20:02
如果你发送区接收区都选成文本模式,就不会出现这个情况了。
黑眼圈红了
4楼-- · 2019-07-15 21:16
blust 发表于 2016-11-14 11:44
如果你发送区接收区都选成文本模式,就不会出现这个情况了。

试了,发送文本模式的话有时候能接到有时候接不到完整数据,比如我发一个120过去,接收到的是12。
黑眼圈红了
5楼-- · 2019-07-16 01:30
blust 发表于 2016-11-14 11:44
你调试时选择的是HEX模式,这个模式是十六进制表示的,你发11时其实不是发送的11,而是十六进制数0x11,换成十进制数就是17,是一个字节,所以不会错。但是你发111时,按照十六进制的解析就是前一个字节是0x11,后一个字节由于你只输了一位,默认高位为0,就是0x01,所以你接收到的就是11 01 ,并没有错误。 ...

意思就是我选择HEX模式发送的话,那我写进缓存区的数据就是用十六进制表示的是吧,我这样试了一下,发送一个字节最大的数FF,确实是可以接收回来的。
blust
6楼-- · 2019-07-16 07:00
 精彩回答 2  元偷偷看……

一周热门 更多>