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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 模擬串口自動測量波特率的單片機程序

          模擬串口自動測量波特率的單片機程序

          作者: 時間:2012-08-02 來源:網(wǎng)絡(luò) 收藏

          我這個程序能夠測量串口的,并且將自身的設(shè)置到通訊。
          這個在STC89C52/STC15F104(其實主要針對STC15F104,因為它沒有串口)上面通過。不過因為是,在11.0592 12T的情況下,最多到19200。
          然后在STC15F104上面,要適量的減少補償值……
          順便說一句,編譯器建議使用sdcc。keil的SB printf函數(shù)搞死我了……在22.1184 6T的情況下大約能到57600.
          當然在STC15F系列到115200毫無壓力,可是是半雙工的。要做全雙工只能減倍波特率……
          測量波特率的方法很簡單。校準他的波特率的方法就是發(fā)送沒有連續(xù)低電平的字符,類似0x55/0xff/0x7f之類的。使用這個特性還可以將它用在STC自動冷啟動下載器中。不過注意要限制校準波特率。否則你的正常串口通訊可能會被干擾,因為你比如115200通訊的時候,正好波形類似57600的7F,校準上去了把你的連接掐了,估計很多人都會看看程序是不是跑飛了……所以一定要把同步波特率降到4800以下,因為STC-ISP的默認最低波特率是從1200~4800.
          這個也可以適用于不準晶振的單片機和計算機通訊。方法就是計算機以不同波特率發(fā)送校準信號,找出誤碼率最低的波特率,然后發(fā)送確認,讓單片機在這個重載值下運行,也適用于時鐘速度可能變化的單片機/懶得計算重載值的人使用。
          然后低于4800的波特率在11.0592的速度下面只能分頻,這也是不得已的……
          上代碼:

          /*
          * 自適應(yīng)波特率程序,
          * BY 萬致遠@rwzy.co.cc
          * CRYSTAL:任意
          */
          #include hwconfig.h>
          #include type-def.h>
          #include stdio.h>
          #define MIS_0 0
          #define MIS_2 1
          #define MIS_4 2
          #define MIS_8 3
          #define MIS_16 4
          #define TX1 P1_0 //發(fā)送數(shù)據(jù)端口
          #define RX1 P1_1 //接收數(shù)據(jù)端口
          BYTE min_mode;//減倍模式
          void WaitTF1()
          {
          while(!TF1);
          TF1=0;
          if(min_mode==MIS_2)
          {// /2
          while(!TF1);
          TF1=0;
          }
          else if(min_mode == MIS_4)
          {// /4
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          }
          else if(min_mode == MIS_8)
          {// /8
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          }
          else if(min_mode == MIS_16)
          {// /16
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          while(!TF1);
          TF1=0;
          }
          }


          上一頁 1 2 下一頁

          關(guān)鍵詞: 模擬串口 自動測量 波特率

          評論


          相關(guān)推薦

          技術(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); })();