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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機—再論IIC—軟件通用包(匯編、c語言)—03

          51單片機—再論IIC—軟件通用包(匯編、c語言)—03

          作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
          感覺心有不甘,呵呵,小小整理一下。

          我們知道51單片機中具有IIC總線接口的畢竟是少數(shù)(其實我就不知道那款~~)如果是是不帶IIC總線的單片機,并不必擴展IIC總線接口,只是需要通過軟件模擬,這無疑會給IIC總線的應(yīng)用提供更廣泛的空間。通常大多數(shù)的單片機應(yīng)用系統(tǒng)中只有一個CPU,這種單主系統(tǒng)如果采用IIC總線技術(shù),則總線上只有單片機對IIC總線從器件的訪問,沒有總線的競爭問題。這是后只需要模擬主發(fā)送和主接收時序?;谏鲜隹紤],(這才是重點,呵呵),提供在這種使用情況下的時序模擬軟件,使IIC總線的使用不受單片機必須帶有IIC總線接口的限制。

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

          下面的9個例子可以作為一個軟件包,這個軟件放入單片機系統(tǒng)的程序程序存儲器中,以便用來調(diào)用。

          1、IIC總線典型信號時序及模擬子程序(其實上一篇已經(jīng)介紹過了,不過我這里有點補充,順便小小介紹一下吧)

          IIC總線上數(shù)據(jù)傳送時,有起始位,停止位,應(yīng)答位,非應(yīng)答位等信號。按照典型IIC總線傳送速率的要求,如圖:



          對于IIC總線的典型信號,可以用指令操作來模擬其時序過程。

          若89C51單片機的系統(tǒng)時鐘為12MHz,相信的單周期指令為1us,則起始位(START)、停止位(STOP)、發(fā)送應(yīng)答位(MACK)、發(fā)送非應(yīng)答位(MNACK)的5個模擬子程序如下:

          1)啟動IIC總線子程序START(先是匯編,然后是c語言的)

          ;--------------------------------------------------------
          ;發(fā)開始信號子程序
          START:SETBSDA
          SETBSCL;起始條件建立大于4.7us
          NOP
          NOP
          NOP
          NOP
          NOP
          CLRSDA;起始條件鎖定大于4us
          NOP
          NOP
          NOP
          NOP
          NOP
          CLRSCL;鉗住總線,準備好發(fā)送數(shù)據(jù)
          NOP
          RET

          //----------------------------------------------------------
          //開始信號函數(shù)
          void IIC_start()
          {
          sda=1;
          _nop_();
          scl=1;//開始信號建立時間大于4.7us
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          sda=0; //開始信號鎖定大于4us
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          scl=0;//鉗住IIC總線,準備發(fā)送或者接收數(shù)據(jù)
          _nop_();
          _nop_();
          }

          2)停止IIC總線程序STOP(先是匯編,后是c語言)

          ;--------------------------------------------------------
          ;發(fā)結(jié)束信號子程序
          STOP:CLRSDA
          NOP
          SETBSCL;結(jié)束總時間大于4us
          NOP
          NOP
          NOP
          NOP
          NOP
          SETBSDA
          NOP ;保證一個終止信號和其實信號的空閑時間大于4.7us
          NOP
          NOP
          NOP
          NOP
          RET

          //---------------------------------------------------------------
          //結(jié)束信號函數(shù)
          void IIC_stop()
          {
          sda=0;
          _nop_();
          scl=1; //結(jié)束時間大于4us
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          sda=1;//保證一個終止信號和其實信號的空閑時間大于4.7us
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          }


          上一頁 1 2 3 4 下一頁

          關(guān)鍵詞: 51單片機IIC軟件通用

          評論


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