歡迎您光臨本站 登入註冊首頁

概述

/*    51系列單片機在使用時,有時需要模擬I2C匯流排,        &n……

/*     51系列單片機在使用時,有時需要模擬I2C匯流排,                      */
      /*   這裡舉出一個實例(讀寫串列EEPROM晶元at2402)                       */
      /************************************************************************/
      /* Name:AT24C02存儲器的讀寫程序,用到I2C匯流排,含相對獨立的I2C匯流排讀寫函數 */
      /* Language: C51單片機編程語言                                          */                            */
      /* Date: 2003年5月21日,5月22日,5月29日                                  */
      /* Version: 1.1.1                            */
      /* Others: None                                                         */
      /************************************************************************/
          #include<string.h>
          #include<reg52.h>
          #include<intrins.h>
          #define DELAY_TIME 60 /*經實驗,不要小於50!否則可能造成時序混亂*/
          #define TRUE 1
          #define FALSE 0
          sbit SCL=P1^7;/*假設由P1.7和P1.6控制*/
          sbit SDA=P1^6;
      /********** Function Definition 函數定義 ************/
          void DELAY(unsigned int t) /*延時函數*/
          {
              while(t!=0)
                  t--;
          }
          void I2C_Start(void)
          {
              /*啟動I2C匯流排的函數,當SCL為高電平時使SDA產生一個負跳變*/
              SDA=1;
              SCL=1;
              DELAY(DELAY_TIME);
              SDA=0;
              DELAY(DELAY_TIME);
              SCL=0;
              DELAY(DELAY_TIME);
          }
          void I2C_Stop(void)
          {
              /*終止I2C匯流排,當SCL為高電平時使SDA產生一個正跳變*/
              SDA=0;
              SCL=1;
              DELAY(DELAY_TIME);
              SDA=1;
              DELAY(DELAY_TIME);

[admin via 研發互助社區 ] 單片機模擬I2C匯流排及24C02(I2C EEPROM)讀寫實例已經有8721次圍觀

http://cocdig.com/docs/show-post-504.html