波特率的计算,该如何处理

波特率的计算
51单片机的晶振是:11.09520MHZ,如果要产生9600bps的波特率,下面是我在网上找到了公式:
波特率=1/16或1/32*(晶振的频率/12*(256-TH1))
代入:
9600=11059200/32*12*(256-TH1)
TH1=TH0=FDH 
现在的问题是:为什么要除以:32 呢?

------解决方案--------------------

你上面的计算方法貌似是错误的,正确的如下:

(65535-初值)*晶振频率/12 = 1/波特率;


------解决方案--------------------
LS,他那个是自动重载方式的

16和32哪来的我一时也想不太清楚

要不LZ看一下数据手册看有没有分频什么的

------解决方案--------------------
还有个16倍分频....标准51是这样的.
波特率的计算,该如何处理
------解决方案--------------------
给UART的时钟频率应该是波特率的16倍,以便在第7,8,9个时钟处检测Rx的值。
------解决方案--------------------
给UART的时钟频率,不是TX的输出,UART十位指的是10个波特率对应的时间,而
给UART的时钟频率应该是波特率的16倍,以便在第7,8,9个时钟处检测Rx的值
Rx上一位也是指波特率对应的一位。
------解决方案--------------------
UART硬件对一个位又进行了分割...16等分,并在中间位置多次采样RXD管脚,以减少干扰造成的数据错误...
------解决方案--------------------
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4023698&bbs_page_no=1&search_mode=4&search_text=HuWenjin&bbs_id=9999

我提供一个直接计算,生成初始化程序的。

呵呵,还有生成整套操作函数的,中断方式发送与接收
------解决方案--------------------
其实这是公式:
波特率=(2^smod /32)*(定时器T1溢出率)
溢出率=溢出周期的倒数
溢出周期=(256-X)*12/Fosc
波特率=(2^smod * Fsoc)/(32 *12*(256-X))
你看看吧,应该会理解的,2^smod表示2的SMOD次幂,SMOD可取值为0或1,是零的时候就是32分之一了。