单片机改变定时器溢出率问题

单片机改变定时器溢出率问题,第1张

定时器溢出好像和cy没有关系吧。我记得cy是程序状态字寄存器(psw),是执行算术运算和逻辑运算时判断第7位是否进位的一个标志位。所以cy不会变1
定时器控制寄存器是tcon,tf0属于tcon,用于计数溢出的标志位。

单片机上串口方式1和3的波特率是基于T1定时器的溢出频率产生的,需要注意,不是TO,只能是T1。
公式t=(256-th0)振荡周期12 中t代表采用定时器方式2时,定时器T0溢出事件发生的周期。T1的溢出周期也是一样的算法,改成th1就行了。(1/t)就是定时器的溢出频率。我们已知的是需要的波特率,这里就是9600,根据串口方式1的波特率计算公式
波特率=1/16或1/32T1的溢出频率
可以求出我们需要的T1的溢出频率,也就是(1/t),t确定后就能根据上面公式最终求出th1的设定值。
计算结果是SMOD位为0,th1=0xfd; SMOD位为1,th1=0xfa

(3)对于方式1和方式3,波特率=2SMOD [(定时/计数器T1的溢出率或独立波特率发生器的溢出率) /32]。定时/计数器T1用作波特率发生器时,一般工作在方式2。
定时/计数器T1的溢出率与辅助寄存器AUXR的T1x12位有关,
当T1x12=0时,定时/计数器T1的溢出率= (fosc/12)/( 256 - THl);
当T1x12=1时,定时/计数器T1的溢出率= fosc/( 256 - TH1)。
独立波特率发生器的溢出率与辅助寄存器AUXR的BRTx12位有关,
当BRTx12 = 0时,独立波特率发生器的溢出率=(fosc/12)/(256-BRT );
当BRTx12 = 1时,独立波特率发生器的溢出率=fosc/(256-BRT)。
方式1、3波特率的设置,关键在于对T1或独立波特率发生器溢出率的计算,表8-2列出了采用系统时钟频率为110592MHz,T1x12=0,T1工作在方式2时,几种波特率所对应T1的重装初值。
表8-2 波特率选择表
请参考《单片机原理与应用-基于汇编、C51及混合编程》一书的216页及223-228页例题,该书以STC12C5A60S2为主线介绍,这一款单片机内部功能多,适合于竞赛和产品设计,该书的特点:各个例题的原理图与实际电路图一致,标出了各器件的参数,给出了汇编、C51两种编程的详解,该书例题的程序编写思路符合于产品设计,最后一章给出了两个完整的实例,可指导初学者入门。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13159632.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-13
下一篇 2023-06-13

发表评论

登录后才能评论

评论列表(0条)

保存