色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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

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

          本文引用地址:http://cafeforensic.com/article/201611/321507.htm

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

          1、IIC總線(xiàn)典型信號(hào)時(shí)序及模擬子程序(其實(shí)上一篇已經(jīng)介紹過(guò)了,不過(guò)我這里有點(diǎn)補(bǔ)充,順便小小介紹一下吧)

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



          對(duì)于IIC總線(xiàn)的典型信號(hào),可以用指令操作來(lái)模擬其時(shí)序過(guò)程。

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

          1)啟動(dòng)IIC總線(xiàn)子程序START(先是匯編,然后是c語(yǔ)言的)

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

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

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

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

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


          上一頁(yè) 1 2 3 4 下一頁(yè)

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

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉