这个是为了单片机的串口波特率的精确性,才使用这个不是整数的频率。51单片机没有独立的串口波特率发生器,而是使用定时计数器来产生的,而51单片机的定时计数器启动后,在每一个机器周期定时器的值加一,一个机器周期等于12个震荡周期。在这里看来使用12M频率好像更便于计算,根据波特率的计算公式就可以得知:计算公式 (波特率)=(2SMOD/32)×T1溢出率。
假如现在需要的波特率是9600:
12M晶振模式下的计算结果 9600=(2/32)×((12M/12)/256-TH1) TH1= 249.49
11.0592模式下的计算: 9600=(2/32)×((11.0592M/12)/256-TH1) TH1= 250
这个是为了单片机的串口波特率的精确性,才使用这个不是整数的频率。51单片机没有独立的串口波特率发生器,而是使用定时计数器来产生的,而51单片机的定时计数器启动后,在每一个机器周期定时器的值加一,一个机器周期等于12个震荡周期。在这里看来使用12M频率好像更便于计算,根据波特率的计算公式就可以得知:计算公式 (波特率)=(2SMOD/32)×T1溢出率。
假如现在需要的波特率是9600:
12M晶振模式下的计算结果 9600=(2/32)×((12M/12)/256-TH1) TH1= 249.49
11.0592模式下的计算: 9600=(2/32)×((11.0592M/12)/256-TH1) TH1= 250
举报