本帖最后由 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;
-
-
- }
- }
|