新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 如何在6M晶振下得到更高的波特率

        如何在6M晶振下得到更高的波特率

        作者: 時間:2016-11-09 來源:網絡 收藏
        在一些對電磁干擾要求嚴格的電路中盡量降低晶體的振蕩頻率是必要的,而如果又需要獲得更高的串口通信頻率,這時可以考慮使用8052中的T2作波特率發生器來解決問題,僅僅只有6M的晶振卻可以得到38400b/s的波特率。

        下面先來看看用T1做波特率發生器時的情況,晶振為6M:

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

        若用T1作波特率發生器,它只能作為8位定時器使用,為得到更高的波特率,可以設置SMOD=1,則它的波特率公式為:BAUND=2*fOSC/(32*12*(256-X)),其中X為定時器T1的初值。若BAUND=4800,則X=249.5,取整為0xf9,或舍入為0xfa,發送10個s,在超級終端觀察,得到一個字母k或空。在選擇BAUND=9600,則X=252.7,取整為0xfc或舍入為0xfd,在超級終端得到“]iM”或“^^”,而且出現的結果也不是必然的,可以預期用T1作波特率發生器不能得到4800及以上穩定的波特率。

        仍然以6M晶振來討論,而改用T2作波特率,情況大有改觀:

        先寫出T2一段初始化程序:

        voidInitialSerialPort()

        {

        SCON=0x50;//方式1,允許接收

        C_T2=0;

        RCLK=1;

        TCLK=1;

        RCAP2H=0xff;

        RCAP2L=0xd8;//波特率=4800的設置值

        TR2=1;

        }

        T2的波特率公式為:BAUND=fOSC/[32*65536-(RCAP2H,RCAP2L)],以下是各種波特率下RCAP2L的取值:

        RCAP2H=0xff;

        RCAP2L=0xd8;//波特率=4800

        //RCAP2L=0xec;//波特率=9600

        //RCAP2L=0xf6;//波特率=19200

        //RCAP2L=0xfb;//波特率=38400

        上述各種波特率情況下串口超級中斷顯示接收數據正常:都為10個s。

        選用8952中的T2作波特率發生器可以得到比T1高得多的波特率。



        關鍵詞: 6M晶振波特

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 卫辉市| 连平县| 武定县| 报价| 陇西县| 郯城县| 镶黄旗| 延津县| 昆明市| 深州市| 衡水市| 色达县| 遂溪县| 台中市| 建昌县| 喀喇沁旗| 常宁市| 衡阳市| 休宁县| 竹山县| 聊城市| 醴陵市| 梅河口市| 深水埗区| 海门市| 临夏市| 杭州市| 三江| 湖口县| 波密县| 颍上县| 桂林市| 河津市| 嵊州市| 大兴区| 定兴县| 怀集县| 岑溪市| 自贡市| 东安县| 娄底市|