STC12C5A60S2使用双串口进行通信时,两个串口在发送数据时都没有问题,但接收数据都会丢失,求帮忙! 150
晶振是使用11.0592MHz的,波特率为2400。双串口在发送数据时都是没有问题的,但在接收时都会数据接收不全。比如从串口调试助手发送1到10这个10个数字到STC单片...
晶振是使用11.0592MHz的,波特率为2400。双串口在发送数据时都是没有问题的,但在接收时都会数据接收不全。比如从串口调试助手发送1到10这个10个数字到STC单片机,然后单片机再将接收到数据通过另一个串口发出,但结果是发送出来的只有1、3、5、7和9这个5个数,另外一个串口也是这种情况。已经测试过很多数据,凡是双数位的字符都会丢失。试过波特率1200、2400、4800和9600这4个,波特率4800和9600都是可以正常发送和接收数据,而波特率1200和2400就是上述情况,接收不正常,请会的人帮忙解决一下,看看到底是什么问题,非常感谢!
void SYS_TIMER_INIT() //定时器初始化
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
TMOD= TMOD & 0xF0;
TMOD= TMOD| 0x01;
TR0=1;
ET0=1;
}
void UART_COM1_INIT() //串口1初试化,波特率2400
{
TMOD = TMOD&0x0F;
TMOD = TMOD|0x20; //Set Timer1 as 8-bit auto reload mode
TH1 = TL1 = 0xF4; //Set auto-reload vaule
TR1 = 1;
REN = 1;
SM0 = 0;
SM1 = 1;
EA = 1;
ES = 1;
}
void UART_COM2_INIT() //串口2初试化
{
S2CON = 0x50;
BRT = 0xF4;//波特率2400
AUXR = AUXR|0x10;
IE2 = IE2|0x01;
} 展开
void SYS_TIMER_INIT() //定时器初始化
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
TMOD= TMOD & 0xF0;
TMOD= TMOD| 0x01;
TR0=1;
ET0=1;
}
void UART_COM1_INIT() //串口1初试化,波特率2400
{
TMOD = TMOD&0x0F;
TMOD = TMOD|0x20; //Set Timer1 as 8-bit auto reload mode
TH1 = TL1 = 0xF4; //Set auto-reload vaule
TR1 = 1;
REN = 1;
SM0 = 0;
SM1 = 1;
EA = 1;
ES = 1;
}
void UART_COM2_INIT() //串口2初试化
{
S2CON = 0x50;
BRT = 0xF4;//波特率2400
AUXR = AUXR|0x10;
IE2 = IE2|0x01;
} 展开
2个回答
2015-08-08
展开全部
完整代码发上来看看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询