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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機(jī)模擬串口的三種方法

          51單片機(jī)模擬串口的三種方法

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

          /***********************************************************

          方法三:

          分 析:中斷的方法和計數(shù)器的方法差不多,只是當(dāng)計算器溢出時便產(chǎn)生一次中斷,用戶可以在中斷程序中置標(biāo)志,程序不斷的查詢該標(biāo)志來決定是否發(fā)送或接收下一位,當(dāng)然程序中需對中斷進(jìn)行初始化,同時編寫中斷程序。本程序使用Timer0中斷。也是我推薦的方法,和計數(shù)法大同小異。發(fā)送程序參考計數(shù)法,相信是件很容易的事。另外還需注明的是本文所說的串口就是通常的三線制異步通信串口(UART),只用

          RXD、TXD、GND。

          ***********************************************************/

          #define TM0_FLAG P1_2 //設(shè)傳輸標(biāo)志位

          //計數(shù)器及中斷初始化

          void S2INI(void)

          {

          TMOD |=0x02; //計數(shù)器0,方式2

          TH0=0xA0; //預(yù)值為256-96=140,十六進(jìn)制A0

          TL0=TH0;

          TR0=0; //在發(fā)送或接收才開始使用

          TF0=0;

          ET0=1; //允許定時器0中斷

          EA=1; //中斷允許總開關(guān)

          }

          //接收一個字符

          uchar RByte()

          {

          uchar Output=0;

          uchar i=8;

          TR0=1; //啟動Timer0

          TL0=TH0;

          WaitTF0(); //等過起始位

          //接收8位數(shù)據(jù)位

          while(i--)

          {

          Output >>=1;

          if(RXD) Output |=0x80; //先收低位

          WaitTF0(); //位間延時

          }

          while(!TM0_FLAG) if(RXD) break;

          TR0=0; //停止Timer0

          return Output;

          }

          //中斷1處理程序

          void IntTimer0() interrupt 1

          {

          TM0_FLAG=1; //設(shè)置標(biāo)志位。

          }

          //查詢傳輸標(biāo)志位

          void WaitTF0( void )

          {

          while(!TM0_FLAG) ;

          TM0_FLAG=0; //清標(biāo)志位

          }

          51單片機(jī)相關(guān)文章:51單片機(jī)教程



          上一頁 1 2 3 下一頁

          評論


          相關(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); })();