void InitialUART0_Timer3(uint32_t u32Baudrate) //use timer3 as Baudrate generator
{
P06_Quasi_Mode; //Setting UART pin as Quasi mode for transmit
//P07_Quasi_Mode; //Setting UART pin as Quasi mode for transmit
SCON = 0x40; //UART0 Mode1,REN=1,TI=1
set_SMOD; //UART0 Double Rate Enable
T3CON &= 0xF8; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1)
set_BRCK; //UART0 baud rate clock source = Timer3
#ifdef FOSC_160000
RH3 = (65536 - (1000000/u32Baudrate)-1)>>8; /*16 MHz */
RL3 = (65536 - (1000000/u32Baudrate)-1) & 0xFF; /*16 MHz */
#elif defined(FOSC_166000)
RH3 = (65536 - (1037500/u32Baudrate))>>8; /*16.6 MHz */
RL3 = (65536 - (1037500/u32Baudrate)) & 0xFF; /*16.6 MHz */
#endif
set_TR3; //Trigger Timer3
//set_TI; //For printf function must setting TI = 1
}
|