一般情况下在51单片机中,使用_______是为了获取精准的波特率
【解析】
单片机的晶振频率一般为12T,也就是12个震荡周期为一个机器周期,记作Fosc
波特率记作Baud
串口通讯的方式有四种:
方式0:同步移位寄存器方式,仅有8个数据位,波特率是固定的为Fosc/12
方式1:10位异步收发,包括1个起始位(0),8个数据位,1个停止位(1),波特率为:2^(SMOD)/32×T1溢出率;
方式2:11位异步收发(串行口工作于此方式时被称作9位异步通信接口),包括1位起始位0,8位数据位(先低位),1位可程控为1或0的第9位数据和1位停止位,波特率为:2^(SMOD)/64 ×Fosc;
方式3:11位异步收发,除波特率以外,与方式2相同,波特率为;2^(SMOD)/32×T1溢出率;
SMOD(倍频系数)可取0或1,T1的溢出率=1/T1中断时间
上述方法中,最常用的为方式1,最常用的是方式1,10位异步收发。波特率:Baud=2^(SMOD)/32×T1溢出率;
T1中断时间=n×12/Fosc。(0≤n≤255)
综上所述:Baud=2(SMOD)/32×Fosc/12n=2(SMOD)×Fosc/384n;
因此,Fosc=384×n×Baud/2^(SMOD);结果是Hz,晶振是否整数,还得换算成MHz。
当波特率为8000时,Fosc=384×8000×n/2(SMOD)=3072000×n/2(SMOD)
这个值换算成MHz(÷100万)为3.072,并不是整数,当晶振频率为整数时,只能表示一部分的波特率数值或者波特率的近似数值,所以为了获取更加精准的波特率需要使用非整数晶振。
【答案】
非整数晶振