<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何在6M晶振下得到更高的波特率

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

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

          下面先來(lái)看看用T1做波特率發(fā)生器時(shí)的情況,晶振為6M:

          本文引用地址:http://www.ex-cimer.com/article/201611/317915.htm

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

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

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

          voidInitialSerialPort()

          {

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

          C_T2=0;

          RCLK=1;

          TCLK=1;

          RCAP2H=0xff;

          RCAP2L=0xd8;//波特率=4800的設(shè)置值

          TR2=1;

          }

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

          RCAP2H=0xff;

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

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

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

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

          上述各種波特率情況下串口超級(jí)中斷顯示接收數(shù)據(jù)正常:都為10個(gè)s。

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



          關(guān)鍵詞: 6M晶振波特

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();