用max485 51单片机多机通信问题

就是这张原理图,用串行口方式三,unsignedchari;P35=1;//发送TB8=1;//发送地址帧SBUF=0x02;delay(10);while(!TI);T... 就是这张原理图,用串行口方式三,
unsigned char i;

P35=1; //发送
TB8=1; //发送地址帧
SBUF=0x02;
delay(10);
while(!TI);
TI=0;
delay(10);

P35=0; //接收
while(!RI)
delay(10);
RI=0;
P2=SBUF;
这是主函数,置TB8为1,发送地址帧01,置从机SM2都为1,然后我在中断里比较地址
if(RB8)
{
if(SBUF==0x01) (2好从机为02)
{
RI=0;
SM2=0;
delay(10);
P35=1;//fasong
SBUF=0x12;
a=0x12;
while(!TI)
TI=0;
P35=0;
}
}
按说这样我如果发地址为01时数据应该是给01机子的,但是两个机子都有数据,求大神指点,或者给我个例子我看看。。。。。。。
展开
 我来答
做而论道
高能答主

推荐于2016-09-23 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
多机通信,不一定画上 MAX485,直接连接,就可以实验程序了。

前面初始化,已经是 SM2=1,只能收到 TB8=1 的数据。
所以,程序中,并不需要再判断 RB8 是否为一。

;-------------------
if (RI) {
RI = 0;
a = SBUF;
if(a == 0x01) { // (2好从机为02)
SM2 = 0;
delay(10);
P35 = 1; //fasong
SBUF = 0x12;
while(!TI); //--楼主这里漏掉了分号
TI = 0;
P35 = 0;
SM2 = 1; //继续设置为仅收取 TB8=1 的状态
}
}

参考:

http://hi.baidu.com/do_sermon/item/46b7c92b103d24cea4275a77
一万光年MEGn0
2013-07-25 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1036万
展开全部
485多机通信,其实用方式1更方便,不需用方式3.
从机需要确定一个地址,主机通过地址区分不同从机。

另发送需要控制485的方向。
追问
方式一怎么实现多机通信??!怎么确定是地址。??!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-25
展开全部
你的程序有点复杂化了吧
追问
你会吗,指点我一下。。给我个例子撒
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式