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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 再次發(fā)模擬串口,51自適應波特率

          再次發(fā)模擬串口,51自適應波特率

          作者: 時間:2016-11-29 來源:網(wǎng)絡 收藏
          這個是在12T的8051上面用的模擬串口程序,配合22.1184M的晶振,加上6T的雙倍速,波特率可以上38400……但是我認為和某些STC的芯片比,還是差了一點,所以說,看官門看注釋吧。開啟幀請發(fā)送沒有連續(xù)低電平的字符,類似0×55,0xff,0x7f如此等等,如果有連續(xù)低電平很容易造成判斷失誤……這個程序可以用在STC的自動冷啟動模塊里(STC15F101系列就行,很便宜的,注意是八位裝載模式順便把T1X12關了~然后補償可以順便減小一點,順便說一句,用AT89C51來做也行)。這個在24M/22.1184M/11.0592M均工作正常,11.0592能到9600,24能到38400。不過,我提個醒,如果看官們真拿這個做STC冷啟的時候一定要限制波特率小于等于4800。要不然的話。串口正常通訊的時候,這個模塊同步上去,把你的電斷了,連接掐了,然后估計你會拼命找程序是不是跑飛,浪費很多時間,……

          順便說一句,這個程序也有另外一個用途,在晶振不準的時候仍然可以和電腦以標準波特率通訊。方法就是規(guī)定好幀格式,然后上位機不停換波特率找到?jīng)]有誤碼率的波特率,然后根據(jù)下位機的應答計算出下位機的時鐘頻率,這個是受了老妖ISP的啟發(fā)才想到的~大家可以參考我發(fā)布的另2篇文章:模擬串口自動測量波特率的單片機程序http://www.51hei.com/mcu/1537.html,下面這個網(wǎng)頁是用11.0592兆的晶振模擬串口接收發(fā)發(fā)送的已經(jīng)通過本人測試http://www.51hei.com/mcu/1418.html

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

          上代碼:

          /** 自適應波特率模擬串口程序,* BY 萬致遠@rwzy.co.cc* CRYSTAL:任意*/#include #include #include #define MIS_0 0#define MIS_2 1#define MIS_4 2#define MIS_8 3 #define MIS_16 4 BYTE min_mode;//減倍模式void WaitTF1(){while(!TF1);TF1=0;if(min_mode==MIS_2){// /2while(!TF1);TF1=0;}else if(min_mode == MIS_4){// /4while(!TF1);TF1=0;while(!TF1);TF1=0;while(!TF1);TF1=0;}else if(min_mode == MIS_8){// /8while(!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){// /16while(!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;}}void WByte(BYTE out){//發(fā)送啟始位BYTE i=8;BYTE tmp=out;TR1=1;//開定時器TX1=0;WaitTF1();//發(fā)送8位數(shù)據(jù)位while(i--){TX1=(tmp&0x01);     //先傳低位tmp=tmp>>1;WaitTF1();}//發(fā)送校驗位(無)//發(fā)送結束位TX1=1;WaitTF1();TR1=0;}    				   
          				
                      
                          
          			
          							
          上一頁 1 2 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁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); })();