void mInitSTDIO( )
{
UINT32 x;
UINT8 x2;
SM0 = 0; //该位为0选择8位数据异步通信
SM1 = 1; //该位为1设置可变波特率,由定时器T1或者T2产生
//SM0=0, SM1=1 模式1,8位异步通信方式,波特率可变,由定时器T1或者T2产生
SM2 = 0; //串口0使用模式1;在模式1时,如果SM2=1,那么只有接收到有效的停止位时,接收才有效
//使用Timer1作为波特率发生器
RCLK = 0; //UART0接收时钟,该位为0选择Timer1溢出脉冲产生波特率
TCLK = 0; //UART0发送时钟,该位为0选择Timer1溢出脉冲产生波特率
PCON |= SMOD;//SMOD=0慢速模式, SMOD=1快速模式
x = 10 * FREQ_SYS / UART0_BUAD / 16; //如果更改主频,注意x的值不要溢出
x2 = x % 10;
x /= 10;
if ( x2 >= 5 ) x ++; //四舍五入
TMOD = TMOD & ~ bT1_GATE & ~ bT1_CT & ~ MASK_T1_MOD | bT1_M1; //0X20,Timer1作为8位自动重载定时器
T2MOD = T2MOD | bTMR_CLK | bT1_CLK; //Timer1时钟选择
TH1 = 0-x; //12MHz晶振,buad/12为实际需设置波特率
TR1 = 1; //启动定时器1
TI = 1;
REN = 1; //串口0接收使能
}
请问在系统时钟设为24M时,这里的串口配置程序需要修改? x = 10 * FREQ_SYS / UART0_BUAD / 16; //如果更改主频,注意x的值不要溢出 TH1 = 0-x; //12MHz晶振,buad/12为实际需设置波特率 这两句怎么理解?如果产品工作环境温差大的话,这个串口的误差率在允许范围内?