在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        MSP430普通I/0口模擬IIC總線

        作者: 時(shí)間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
        #include "main.h"

        #define SLAVE_ADDRESS 0x04
        #define SLAVE_WRITE_ADDRESS (SLAVE_ADDRESS<<1)|0x00
        #define SLAVE_READ_ADDRESS (SLAVE_ADDRESS<<1)|0x01

        本文引用地址:http://www.biyoush.com/article/201611/316491.htm

        #define I2C_SDABIT3
        #define I2C_SCLBIT4
        #define I2C_PORT_INP6IN
        #define I2C_PORT_OUTP6OUT
        #define I2C_PORT_DIRP6DIR

        #define SDA_IN(I2C_PORT_IN & I2C_SDA)
        #define SCL_IN(I2C_PORT_IN & I2C_SCL)
        #define S_SDAI2C_PORT_DIR &= ~I2C_SDA
        #define C_SDAI2C_PORT_DIR |= I2C_SDA;I2C_PORT_OUT &= ~I2C_SDA
        #define S_SCLI2C_PORT_DIR &= ~I2C_SCL
        #define C_SCLI2C_PORT_DIR |= I2C_SCL;I2C_PORT_OUT &= ~I2C_SCL

        void I2C_init(void)
        {
        I2C_PORT_DIR &= ~(I2C_SDA|I2C_SCL);
        I2C_PORT_OUT |= (I2C_SDA|I2C_SCL);
        }

        void I2C_DELAY(void)
        {
        asm("nop");asm("nop");
        asm("nop");asm("nop");
        asm("nop");asm("nop");
        asm("nop");asm("nop");
        }

        void I2C_Start(void)
        {
        S_SDA;
        S_SCL;
        I2C_DELAY();
        C_SDA;
        I2C_DELAY();
        C_SCL;
        }

        void I2C_Stop(void)
        {
        C_SDA;
        I2C_DELAY();
        S_SCL;
        I2C_DELAY();
        S_SDA;
        I2C_DELAY();
        }

        void I2C_Send_Ack(void)
        {
        C_SDA;
        I2C_DELAY();
        S_SCL;
        I2C_DELAY();
        C_SCL;
        I2C_DELAY();
        }

        void I2C_Send_NoAck(void)
        {
        S_SDA;
        I2C_DELAY();
        S_SCL;
        I2C_DELAY();
        C_SCL;
        I2C_DELAY();
        }


        void I2C_Read_Ack(void)
        {
        unsigned char i = 0;
        S_SCL;
        S_SDA;
        I2C_DELAY();
        for(i=0; i<100; i++)
        {
        if(SDA_IN == 0)
        {
        I2C_DELAY(); break;
        }
        I2C_DELAY();
        }
        C_SCL;
        I2C_DELAY();
        }

        void I2C_WriteByte(unsigned char one_byte)
        {
        unsigned char i = 0;
        S_SDA;
        for (i=0; i<8; i++)
        {
        if (one_byte&0x80)
        {
        S_SDA;
        }
        else
        {
        C_SDA;
        }
        one_byte<<=1;
        I2C_DELAY();
        S_SCL;
        I2C_DELAY();
        C_SCL;
        I2C_DELAY();
        }
        }

        unsigned char I2C_ReadByte(void)
        {
        unsigned char read_byte=0;
        unsigned char i = 0;
        S_SDA;
        //C_SCL;
        I2C_DELAY();
        for (i=0; i<8; i++)
        {
        S_SCL;
        I2C_DELAY();
        read_byte<<=1;
        if (SDA_IN != 0)
        {
        read_byte |= 0x01;
        }
        //I2C_DELAY;
        C_SCL;
        I2C_DELAY();
        }
        return read_byte;
        }


        void I2C_write_Nbyte(unsigned char *pbuf, unsigned char cnt)
        {
        unsigned char i = 0;
        I2C_Start();
        I2C_WriteByte(SLAVE_WRITE_ADDRESS);
        I2C_Read_Ack();
        for (i=0; i {
        I2C_DELAY();I2C_DELAY();
        I2C_WriteByte(*pbuf);
        pbuf++;
        I2C_Read_Ack();
        }
        I2C_Stop();
        }

        void I2C_read_Nbyte(unsigned char *pbuf, unsigned char cnt)
        {
        unsigned char i = 0;
        I2C_Start();
        I2C_WriteByte(SLAVE_READ_ADDRESS);
        I2C_Read_Ack();
        for (i=1; i {
        I2C_DELAY();I2C_DELAY();
        *pbuf = I2C_ReadByte();
        pbuf++;
        I2C_Send_Ack();
        }
        *pbuf = I2C_ReadByte();
        I2C_Stop();
        }



        關(guān)鍵詞: MSP430普通I0口模擬IIC總

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉