具体来说,232转485接反会导致数据传输的极性相反,因此如果在发送端和接收端都没有进行相应的处理,则数据无法正常传输。此时,可能出现以下情况:
1. 数据传输错误:由于极性相反,数据无法正确传输,导致接收到的数据与发送的数据不一致。
2. 没有数据传输:由于极性相反,数据无法通过串口线路传输,导致接收端没有接收到任何数据。
要解决这个问题,可以考虑以下几种方法:
1. 修改接线:将232转485的RXD和TXD引脚交换连接即可。
2. 在软件中进行调整:通过设置相应的参数,对不同的串口进行极性反转等 *** 作,使数据能够正常传输。
3. 使用专用的设备:使用支持自动极性判断、自动调整的485转232/485转USB转换器等设备,能够避免因接线错误导致的传输问题。
在任何情况下,建议在进行接线之前,仔细检查线路和设备的规格和参数,以确保正确连接并防止硬件损坏。
RS232接口是点对点的协议,本来不能有两个TX端接到一个线路上的。当2端TX在发送数据的时候,驱动会把线路下拉到RS232低电平;而这个时候3端TX是没有数据发送的,3端的TX要输出RS232高电平。这样就形成了短路。如果你一定要采用这样的电路,可以在2端和3端的TX上,分别串联一个电阻,然后再连接起来。但是加上串联电阻会影响回传的数据的速率。
你的程序有两个问题,一是波特率计算错误,串口方式1用T1的方式2控制波特率,与传统51是完全兼容的。而你的TH1,TL1初始值的计算是时钟不分频的方式,需要设置AUXR寄存器才行。二是串口中断程序中的判断错误,电脑发送的1是字符,所以应改为
if(ReceiveData == '1')//1是字符
{ ReceiveData = ReceiveData + 1}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)