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;
}
串口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;
}
...全文
相关推荐
串口通信收发测试.zip_STC15W408串口_staredbw4_stc15w408as 串口_stc15w408as的串口
stc15w408as的串口通信,串口通信助手收发数据
STC15单片机 串口2收发
本代码主要是STC15单片机通过串口2进行收发通信,可以进行一次性多个数据收发
STC串口通信软件
包含STC串口通信软件,可以方便下载程序到单片机中或者进行单步调试
stc12c5a60s2单片机双串口通信
stc12c5a60s2单片机双串口通信,可实现两个串口通信,通过单片机连接两个不同电脑的串口,实现两计算机的文字,命令通信,控制。
STC12C5A60S2-串口1-串口2-测试程序
STC12C5A60S2-串口1-串口2-程序 实验成功 没有问题。


单片机/工控
