单片机晶振频率与波特率和定时器初值的关系

晶振频率与周期
振荡周期:石英振荡器的振荡周期,为频率的导数,如石英频率为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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值