51单片机串口怎么样才能实现全双工通讯

例如:我发送一大串字符串如7B BC CD 03 77 BB DD EE FF AA BB CC, 在到达03这段数据的时候,实时发送7b bc cd 03出去。

首先要明确全双工通信方式的具体含义:全双工方式需要通信双方连接两条传输线(共地),一条是将数据从甲方送到乙方,另外一条是从乙方送到甲方。就是甲乙双方各自对应一发一收,51单片机上是有一个全双工的串行接口的,可以用两条传输线实现双向同时传送。
就你说的问题,我看得不是很明白,但是一个单片机不能同时两条线上都是发送(或接受)的,这点是肯定的。追问

我想我问得还不太清楚:首先上位机发送一段指令,如ab bc bd 03 66 77 88 99 00。单片机上接收到03时,就马上发送03前面的4个byte(ab bc bd 03)。剩下的未接收的byte继续完成接收。现在我这段代码已经完成了,可是有个问题,当我发送完后,剩下的没接收完的串口数据不能在接收了,只有等下上位机再发送数据的时候才把之前没接收的数据发过来。

上述的03前面的4个byte是返回给上位机的.如果问题点还是不太明白,那跪求全双工串口实例,分数再提高30

追答

问题我看懂了,就根据我前面所说的,单片机是可以完成双向同步收发数据的,估计是你写的代码有问题。我现在手上也没有全双工的示例代码,建议你去网上找找范例学习一下再对你的代码进行改进。

追问

现在遇到的问题是发送和接收的buf有冲突,这个你以前有没有遇到

追答

我刚也去查了下资料,说是一般8位单片机是单线程处理,如果是模拟接收发送的话是无法做到全双工通信的,但是单片机里有UART,虽然只有一个SBUF,但在物理上是两个寄存器,可以完成全双工通信的。
具体看:http://zhidao.baidu.com/question/529128530.html

追问

很感谢你,不过我还是看看吧

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网