完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以下是我的程序。请问为什么发送三个字符以上后就会丢失,接收不完整啊?
发送机:发送机有两个串口,UART1,UART2,UART1与主机通信为1200,UART2与接收机通信为1200 void TRA_SER(void) { S2BUF=temp1; while((S2CON&0x02)==0)//if S2ti { _nop_(); } S2CON&=0xFD; while((S2CON&0x01)==0)//if S2RI { _nop_(); } S2CON&=0xFE; temp2=S2BUF; SBUF=temp2; } void main(void) { SCON=0x50;//MODE 1,REN=1 S2CON=0x50;//MODE 1,REN2=1 TMOD|=0x20; //TIMER1,MODE 2,8bit reload PCON&=0x7F; //SMOD=0 AUXR=0x10; //BRT enable,s2mod=0,brtX12=0,T1X12=0 TH1=0xE8; //11.0592 1200 BRT=0xE8; TR1=1; EA=1; ES=1; while(1) { } } void UART_SER(void) interrupt 4 { if(RI) { RI=0; temp1=SBUF; TRA_SER(); SBUF=temp2; } if(TI) { TI=0; } } 接收机: void main(void) { S2CON=0x50; AUXR=0x10; BRT=0xE8; EA=1; IE2|=0x01; while(1) { } } void UART_SER(void) interrupt 8 { if((S2CON&0x01)==1) { S2CON&=0xFE; temp=S2BUF; S2BUF=temp; } if((S2CON&0x02)==1) { S2CON&=0xFD; } } 想实现用主机传送一串字符,通过1单片机传送给另一单片机,并返回。 请问有谁可以帮忙看看,为什么我发送“abc”接收到“ab”,发送“abcdef”接收到“abef”----会丢失啊?? |
|
相关推荐
7个回答
|
|
我修改了程序,可以接收数据不会丢失。先用数组储存,然后一个一个发送和接收。但只能发送固定长度的字符串。有没有办法可以发送任意长度的并且不会丢失的方法啊? unsigned char temp1[4],temp2; unsigned char flag; int i; void main(void) { unsigned char j=0; unsigned char k; SCON=0x50;//MODE 1,REN=1 S2CON=0x50;//MODE 1,REN2=1 TMOD|=0x20; //TIMER1,MODE 2,8bit reload PCON&=0x7F; //SMOD=0 AUXR=0x10; //BRT enable,s2mod=0,brtX12=0,T1X12=0 TH1=0xE8; //11.0592 1200 BRT=0xE8; TR1=1; EA=1; ES=1; while(1) { if(flag==1) { ES=0; while(temp1[j]!=' |