串行通信的波特率一般都取2400的整数倍。
PC机上串口的波特率也是按这个取值的。
如下图,这是超级终端的波特率取值。
而对于单片机,需要串口通信时,晶振频率通常取11.0592MHz,或者2倍。取这个值的目的就是计算出的串口通信的波特率误差几乎为0。而取其它频率就有误差。同时,晶振取这个值,波特率也要取2400的整数倍,波特率误差才几乎为0。这两个值有一个不满足,实际的波特率都会有变误差。因为,串口通信是两者的异步通信,如果两者的波特率不相同,就无法正确通信的。
这就是串口通信波特率不能任何取值的原因。