STC單片機1T系列串口通信波特率設(shè)置_第1頁
STC單片機1T系列串口通信波特率設(shè)置_第2頁
STC單片機1T系列串口通信波特率設(shè)置_第3頁
STC單片機1T系列串口通信波特率設(shè)置_第4頁
STC單片機1T系列串口通信波特率設(shè)置_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

STC單片機1T系列串口通信波特率設(shè)置本文是以STC12C5Axxxx/51xx系列單片機來進行講解的。如果有雙串口的單片機以下是以串口1進行講解的。一、簡介STC12C5A60S2系列單片機串口通信隨著所選定時器的工作模式不同而異,對于工作模式0和2其波特率,只與系統(tǒng)時鐘頻率SYSCLK(下同)和PCON中的波特率選擇位SMOD有關(guān);工作模式1和3其波特率,不僅與系統(tǒng)時鐘頻率SYSCLK(下同)和PCON中的波特率選擇位SMOD有關(guān),還與定時器/計數(shù)器1和BRT獨立波特率設(shè)置有關(guān)。通過對定時器/計數(shù)器1和BRT獨立波特率設(shè)置,可以選擇不同的波特率,所以這種波特率是可變的。串口通信模式1和3波特率是可變的:模式1和3波特率=2SMOD/32*(定時器1溢出率或BRT溢出率)當T1x12=0時,定時器1的溢出率=SYSclk/12/(256-TH1);當T1x12=1時,定時器1的溢出率=SYSclk/(256-TH1)。當BRTx12=0時,BRT溢出率=SYSclk/12/(256-BRT);當BRTx12=1時,BRT溢出率=SYSclk/(256-BRT)。在實際應(yīng)用中多使用串口模式1或3,進行波特率設(shè)置。(1)串口通信模式1和3使用定時器/計數(shù)器1設(shè)置波特率1、SMOD的使用SMOD只是占用電源控制寄存器的最高一位(如下圖所示),當SMOD=1時,PCON=PCON|0x80;(波特率加倍)當SMOD=0時,PCON=PCON|0x00。2、定時器/計數(shù)器溢出率定時器/計數(shù)器溢出:是指設(shè)定初值后(初值根據(jù)要定的時間來計算),啟動定時器后,每個機器周期加1,當加到每一位都是“1”時,再加1位就會使所有位都變成“0”,這時(再加1變成0后)就是定時器/計數(shù)器溢出。所以所經(jīng)歷的時間是:(全為“1”的二進制+1-初值)*機器周期。定時器/計數(shù)器溢出率:單位時間(秒)內(nèi)定時器/計數(shù)器回“0”溢出的次數(shù)。STC12C5A60S2系列單片機有兩個定時器/計數(shù)器,定時器/計數(shù)器1有4中工作模式,常選用定時器/計數(shù)器1工作模式2(8位自動重裝)作為波特率溢出率。4、溢出率計算設(shè)定定時器/計數(shù)器1工作模式2(8位自動重裝)作為波特率溢出率,TL1的計數(shù)輸入來自SYSclk經(jīng)12分頻或者不分頻(由T1x12在AUXR寄存器第6位來確定(見上文))的脈沖。定時器/計數(shù)器1的溢出率與SYSclk和自動重載值N有關(guān),SYSclk越大,特別是N值越大,溢出率越高。例如:當N=FFH時,則每隔一個時鐘溢出一次(極限情況);當N=00H時,則每個256個時鐘(因為是8位自動重裝,28=256)溢出一次。溢出一次所需要的時間:當T1x12=0時:(28-N)*12時鐘=(28-N)*12*(1/SYSclk)當T1x12=1時:(28-N)*1時鐘=(28-N)*(1/SYSclk)于是得到每秒溢出次數(shù)(溢出率):當T1x12=0時:溢出率=SYSclk/12*(28-N)(次/秒)當T1x12=1時:溢出率=(28-N)*SYSclk(次/秒)選用定時器/計數(shù)器0工作模式1和3作為波特率作為溢出率也是一樣的。選用的波特率方式不同,波特率范圍也不同。常用波特率和定時器/計數(shù)器1各參數(shù)的關(guān)系工作模式波特率(Hz)SYSclk(MHz)SMOD定時器/計數(shù)器1C/T模式重裝值(N)(16進制)模式0MAX:1M12xxxx模式2MAX:376K121xxx模式1和362.5K12102FFH19.2K11.059102FDH9.6K11.059002FDH4.8K11.059002FAH2.4K11.059002F4H1.2K11.059002F8H137.511.9860021DH110600272H11012001FFFBH5、參考程序設(shè)置波特率初始化程序如下:TMOD=TMOD|0x20;//設(shè)置定時器/計數(shù)器1定時,工作方式2TH1=TL1=-(FOSC/12/32/BAUD);//載入初值TR=1;//啟動定時器/計數(shù)器1PCON=PCON|0x80;//設(shè)置SMOD=1;啟動波特率加倍。SCON=SCON|0x50;//設(shè)置串口通信模式1。(2)、串口通信模式1和3使用定時器/計數(shù)器1設(shè)置波特率使用BRT獨立波特率發(fā)生器設(shè)置波特率,關(guān)鍵在于使用BRT獨立波特率發(fā)生器的溢出率,這樣可以釋放出定時器/計數(shù)器1。計算相應(yīng)波特率需要設(shè)置重裝載值,結(jié)果送入BRT寄存器計算自動重裝載數(shù)RELOAD(SMOD=0;SMOD是PCON寄存器的最高位)SMOD只是占用電源控制寄存器的最高一位(如下圖所示),當SMOD=1時,PCON=PCON|0x80;(波特率加倍)當SMOD=0時,PCON=PCON|0x00。計算步驟:1)~4)1)、計算RELOAD(以下是以SMOD=0時的計算公式)(a)、12T模式:RELOAD=256-INT(SYSclk/Baud0/32/12+0.5)(b)、1T模式:RELOAD=256-INT(SYSclk/Baud0/32+0.5)注:1、計算出的RELOAD數(shù)值直接送BRT寄存器;2、式中INT()表示取整運算舍去小數(shù),在式中“+0.5”可以達到四舍五入的目的;3、baud0標準波特率。2)、計算用RELOAD產(chǎn)生的實際波特率(Baud)(a)、Baud=SYSclk/(256-RLOAD)/32/12(12T模式)(b)、Baud=SYSclk/(256-RLOAD)/32(1T模式)3)計算誤差絕對值Error=(Baud-Ba

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論