<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機c語(yǔ)言教程:C51開(kāi)關(guān)分支語(yǔ)句

單片機c語(yǔ)言教程:C51開(kāi)關(guān)分支語(yǔ)句

作者: 時(shí)間:2012-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

波特率 在使用串行口做通信時(shí),一個(gè)很重要的參數就是波特率,只有上下位機的波特率 一樣時(shí)才能進(jìn)行正常通信。波特率是指串行端口每秒內能傳輸的波特位數。有一些開(kāi)始學(xué)習 的朋友認為波特率是指每秒傳輸的字節數,如標準 9600 會(huì )被誤認為每秒種能傳送 9600 個(gè)字節,而實(shí)際上它是指每秒能傳送 9600 個(gè)二進(jìn)位,而一個(gè)字節要 8 個(gè)二進(jìn)位,如用串 口模式 1 來(lái)傳輸那么加上起始位和停止位,每個(gè)數據字節就要占用 10 個(gè)二進(jìn)位,9600 波特 率用模式 1 傳輸時(shí),每秒傳輸的字節數是 9600÷10=960 字節。51 芯片的串行口工作模式 0 的波特率是固定的,為 fosc/12,以一個(gè) 12M 的晶體震蕩器來(lái)計算,那么它的波特率能達到 1M。 模式 2 的波特率是固定在 fosc/64 或 fosc/32,具體用那一種就取決于 PCON 寄存器中的 SMOD 位,如 SMOD 為 0,波特率為 focs/64,SMOD 為 1,波特率為 focs/32。模式 1 和模式 3 的波 特率是可變的,取決于定時(shí)器 1 或 2(52 芯片)的溢出速率。那么我們怎么去計算這兩個(gè)模 式的波特率設置時(shí)相關(guān)的寄存器的值呢?能用以下的公式去計算。

波特率=(2SMOD÷32)×定時(shí)器 1 溢出速率

上式中如設置了 PCON 寄存器中的 SMOD 位為 1 時(shí)就能把波特率提升 2 倍。通常會(huì )使用 定時(shí)器 1 工作在定時(shí)器工作模式 2 下,這個(gè)時(shí)候定時(shí)值中的 TL1 做為計數,TH1 做為自動(dòng)重裝值 , 這個(gè)定時(shí)模式下,定時(shí)器溢出后,TH1 的值會(huì )自動(dòng)裝載到 TL1,再次開(kāi)始計數,這樣能不 用軟件去干預,使得定時(shí)更準確。在這個(gè)定時(shí)模式 2 下定時(shí)器 1 溢出速率的計算公式如下:

溢出速率=(計數速率)/(256-TH1) 上式中的“計數速率”與所使用的晶體振蕩器頻率有關(guān),在 51 芯片中定時(shí)器啟動(dòng)后會(huì )

在每一個(gè)機器周期使定時(shí)寄存器 TH 的值增加一,一個(gè)機器周期等于十二個(gè)振蕩周期,所以

能得知 51 芯片的計數速率為晶體振蕩器頻率的 1/12,一個(gè) 12M 的晶體震蕩器用在 51 芯片上, 那么 51 的計數速率就為 1M。通常用 11.0592M 晶體是為了得到標準的無(wú)誤差的波特率,那 么為何呢?計算一下就知道了。如我們要得到 9600 的波特率,晶體震蕩器為 11.0592M 和 12M,定 時(shí)器 1 為模式 2,SMOD 設為 1,分別看看那所要求的 TH1 為何值。代入公式:

11.0592M

9600=(2÷32)×((11.0592M/12)/(256-TH1))

TH1=250 //看看是不是和上面實(shí)例中的使用的數值一樣?

12M

9600=(2÷32)×((12M/12)/(256-TH1)) TH1≈249.49

上面的計算能看出使用 12M 晶體的時(shí)候計算出來(lái)的 TH1 不為整數,而 TH1 的值只能取整數,這樣它就會(huì )有一定的誤差存在不能產(chǎn)生精確的 9600 波特率。當然一定的誤差是能 在使用中被接受的,就算使用 11.0592M 的晶體振蕩器也會(huì )因晶體本身所存在的誤差使波特率產(chǎn)生誤差,但晶體本身的誤差對波特率的影響是十分之小的,能忽略不計。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 分支 語(yǔ)句 開(kāi)關(guān) C51 語(yǔ)言 教程 單片機

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>