为什么我的485接收多字节时出错??

[复制链接]
 楼主| xiaosuowen 发表于 2010-11-13 17:05 | 显示全部楼层 |阅读模式
我的RS485在上位机一个字节一个字节发送数据的时候,立马返回发送的数据都是正确的,但当多字节一起发送的时候就有问题,我本来是想上位机发送给单片机6个字节的数据,然后判断是否是自检信号,然后开始自检,但一直未能进入自检。。其中值为0x00的字节收到的正常但是0xFF等就不对了。。下面是我的发送函数
void Send_Char( char Char)
{
RS485_T;              //设置RS485为发送状态
SBUF=Char;            //发送数据
while(!TI);           //检测上一个字节是否发送完毕,及是否为发送下一字节做好准备
TI=0;                 //清楚发送中断标志位
}
 楼主| xiaosuowen 发表于 2010-11-13 17:05 | 显示全部楼层
Bao_R[Num_R]=SBUF;
Num_R++;                      //接收到数据需自检
RI=0;
这是我在接收中断里的语句
 楼主| xiaosuowen 发表于 2010-11-13 17:07 | 显示全部楼层
if((Bao_R[0]==0xFF)&&(Bao_R[1]==0xAA)&&(Bao_R[2]==0xA1)&&(Bao_R[3]==Bao_R[4]==Bao_R[5]==0x00))
{
自检
}
 楼主| xiaosuowen 发表于 2010-11-13 17:09 | 显示全部楼层
忘了说明:我的485在主循环里面是不断设置为接收状态的只有在向上发送数据包的时候才设置为发送状态。。谢谢大家,帮忙我看看啊
lengyueyw 发表于 2010-11-17 15:42 | 显示全部楼层
看一下你的Num_R是不是定义的全局变量
如果是写一个发送字符串的函数,把Bao_R[]发到PC机上,看看数据到底是什么
风云兄 发表于 2010-12-4 22:12 | 显示全部楼层
RS-485是半双工的通讯类型,感觉楼主的问题可能出在RS-485的收发控制时序上有问题,有可能是接收数据的时候你的收发控制信号还没有来得及切换到接收状态引起的。
lxpkaka 发表于 2010-12-22 10:48 | 显示全部楼层
自发自收一般要用2个485做吧
chunyang 发表于 2010-12-22 13:30 | 显示全部楼层
同时使能收发端就是自发自收。
XZL 发表于 2010-12-23 11:28 | 显示全部楼层
应该采用上位机查询下位机方式进行通讯!下位机接到指令后,要加入延时,确保主机进入接收状态!
485做双向通讯,关键还是协议!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

160

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部