定时器控制寄存器是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两种编程的详解,该书例题的程序编写思路符合于产品设计,最后一章给出了两个完整的实例,可指导初学者入门。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)