欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9861|回復: 2
收起左側

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

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

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


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


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

回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:597200 發表于 2020-9-18 12:18 | 顯示全部樓層
原本是TH1 = TL1 = 256 - 晶振值/12  /波特率,因為它一個字節要采集16次檢測所以除以12,波特率提高一倍,再除以2不就是TH1 = TL1 = 256 - 晶振值/12 /2/16 /波特率就是
回復

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表