RS485总线双路通信只有一个从机能接受并反馈主机信号,另一个不行怎么办?

求大佬解答:我想要向两个从机发送信号,让他们接收到信号之后给我反馈数据,反馈的数据在LCD1602上面不同位置显示出来。结果同样的代码,从机1能接收到主机发出信号,并反馈数据;从机2不能接收到主机信号也不能反馈数据,LCD上面在不同位置显示了从机1的反馈数据。(用的keil和proteus)

主机:

void master(void)
{
	uint8 temp,temp1,temp2,temp3,temp4;
	int i=1;
	while(i<3)
	{
		if(i==1)
		{	
			en=1;
			SBUF = 0x01;
			while(TI!=1);TI=0;
			
			en=0;
			delay1ms();
			c = SBUF;while(RI!=1);RI=0;
			
			temp=c;
			temp1 = temp/10;
			temp2 = temp%10;
			Write_cmd(0x80);
			Write_dat(temp1+0x30);
			Write_dat(temp2+0x30);
			Write_dat(0xdf);
			Write_dat(0x43);
			i=i+1;
			delay1ms();
			delay1ms();
		}
		else if(i==2)
		{
			en=1;
			SBUF = 0x02;
			while(TI!=1);TI=0;
			
			en=0;
			delay1ms();
			d = SBUF;while(RI!=1);RI=0;	
			temp=d;
			temp3 = temp/10;
			temp4 = temp%10;
			Write_cmd(0xc0);
			Write_dat(temp3+0x30);
			Write_dat(temp4+0x30);
			Write_dat(0xdf);
			Write_dat(0x43);
			i=1;
			delay1ms();
			delay1ms();
		}
	}	
}

从机1:

void master(void)
{
	en=0;
	ES=0;
	m=SBUF;
	while(RI!=0);RI=0;
	if(m==0x01)
	{
		en=1;
		LED=0;	
		c=ReadTemperature();
		SBUF= c;
		while(TI!=1);
		TI=0;
		ES=1;
	}
	else 
	{	
		ES=1;
		en=0;
	}
	
}

从机2:

void master(void)
{
	en=0;
	ES=0;
	n=SBUF;
	while(RI!=0);RI=0;
	if(n==0x02)
	{
		en=1;
		LED=0;
		c=ReadTemperature();
		SBUF= c;
		while(TI!=1);
		TI=0;
		ES=1;
	}
	else 
	{
		ES=1;
		en=0;
	}	
}

 

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^