找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9603|回復(fù): 2
收起左側(cè)

51單片機(jī)波特率公式中TH1=TL1=256-晶振值/12/2/16 /波特率,為什么要除以2求解

[復(fù)制鏈接]
ID:521921 發(fā)表于 2019-6-6 17:07 | 顯示全部樓層 |閱讀模式
各位高手:

     麻煩賜教下:
1. 51單片機(jī)波特率公式中TH1 = TL1 = 256 - 晶振值/12 /2/16 /波特率,16是因為它一個字節(jié)要采集16次檢測,但是為什么還要去除以2呢。。。求解!
2. 把波特率提高一倍,TH1 = TL1 = 256 - 晶振值/12 /16 /波特率——這里把波特率提升1倍,那么波特率不就變成了原來的2倍么,那這個初始值為什么不是TH1 = TL1 = 256 - 晶振值/12 /2/16 /(2*波特率)?....求解!。


教材描述內(nèi)容:
如果用定時器 2,需要配置額外的寄存器,默認(rèn)是使用定時器 1 的,我們本章內(nèi)容主要就使用定時器 T1 作為波特率發(fā)生器來講解,方式 1 下的波特率發(fā)生器必須使用定時器 T1 的模式 2,也就是自動重裝載模式,定時器的重載值計算公式為:
    TH1 = TL1 = 256 - 晶振值/12 /2/16 /波特率
和波特率有關(guān)的還有一個寄存器,是一個電源管理寄存器 PCON,他的最高位可以把波特率提高一倍,也就是如果寫 PCON |= 0x80 以后,計算公式就成了:
    TH1 = TL1 = 256 - 晶振值/12 /16 /波特率
公式中數(shù)字的含義這里解釋一下,256 是 8 位定時器的溢出值,也就是 TL1 的溢出值,晶振值在我們的開發(fā)板上就是 11059200,12 是說 1 個機(jī)器周期等于 12 個時鐘周期,值得關(guān)注的是這個 16,我們來重點說明。在 IO 口模擬串口通信接收數(shù)據(jù)的時候,采集的是這一位數(shù)據(jù)的中間位置,而實際上串口模塊比我們模擬的要復(fù)雜和精確一些。他采取的方式是把一位信號采集 16 次,其中第 7、8、9 次取出來,這三次中其中兩次如果是高電平,那么就認(rèn)定這一位數(shù)據(jù)是 1,如果兩次是低電平,那么就認(rèn)定這一位是 0,這樣一旦受到意外干擾讀錯一次數(shù)據(jù),也依然可以保證最終數(shù)據(jù)的正確性。


了解了串口采集模式,在這里要給大家留一個思考題!熬д裰/12/2/16/波特率”這個地方計算的時候,出現(xiàn)不能除盡,或者出現(xiàn)小數(shù)怎么辦,允許出現(xiàn)多大的偏差?把這部分理解了,也就理解了我們的晶振為何使用 11.0592M 了。

回復(fù)

使用道具 舉報

ID:597200 發(fā)表于 2020-9-18 12:18 | 顯示全部樓層
原本是TH1 = TL1 = 256 - 晶振值/12  /波特率,因為它一個字節(jié)要采集16次檢測所以除以12,波特率提高一倍,再除以2不就是TH1 = TL1 = 256 - 晶振值/12 /2/16 /波特率就是
回復(fù)

使用道具 舉報

ID:1044850 發(fā)表于 2022-11-11 12:55 | 顯示全部樓層
我也找了半天,最后在這個網(wǎng)址上看到了https://blog.csdn.net/cr2269736819/article/details/79780989
51單片機(jī)串口工作在方式1,上時,給串口使用的時鐘頻率要先除2,再除16,為什么要除2呢?因為實際上對于單片機(jī)的串口及外部的通信模塊來說,單片機(jī)的晶振頻率即使在12分頻后,依然太快,所以先除2,降低串口模塊所使用的的時鐘頻率。
不過也有人說和單片機(jī)的內(nèi)核設(shè)計有關(guān)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表