#define T12_MODE
void UART1_init()
{
#ifdef T12_MODE
#define bundRate(bundRate) (65536 - 12000000UL/(12*4*bundRate##UL))
// 12T模式会有误差
AUXR &= ~(1<<6);//12T模式
#else
#define bundRate(bundRate) (65536 - 12000000UL/(4*bundRate##UL))
// 1T模式没有误差
AUXR |= (1<<6); //1T模式
#endif
TH1 = bundRate(4800)>>8;
TL1 = bundRate(4800);
}
注意:在宏的定义的时候,运算不要超过指定的字长,否则会出错,宏的作用仅仅只是文本替换
所以在定义时应再加上##UL