您好,歡迎訪問上海意泓電子科技有限責任公司網站!
      4新聞資訊
      您的位置: 首頁 ->  新聞資訊 -> 單片機

      ?MSP430學習的第一個模擬I2C程序

      文章出處:單片機 責任編輯:上海意泓電子科技有限責任公司 發(fā)表時間:
      2018
      05-20

      #include  
      unsigned char I2CBUF;
      unsigned char checkbit;
      #define SCL_H   (P10OUT |= BIT2)      // P10.2為SCL
      #define SCL_L   (P10OUT &= ~BIT2)
      #define SDA_H   (P10OUT |= BIT1)     //p10.1為SDA
      #define SDA_L   (P10OUT &= ~BIT1)
      #define SDA_OUT  (P10DIR |= BIT1)
      #define SDA_IN  (P10DIR &= ~ BIT1)
      void I2C_Start(void)    //I2C開始信號
      {
       SDA_OUT;
       SCL_L;
       SDA_H;
       __delay_cycles(5);
       SCL_H;
       __delay_cycles(5);
       SDA_L;
       __delay_cycles(5);
       SCL_L;
       __delay_cycles(5);
      }
      unsigned char testACK(void) {
       SDA_IN;
       __delay_cycles(5);
       SCL_H;
       __delay_cycles(5);
       checkbit = (P10IN & BIT1) >> 4;
       __delay_cycles(5);
       SCL_L;
       __delay_cycles(5);
       return (checkbit);
      }
      void I2C_ACK(void)                //應答信號
      {
       SDA_OUT;
       SCL_L;
       SDA_L;
       __delay_cycles(5);
       SCL_H;
       __delay_cycles(5);
       SCL_L;
       __delay_cycles(5);
       SDA_H;
      }
      void I2C_NACK(void) {
       SDA_OUT;
       SDA_H;
       __delay_cycles(5);
       SCL_H;
       __delay_cycles(5);
       SCL_L;
       __delay_cycles(5);
      }
      void I2C_STOP(void)             //產生結束信號
      {
       SCL_L;
       __delay_cycles(5);
       SDA_L;
       __delay_cycles(5);
       SCL_H;
       __delay_cycles(5);
       SDA_H;
       __delay_cycles(5);
      }
      void I2C_WRITE(unsigned char data)
      {
       SDA_OUT;
       unsigned char i;
       for (i = 8; i > 0; i--)      //高位循環(huán)8次,發(fā)送1個字節(jié)數(shù)據(jù)
          {
        if (data & 0x80)   //判斷數(shù)據(jù)高位是0還是1
           {
         SDA_H;           //高位數(shù)據(jù)寫1
        }
        else
        {
         SDA_L;
        }
        SCL_H;
        __delay_cycles(5);  //發(fā)送數(shù)據(jù)
        SCL_L;
        __delay_cycles(5);
        data <<= 1;

       }
      }
      unsigned char I2C_READ(void)
      {
       unsigned char j;
       unsigned char BUFFER = 0X00;
       SDA_IN;
       for (j = 8; j >0; j--)      //高位循環(huán)8次,發(fā)送1個字節(jié)數(shù)據(jù)
          {
        SCL_H;
        __delay_cycles(5);
        BUFFER <<= 1;
        if ((P10IN & BIT1) == BIT1)   //判斷數(shù)據(jù)高位是0還是1
        {
         BUFFER |= 0X01;         //高位數(shù)據(jù)寫1
        }
        else
        {
         BUFFER |= 0XFE;
        }
        __delay_cycles(5);  //發(fā)送數(shù)據(jù)
        SCL_L;
        __delay_cycles(5);
       }
       return BUFFER;
      }
      void C16_WRITEDATA(unsigned char address, unsigned char DATA)
      {
       I2C_Start();
       I2C_WRITE(address);
       testACK();
       I2C_ACK();
       I2C_WRITE(0x00);
       testACK();
       I2C_ACK();
       I2C_WRITE(DATA);
       I2C_STOP();
      }
      unsigned char C16_READEDATA(unsigned char address)
      {
       unsigned char READDATA;
       I2C_Start();
       I2C_WRITE(0XA1);
       testACK();
       I2C_ACK();
       I2C_WRITE(address);
       I2C_Start();
       testACK();
       I2C_ACK();
       I2C_WRITE(0XA1);
       READDATA = I2C_READ();
       I2C_STOP();
       return READDATA;
      }
      int main(void)
      {
          const int DATA = 0X88;
       unsigned char READBUFFER;
       WDTCTL = WDTPW + WDTHOLD;
       P10DIR |= BIT1 + BIT2;
       P2DIR |= BIT0;
       P2OUT &= ~BIT0;
       C16_WRITEDATA(0X00, DATA);
       __delay_cycles(5);
       READBUFFER = C16_READEDATA(0X00);
       while (1)
       {
        if (READBUFFER == 0X88)
        {
         P2OUT |= BIT0;
        } else {
         P2OUT &= ~ BIT0;
        }
        __delay_cycles(15);
       }
      }


      上海意泓電子科技有限責任公司 版權所有 未經授權禁止復制或鏡像

      CopyRight 2020-2025 www.topsschool.com All rights reserved   滬ICP備2021005866號

      亚洲精品无码va人在线观看,少妇 逼小 水多,国产区免费av,国产精品无码观看

          日本一二区中文字幕在线| 国产一级黄| 久久99国产亚洲高清观看首页| 中文成人无字幕乱码精品区| 爱爱综合网| 日韩日韩a无码一级毛片| 欧美日韩国产免费观看一区二区| 中文有码vs无码人妻久久| 人人妻人人添人人爽日韩欧美| 自在线看精品国产高清| 91亚洲国产成人精品性色| 国产做无码视频在线观看| 久久久国产精品四虎| 国产精品成人麻烦视频| 亚洲男人在线观看无码| 欧美日韩国产一级视频| 国产爆乳无码一区二区麻豆| 亚洲国产精品自产拍| 国产精品福利在线观看| 国产成人AⅤ综合在线| 欧美淫乱国产精品一区二区| 欧美亚洲日韩国产综合每日更新| 一本大道久久a久久精品综合| 91精品福利在线观看播放| 久久人人爽人人爽人片av| 亚洲av日韩aⅴ无码电影| A级无码免费视频| 国产午夜人成在线播放| 亚洲国产精品看片在线观看|