定时器T1 ,操作方式2作为波特率发生器,波特率为2400,已知Fosc=11.0592MHz,如何求计数初值X0?

如题所述

第1个回答  推荐于2016-06-21
#define FOSC 12000000 //振荡频率
#define BAUD 4800 //波特率
#define SMOD 1 //是否波特率加倍

#if SMOD
#define TC_VAL (256-FOSC/16/12/BAUD)
#else
#define TC_VAL (256-FOSC/32/12/BAUD)
#endif追问

这里我有一点不明白,方式2的波特率不是不可变的么,怎么会用这个来算呢?

追答

你问的是timer1的操作方式2呢,自动重装模式。
如果是uart的方式2和timer1有什么关系?

uart方式2:
波特率可编程为MCU 时钟频率的1/32 或1/64
由PCON 内SMOD1 位决定

面程序修改主频和波特率设定,TC_VAL就是TH1的初值

追问

是我理解错了,我以为这里的操作方式2是指串行接口的工作方式。还有一个问题,这里算到是F4H,为什么TH1=TL1=F4H,高位和低位一样?要是F4D7H,我知道TH1=F4H, TL1=D7H。

追答

串口波特率一般用timer1的模式2,“自动重装”,即当TL1溢出后自动将TH1的值装入TL1.
当timer1用于波特率发生器的时候timer1不产生中断的。

本回答被提问者采纳