霍礼林 发表于 2018-10-23 20:57 12M晶振就要用12M晶振计算,否则误差太大了,自然容易出错: void UartInit(void) //9600bps@12.000MHz { SCON = 0x50; //8位数据,可变波特率 AUXR |= 0x01; //串口1选择定时器2为波特率发生器 AUXR |= 0x04; //定时器2时钟为Fosc,即1T T2L = 0xC7; //设定定时初值 T2H = 0xFE; //设定定时初值 AUXR |= 0x10; //启动定时器2 } 这样与PC机串口通讯会失步。11.0592M计算的9600波特率误差为0,而12M计算的误差为0.16,所以还是建议用11.0592的晶振。 如果只是两个单片机之间串口通讯,那么晶振与波特率都无所谓,只要两边完全相同就可以了。 |
cjm82 发表于 2018-10-23 20:11 两个板子都是焊接的都是12M的晶振 |