小弟第一次些通信程序。
我的测试目的是:主机发送1给从机,从机接收到1后,给主机发送AD值。主机显示在LED上。主机使用定时器0中断动态显示动态led。问题是:他们不能通讯。
但是如果从机无条件主机发数据。主机接受显示就可以。
主机程序部分:
while(1)
{ Delay1ms(10); //z主机等待时间,。等待从机处在接受状态
EN=0; //使能发送。发送数据1到从机
Delay1ms(10);
SBUF=0X01;
while(TI==0);
TI=0;
Delay1ms(10);
EN=1; //接受
Delay1ms(10);
while(RI==0);
addr1=SBUF;
RI=0;
LED_show(addr1,11);//显示
}
}
从机程序部分:
while(1)
{
delay(10);
EN=0; //使能接受
delay(10);
while(RI==0);
temp=SBUF;
RI=0;
if(temp==1) //判断接受的是不是1.如果是1发送AD值
{
temp++;
delay(10); //发送间隔
TI=0;
EN=1; //使能发送
delay(10);
SBUF=r_dat[0];
while(!TI);
TI=0;
GET_AD(); //ad转换
}
主机通过光耦控制485芯片DS75176.从机直连的DS75176 |