亚洲av综合在线观看|中文字幕乱码亚洲无线码|蜜桃AV鲁一鲁一鲁一鲁樱花影院|中文字幕2019年最好看电视剧|精品人妻av一区|91精品国产青草综合久久不卡|亚洲国产一二三精品无码|无码成人一区二区三区入厕偷拍

知道解決
HOLTEK 主I2C的源程序代碼
瀏覽189次2018-03-13 14:24

調(diào)用的代碼
            case C_READ+C_I2C:
                return_buf[2] = comm_buf[4];    // 
                read(comm_buf[3],comm_buf[4],&return_buf[3]);
                break;
                
            case C_WRITE+C_I2C:
                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);


 
 void i2c_start()
 {
    SCL=1;delay_5us();
    SDA=1;delay_5us();
    SDA=0;delay_5us();delay_5us();
    SCL=0;delay_5us();
 }

 
 void i2c_stop()
 {
    SCL=0; 
    SDA=0;delay_5us();
    SCL=1;delay_5us();
    SDA=1;delay_5us();
 }

 
 uchar WaitAck(void)
 {
    uchar errtime=255;  //因故障接收方無ACK 超時(shí)值為255
    SDA=1 ;delay_5us();
    SCL=1 ;delay_5us();
    while(SDA)
    {
        if (--errtime == 0)
        {
            i2c_stop();
            return 0;
        }
    }
    SCL=0;
    return 1;
 }

 
 void SendNotAck(void)
 {
    SDA=1 ;
    delay_5us();
    SCL=1 ;
    delay_5us();
    SCL=0;
 }

 
 void SendtAck(void)
 {
    SDA=0 ;
    delay_5us();
    SCL=1 ;
    delay_5us();
    SCL=0;
 }

 
 void i2c_writ2(uchar dat)
 {
    uchar i;
    for(i=0;i<8;i++)
    {
 //        SDA=1;
        if((dat&0x80)==0x00) SDA=0;
        else SDA=1;
        SCL=1;delay_5us();SCL=0;
        dat<<=1;
    }
    SDA=1;
    SCL=1;delay_5us();
    SCL=0;delay_5us();
 }

 
 unsigned char cread(uchar addr)
 {
     unsigned char i;
     i2c_start();
     i2c_writ2(Chip_ADDR);        // Write
     i2c_writ2(addr);
     i2c_start();                // Start
     i2c_writ2(CHIP_ADDR+1);        // Read
     i = i2c_rea2(0);
     i2c_stop();
     delay(10);
     return(i);
 }

 
 void cwrite(uchar addr,uchar dat)
 {
     i2c_start();
     i2c_writ2(CHIP_ADDR);        // Write
     i2c_writ2(addr);
     i2c_writ2(dat);
     i2c_stop();
     delay(30);
 }

 
 void read(uchar addr, uchar num, uchar * buf)
 {
     i2c_start();
     i2c_writ2(CHIP_ADDR);        // Write
     i2c_writ2(addr);
     i2c_start();                // Start
     i2c_writ2(CHIP_ADDR+1);        // Read
     for( ; num>0 ; num--)        // 個(gè)數(shù)
     {
         *buf++ = i2c_rea2(1);    // 讀
     }
     i2c_stop();
     delay(10);
 }

 
 void write(uchar addr, uchar num,uchar * buf)
 {
     i2c_start();
     i2c_writ2(CHIP_ADDR);        // Write
     i2c_writ2(addr);
     for( ; num>0 ; num--)        // 個(gè)數(shù)
     {
         i2c_writ2(*buf++);        // 寫
     }
     i2c_stop();
     delay(30);
 }

 
 uchar i2c_rea2(bit ack)
 {
     uchar i,j;
     j=0x00;
     SDA=1;
     for(i=0;i<8;i++)
     {
         SCL=1;
         j=j<<1;
         if(SDA) j|=0x01;
         SCL=0;delay_5us();
     }
     if(ack) SDA=0;
     SCL=1;delay_5us();
     SCL=0;delay_5us();
     return j;
 }

 
 void delay_5us()
 {
     uchar i;
     //for(i=0;i<2;i++){}
     for(i=0;i<4;i++)
     {
     }
 }

右側(cè)廣告
關(guān)于我們 | 廣告服務(wù) | 會(huì)員服務(wù) | 隱私申明 | 友情鏈接 | 聯(lián)系我們 | 法律顧問 | 網(wǎng)站地圖 | 百方網(wǎng)信用評(píng)價(jià)制度 (c)2008-2025 BYF All Rights Reserved
網(wǎng)絡(luò)標(biāo)識(shí)
可信網(wǎng)站識(shí)