楼主最后解决了吗?我用bsp的代码将主频改到16.6m,在38400的波特率下误码率仍然会超过50%。请问楼主的代码是怎么设计的?这是我的代码:
unsigned char xdata hircmap0,hircmap1;
unsigned int xdata trimvalue16bit;
void MODIFY_HIRC_VLAUE(void)
{
set_IAPEN;
IAPAL = 0x30;
IAPAH = 0x00;
IAPCN = READ_UID;
set_IAPGO;
hircmap0 = IAPFD;
IAPAL = 0x31;
IAPAH = 0x00;
set_IAPGO;
hircmap1 = IAPFD;
clr_IAPEN;
trimvalue16bit = ((hircmap0<<1)+(hircmap1&0x01));
trimvalue16bit = trimvalue16bit - 15;
hircmap1 = trimvalue16bit&0x01;
hircmap0 = trimvalue16bit>>1;
TA=0XAA;
TA=0X55;
RCTRIM0 = hircmap0;
TA=0XAA;
TA=0X55;
RCTRIM1 = hircmap1;
}
void uart_init(void)
{
P06_Quasi_Mode;
P07_Quasi_Mode;
SCON = 0x50; //UART0 Mode1,REN=1,TI=1
TMOD |= 0x20; //Timer1 Mode1
set_SMOD; //UART0 Double Rate Enable
set_T1M;
clr_BRCK; //Serial port 0 baud rate clock source = Timer1
//TH1 = 256 - (1000000/38400+1); /*16 MHz */
TH1 = 256 - (1037500/38400); /*16.6 MHz */
set_TR1;
set_TI; //For printf function must setting TI = 1
set_ES;
}
|