新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機中關于波特率的介紹

        51單片機中關于波特率的介紹

        作者: 時間:2016-11-23 來源:網絡 收藏
        在串行通訊中,收發雙方的數據傳送率(波特率)要有一定的約定。在8051串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器T1的溢出率控制。


        方式0
        方式0的波特率固定為主振頻率的1/12。

        方式2
        方式2的波特率由PCON中的選擇位SMOD來決定,可由下式表示:

        波特率=2的SMOD次方除以64再乘一個fosc,也就是當SMOD=1時,波特率為1/32fosc,當SMOD=0時,波特率為1/64fosc

        方式1和方式3
        定時器T1作為波特率發生器,其公式如下:
        波特率=定時器T1溢出率

        T1溢出率= T1計數率/產生溢出所需的周期數


        式中T1計數率取決于它工作在定時器狀態還是計數器狀態。當工作于定時器狀態時,T1計數率為fosc/12;當工作于計數器狀態時,T1計數率為外部輸入頻率,此頻率應小于fosc/24。產生溢出所需周期與定時器T1的工作方式、T1的預置值有關。

        定時器T1工作于方式0:溢出所需周期數=8192-x
        定時器T1工作于方式1:溢出所需周期數=65536-x

        定時器T1工作于方式2:溢出所需周期數=256-x

        因為方式2為自動重裝入初值的8位定時器/計數器模式,所以用它來做波特率發生器最恰當。

        當時鐘頻率選用11.0592MHZ時,取易獲得標準的波特率,所以很多單片機系統選用這個看起來“怪”的晶振就是這個道理。

        下表列出了定時器T1工作于方式2常用波特率及初值。

        常用波特率 Fosc(MHZ) SMOD TH1初值
        19200 11.05921 FDH
        960011.0592 0 FDH
        4800 11.0592 0 FAH
        2400 11.0592 0 F4H
        1200 11.0592 0 E8H

        例如9600 11.0592 0 FDH
        波特率=定時器T1溢出率

        T1溢出率= T1計數率/產生溢出所需的周期數

        產生溢出所需的周期數=256-FD(253)=3
        SMOD=0 11059200/12*3 *1/32=9600

        本文引用地址:http://www.104case.com/article/201611/320471.htm

        波特率計算


        在串行通信中,收發雙方對發送或接收的數據速率要有一定的約定,我們通過軟件對MCS—51串行口編程可約定四種工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器T1的溢出率決定。
        串行口的四種工作方式對應著三種波特率。由于輸人的移位時鐘的來源不同,所以,各種方式的波特率計算公式也不同。


        一、方式0的波特率
        方式0時,移位時鐘脈沖由56(即第6個狀態周期,第12個節拍)給出,即每個機器周期產生一個移位時鐘,發送或接收一位數據。所以,波特率為振蕩頻率的十二分之一,并不受 PCON寄存器中SMOD的影響,即:
        方式0的波特率=fosc/12


        三、方式l和方式3的波特率
        方式1和方式3的移位時鐘脈沖由定時器T1的溢出率決定,故波特宰由定時器T1的
        溢出率與SMOD值同時決定,即:
        方式1和方式3的波特率=2SMOD/32·T1溢出率
        其中,溢出率取決于計數速率和定時器的預置值。計數速率與TMOD寄存器中C/T的狀態有關。當C/T=0時,計數速率=fosc/2;當C/T=1時,計數速率取決于外部輸入時鐘頻率。
        當定時器Tl作波特率發生器使用時,通常選用可自動裝入初值模式(工作方式2),在
        工作方式2中,TLl作為計數用,而自動裝入的初值放在THl中,設計數初值為x,則每過“256一x”個機器周期,定時器T1就會產生一次溢出。為了避免因溢出而引起中斷,此時應禁止T1中斷。這時,溢出周期為:


        系統晶振頻率選為11.0592MHZ就是為了使初值為整數,從而產生精確的波特率。
        如果串行通信選用很低的波特率,可將定時器Tl置于工作方式0或工作方式1,但在
        這種情況下,T1溢出時,需用中斷服務程序重裝初值。中斷響應時間和執行指令時間會使波特率產生一定的誤差,可用改變初值的辦法加以調整。



        關鍵詞: 51單片機波特

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 兴海县| 阿克陶县| 平江县| 若羌县| 奎屯市| 都昌县| 新和县| 泗洪县| 调兵山市| 天峨县| 金阳县| 日土县| 柳林县| 天长市| 潮州市| 建始县| 西华县| 高雄市| 游戏| 沙河市| 耿马| 雷波县| 光泽县| 呼图壁县| 前郭尔| 田东县| 东宁县| 温宿县| 浦东新区| 翁牛特旗| 嘉义县| 扎赉特旗| 阆中市| 乃东县| 额尔古纳市| 樟树市| 永定县| 旌德县| 蚌埠市| 铜陵市| 阜新市|