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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > I2C總線C語言源程序

          I2C總線C語言源程序

          作者: 時間:2016-11-23 來源:網(wǎng)絡 收藏
          /*VIICC.H*/
          #pragmadbcdsmall
          #include
          #include
          #defineNOPnop();nop();nop();nop()
          #defineSDAP1^7
          #defineSCLP1^6

          voidsta();
          voidcack();
          voidstop();
          voidmnack();
          voidmack();
          voidwrbyt(ucharshu);
          voidwrnbyta(ucharslaw,uchargg[],ucharn);
          voidwrnbyt(ucharslaw,ucharff[],ucharnumber);
          ucharrdbyt();
          voidrdnbyt(ucharslar,ucharqq[],ucharnumber);
          源程序由9個函數(shù)組成,程序清單如下:
          voidsta()/*啟動I2C總線*/
          {
          SDA=1;
          SCL=1;
          NOP;
          SDA=0;
          NOP;
          SCL=0;
          }

          voidstop()/*停止I2C總線
          */
          {
          SDA=0;
          SCL=1;
          NOP;
          SDA=1;
          NOP;
          SCL=0;
          }

          voidmack()/*發(fā)送應答位*/
          {
          SDA=0;
          SCL=1;
          NOP;
          SCL=0;
          SDA=1;
          }

          voidmnack()/*發(fā)送非應答位*/
          {
          SDA=1;
          SCL=1;
          NOP;
          SCL=0;
          SDA=0;
          }

          voidcack()/*應答位檢查*/
          {
          SDA=1;
          SCL=1;
          F0=0;
          if(SDA==1)
          F0=1;
          SCL=0;
          nop();
          }
          /*向虛擬I2C總線上發(fā)送1個數(shù)據(jù)字節(jié)*/
          voidwrbyt(ucharshu)
          {
          uchari;
          for(i=0;i<8;i++){
          if((shu&0x80)>0){
          SDA=1;
          SCL=1;
          NOP;
          SCL=0;
          SDA=0;
          }
          else{
          SDA=0;
          SCL=1;
          NOP;
          SCL=0;
          }
          shu=shu<<1;
          }
          }
          /*從I2C總線上讀取1個數(shù)據(jù)字節(jié)*/
          ucharrdbyt()
          {
          ucharnn=0xff,mm=0x80,uu=0x7f;
          ucharj;
          for(j=0;j<8;j++){
          SDA=1;
          SCL=1;
          if(SDA==0)
          nn=(nn&uu);
          else
          nn=(nn|mm);。
          nn=crol(nn,1);
          SCL=0;
          }
          return(nn);
          }

          voidwrnbyta(ucharslaw,uchargg[],ucharn)
          {
          do{
          sta();
          wrbyt(slaw);
          cack();
          }while(F0==1);
          wrbyt(gg[n]);
          cack();





          }
          /*向虛擬I2C總線上發(fā)送n個字節(jié)的數(shù)據(jù)*/
          voidwrnbyt(ucharslaw,ucharff[],ucharnumber)
          {
          ucharidatak;
          do{
          sta();
          wrbyt(slaw);
          ?cack();
          }while(F0==1);
          for(k=0;kwrbyt(ff[k]);
          cack();
          while(F0==1)
          wrnbyta(slaw,ff,k);
          }
          stop();
          }
          /*從虛擬I2C總線上讀取n個字節(jié)的數(shù)據(jù)*/
          voidrdnbyt(ucharslar,ucharqq[],ucharnumber)
          {
          ucharidatadata0,l;
          do{
          sta();
          wrbyt(slar);
          cack();
          }while(F0==1);?
          for(l=0;ldata0=rdbyt();
          qq[l]=data0;
          mack();
          }
          data0=rdbyt();
          qq[l]=data0;
          mnack();
          stop();
          }


          評論


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