STC两个串口同时通信的问题
跪求各位大神!!!!我学校里的一个项目,单片机的串口1和一个数据采集模块相连,发指令和接受数据
串口2和电脑串口相连,直接将从串口1的数据处理后发送
但是串口2的代码我还没写时,串口1工作正常,数据收发都OK,但一旦加入串口2的通信就会导致串口1只能收到一次来自数据采集模块的数据,从第二次开始就是串口1接收不了数据……
以下贴出串口初始化的代码,编译都通过的,跪求各位大神!!!!
void send(char d)
{
ES = 0;
SBUF=d;
while(TI!=1);
TI=0;
ES = 1;
}
void send2(char d)
{
S2BUF=d;
while(!S2TI);
S2CON&=0xFD;
}
void receive(void) interrupt 4
{
RI = 0;
if(a<=37)
dat[a]=SBUF;
a++;
}
void UartInit(void) //4800bps@12.000MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xB2; //设定定时初值
TH1 = 0xB2; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
AUXR &= 0xF7; //波特率不倍速
S2CON = 0x50; //8位数据,可变波特率
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
BRT = 0xB2; //设定独立波特率发生器重装值
AUXR |= 0x10; //启动独立波特率发生器
// AUXR = 0x54;
}
void init_usart()
{
SM0=0;
SM1=1;
REN=1;
ES=1;
IE2|=0x01;
}