本帖最后由 jin1song 于 2012-7-7 17:06 编辑
综合大家的意见把程序改了一下,接收用中断,发送在主程序。
自动发送间隔30ms,发一会就收不到数据了,中间如果插入手动发送也会收不到数据。收数失败应该如何处理,这个问题请教?
void interrupt_uart0() interrupt 4
{
for(a=0;a<6;a++)
{
while(RI0==0);
RI0=0;
DE=0;
recdata[a]=SBUF0;
flag=1;
}
}
void main()
{
uint i;
PCA0MD &=~0x40;//*PCA0MD:PCA方式寄存器。关看门狗*//
Init_Device();
while(1)
{ DE=0;
if(flag==1)
{
flag=0;
if(recdata[4] ==(((recdata[0]^recdata[1])^recdata[2])^recdata[3]))
{ES0=0;
EA=0;
senddata_driver();
for(i=0;i<10000;i++);
transmit_RS485();
ES0=1;
EA=1;}
else
{
for(i=0;i<6;i++)
{
recdata=0;
}
}
}
DE=0;
}
}
|