很好用的啊,这是官方common.c提供的 官方UART0 MODE1 带中断的初始化函数,自己去对比一下有什么不同:
void InitialUART0_Timer1(UINT32 u32Baudrate) //T1M = 1, SMOD = 1
{
P06_Quasi_Mode;
P07_Quasi_Mode;
SCON = 0x52; //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
#ifdef FOSC_160000
TH1 = 256 - (1000000/u32Baudrate+1); /*16 MHz */
#endif
#ifdef FOSC_221184
TH1 = 256 - (1382400/u32Baudrate); /*22.1184 MHz */
#endif
set_TR1;
}
|