新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > HOLTEK 主I2C的源程序代碼

        HOLTEK 主I2C的源程序代碼

        作者: 時間:2011-05-17 來源:網(wǎng)絡(luò) 收藏

        本文引用地址:http://www.104case.com/article/150740.htm

        調(diào)用的
        case C_READ+C_:
        return_buf[2] = comm_buf[4]; //
        read(comm_buf[3],comm_buf[4],return_buf[3]);
        break;

        case C_WRITE+C_:
        return_buf[2] = 0;
        write(comm_buf[3],comm_buf[4],comm_buf[5]);
        break;


        主I2C的

        #define CHIP_ADDR 0x78

        unsigned char cread(uchar addr);
        void cwrite(uchar addr,uchar dat);
        void read(uchar addr, uchar num, uchar * buf);
        void write(uchar addr, uchar num,uchar * buf);
        void i2c_start(void);
        void i2c_stop(void);
        uchar WaitAck(void);
        void SendNotAck(void);
        void SendtAck(void);
        void delay_5us(void);
        void delay(unsigned char num);
        void i2c_writ2(unsigned char dat);
        uchar i2c_rea2(bit ack);


        /***********************************************
        總線啟動函數(shù)
        ***********************************************/
        void i2c_start()
        {
        SCL=1;delay_5us();
        SDA=1;delay_5us();
        SDA=0;delay_5us();delay_5us();
        SCL=0;delay_5us();
        }

        /***********************************************
        總線停止函數(shù)
        ***********************************************/
        void i2c_stop()
        {
        SCL=0;
        SDA=0;delay_5us();
        SCL=1;delay_5us();
        SDA=1;delay_5us();
        }

        /***********************************************
        I2C總線發(fā)送數(shù)據(jù)時的ACK應(yīng)答
        ***********************************************/
        uchar WaitAck(void)
        {
        uchar errtime=255; //因故障接收方無ACK 超時值為255
        SDA=1 ;delay_5us();
        SCL=1 ;delay_5us();
        while(SDA)
        {
        if (--errtime == 0)
        {
        i2c_stop();
        return 0;
        }
        }
        SCL=0;
        return 1;
        }

        /***********************************************
        I2C總線接收數(shù)據(jù)時的NO ACK應(yīng)答
        ***********************************************/
        void SendNotAck(void)
        {
        SDA=1 ;
        delay_5us();
        SCL=1 ;
        delay_5us();
        SCL=0;
        }

        /***********************************************
        I2C總線接收數(shù)據(jù)時的ACK應(yīng)答
        ***********************************************/
        void SendtAck(void)
        {
        SDA=0 ;
        delay_5us();
        SCL=1 ;
        delay_5us();
        SCL=0;
        }

        /***********************************************
        寫1個字節(jié)的函數(shù)
        ***********************************************/
        void i2c_writ2(uchar dat)
        {
        uchar i;
        for(i=0;i8;i++)
        {
        // SDA=1;
        if((dat0x80)==0x00) SDA=0;
        else SDA=1;
        SCL=1;delay_5us();SCL=0;
        dat=1;
        }


        上一頁 1 2 下一頁

        關(guān)鍵詞: 代碼 源程序 I2C HOLTEK

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 年辖:市辖区| 张家口市| 西峡县| 巫溪县| 阿瓦提县| 桦川县| 高清| 郯城县| 抚宁县| 婺源县| 灵山县| 醴陵市| 全南县| 修武县| 凤山县| 宾川县| 儋州市| 黄梅县| 松江区| 德令哈市| 田林县| 平阴县| 桓台县| 清河县| 抚州市| 阿合奇县| 洪江市| 吕梁市| 昌邑市| 咸阳市| 亳州市| 凤凰县| 北辰区| 集安市| 昌乐县| 太康县| 出国| 吉林省| 东台市| 齐齐哈尔市| 荥阳市|