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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > I2C 24LC02 C讀寫程序設計

          I2C 24LC02 C讀寫程序設計

          作者: 時間:2011-11-22 來源:網絡 收藏

          /*************************************************************
          起動總線函數
          函數原型: void start_i2c();
          Function: start on the bus
          *************************************************************/
          void start_i2c()
          {
          SDA=1; //發(fā)送啟始條件的數據信號
          nop();
          SCL=1;
          nop();nop();nop();nop();nop(); //要求建立時間大于4,7S
          SDA=0; //發(fā)送起始信號
          nop();nop();nop();nop();nop();
          SCL=0; //鉗住總線,準備發(fā)送數據或接收數據
          nop();nop();
          }


          /*************************************************************
          停止總線函數
          函數原型: void stop_i2c();
          Function: stop the bus
          **************************************************************/
          void stop_i2c()
          {

          SDA=0; //發(fā)送結束條件的數據信號
          nop();
          SCL=1;
          nop();nop();nop();nop();nop();
          SDA=1;
          nop();nop();nop();nop();
          }

          /*====================================================
          字節(jié)數據傳送函數
          函數原型: void send_byte(uchar c);
          Function: 將數據C發(fā)送出去,可以是地址,也可以是數據,發(fā)完后等待回應,并對此狀態(tài)
          位進行操作(不應答或非應答都使ack=0 ),發(fā)送數據正常,ack=1;ack=0
          表示被控器無應答或損壞。
          ====================================================*/
          void send_byte(uchar c)
          {
          uchar bit_count;
          for (bit_count=0;bit_count8;bit_count++)
          {
          if ((cbit_count)0x80) {SDA=1;}
          else {SDA=0;}
          nop();
          SCL=1;
          nop();nop();nop();nop();nop();
          SCL=0;
          }
          nop();nop();
          SDA=1;
          nop();nop();
          SCL=1;
          nop();nop();nop();
          if (RC4==1) ack=0;
          else ack=1; //用ASK=1為有應答信號
          SCL=0;
          nop();nop();
          }

          /*================================================
          字節(jié)數據接收函數
          函數原型:uchar receive_byte();
          FUNCTION: 用來接收從器件傳來的數據,并判斷總線錯誤(不發(fā)應答信號),
          發(fā)完后請用應答函數。
          ====================================================*/
          uchar receive_byte()
          {
          uchar retc,bit_count;
          retc=0;
          SDA=1;
          for (bit_count=0;bit_count8;bit_count++)
          {
          nop();
          SCL=0;
          nop();nop();nop();nop();nop();
          SCL=1;
          nop();nop();
          retc=retc1;
          if (RC4==1) retc=retc+1;
          nop();nop();
          }
          SCL=0;
          nop();nop();
          return (retc);
          }


          /*=================================================
          向有子地址器件發(fā)送多字節(jié)數據函數
          函數原型: bit I_send_str(uchar sla,uchar suba,uchar *s,uchar no);
          Function: 從啟動總線到發(fā)送地址,數據,結束總線的全過程,從器件地址sla。如果
          返回1表示操作成功,否則操作有誤。
          ================================================*/
          void I_send_str(uchar sla,uchar suba,uchar *s,uchar no)
          {
          uchar i;
          start_i2c();
          send_byte(sla);
          if (ack==0) i2c_error();
          send_byte(suba);
          if (ack==0) i2c_error();
          for (i=0;ino;i++)
          {
          send_byte(*s);
          if (ack==0) i2c_error();
          s++;
          }
          stop_i2c();
          // return(1);
          }

          /*****************************************************************
          延時函數
          函數原型: void delay_250ms();
          FUNCTION: 延明250ms
          *****************************************************************/
          void delay_250ms()
          {
          unsigned int d=24999;
          while (--d);
          }

          /*****************************************************************
          總線錯誤函數
          函數原型: void i2c_error();
          Function: 通過RD7閃動8次表示總線操作失敗一次報警。
          *****************************************************************/
          void i2c_error ()
          {
          uchar i;
          for (i=0;i8;i++)
          {
          RD7=0;
          delay_250ms();
          RD7=1;
          delay_250ms();
          }

          }
          /**********END**************/

          本文引用地址:http://www.ex-cimer.com/article/150033.htm
          塵埃粒子計數器相關文章:塵埃粒子計數器原理

          上一頁 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); })();