晶振频率与周期
振荡周期:石英振荡器的振荡周期,为频率的导数,如石英频率为12MHz
,在振荡周期为1/12us
状态周期:单片机完成一个最基本动作需要的时间周期,1个状态周期=2个振荡周期
机器周期:单片机完成一次完整的具有一定功能的动作所需要的时间周期,1个机器周期=6个状态周期=12个振荡周期,如石英频率为12MHz
,则一个机器周期为1us
指令周期:执行完某条指令所需要的时间周期,一般指令需要1~4个机器周期
晶振频率与波特率
波特率是指串行端口每秒内可以传输的波特位数,如标准的9600是指每秒可传送9600个二进位,一个字节要8个二进位,如用串口模式1来传输,加上起始位和停止位,每个数据字节要占用10个二进位,因此9600波特率用模式1传输时,每秒传输的字节数是9600/10=960字节。串口通讯中,一个有四种工作方式,如下图

方式0和方式2的波特率
方式0的波特率是固定的,一个12MHz的晶振,其波特率为1M
方式2的波特率是固定在fosc/64或fosc/32,具体取决于PCON寄存器中的SMOD位
方式1和方式3的波特率
方式1和方式3的波特率是可变的,取决于定时器1或2的溢出速率,计算公式为:
bound=(2SMOD/32)∗(fosc/12)/(256−TH1)
可根据此公式计算TH1的值,对于9600
9600
波特率,晶振分别为11.0592MHz和12MHz,SMOD设为1,代入上式:
11.0592MHz:
9600=(2/32)∗(11.0592M/12)/(256−TH1)
TH1=250
12MHz:
9600=(2/32)∗(12M/12)/(256−TH1)
TH1=249.49
上面的计算可以看出,使用12MHz,晶振算出来的TH1不为整数,而TH1的值只能取整数,这样就会有一定的误差存在而不能产生精确的9600
9600波特率。
————————————————
版权声明:本文为CSDN博主「henryheheng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/henryheheng/article/details/80356711
7749

被折叠的 条评论
为什么被折叠?



