求大佬解答:我想要向两个从机发送信号,让他们接收到信号之后给我反馈数据,反馈的数据在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==1)
{
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==2)
{
en=1;
LED=0;
c=ReadTemperature();
SBUF= c;
while(TI!=1);
TI=0;
ES=1;
}
else
{
ES=1;
en=0;
}
}
看看这个是否对你有帮助,参考资料:https://blog.csdn.net/winkyxiao1981/article/details/6386390
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y