【单片机】晶振频率与波特率

晶振频率与周期

振荡周期:石英振荡器的振荡周期,为频率的导数,如石英频率为 12MHz 12 M H z ,在振荡周期为 1/12us 1 / 12 u s

状态周期:单片机完成一个最基本动作需要的时间周期,1个状态周期=2个振荡周期

机器周期:单片机完成一次完整的具有一定功能的动作所需要的时间周期,1个机器周期=6个状态周期=12个振荡周期,如石英频率为 12MHz 12 M H z ,则一个机器周期为 1us 1 u s

指令周期:执行完某条指令所需要的时间周期,一般指令需要1~4个机器周期

晶振频率与波特率

波特率是指串行端口每秒内可以传输的波特位数,如标准的9600是指每秒可传送9600个二进位,一个字节要8个二进位,如用串口模式1来传输,加上起始位和停止位,每个数据字节要占用10个二进位,因此9600波特率用模式1传输时,每秒传输的字节数是9600/10=960字节。串口通讯中,一个有四种工作方式,如下图

【单片机】晶振频率与波特率_第1张图片

方式0和方式2的波特率
方式0的波特率是固定的,一个 12MHz 12 M H z 的晶振,其波特率为 1M 1 M
方式2的波特率是固定在 fosc/64 f o s c / 64 fosc/32 f o s c / 32 ,具体取决于PCON寄存器中的SMOD位

方式1和方式3的波特率
方式1和方式3的波特率是可变的,取决于定时器1或2的溢出速率,计算公式为:

bound=(2SMOD/32)(fosc/12)/(256TH1) b o u n d = ( 2 S M O D / 32 ) ∗ ( f o s c / 12 ) / ( 256 − T H 1 )

可根据此公式计算TH1的值,对于 9600 9600 波特率,晶振分别为 11.0592MHz 11.0592 M H z 12MHz 12 M H z ,SMOD设为1,,代入上式:
11.0592MHz: 11.0592 M H z :
9600=(2/32)(11.0592M/12)/(256TH1) 9600 = ( 2 / 32 ) ∗ ( 11.0592 M / 12 ) / ( 256 − T H 1 )
TH1=250 T H 1 = 250

12MHz: 12 M H z :
9600=(2/32)(12M/12)/(256TH1) 9600 = ( 2 / 32 ) ∗ ( 12 M / 12 ) / ( 256 − T H 1 )
TH1=249.49 T H 1 = 249.49

上面的计算可以看出,使用 12MHz 12 M H z 晶振算出来的TH1不为整数,而TH1的值只能取整数,这样就会有一定的误差存在而不能产生精确的 9600 9600 波特率。

你可能感兴趣的:(单片机)