《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > HOLTEK 主I2C的源程序代碼

HOLTEK 主I2C的源程序代碼

2009-01-14
關鍵詞: Holtek 源代碼

HOLTEK 主I2C的源程序代碼

調用的代碼
             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();
 }

 /***********************************************
     I2C總線發送數據時的ACK應答
 ***********************************************/
 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總線接收數據時的NO ACK應答
 ***********************************************/
 void SendNotAck(void)
 {
     SDA=1 ;
     delay_5us();
     SCL=1 ;
     delay_5us();
     SCL=0;
 }

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

 /***********************************************
     寫1個字節的函數
 ***********************************************/
 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();
 }

 /***********************************************
     讀當前1字節數據函數
 ***********************************************/
 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);
 }

 /***********************************************
     寫當前1字節數據函數
 ***********************************************/
 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--)        // 個數
     {
         *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--)        // 個數
     {
         i2c_writ2(*buf++);        // 寫
     }
     i2c_stop();
     delay(30);
 }

 /***********************************************
     讀1字節函數
 ***********************************************/
 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++)
     {
     }
 }

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
在线欧美日韩精品| 一区二区欧美日韩视频| 欧美色中文字幕| 欧美gay视频| 久久综合久色欧美综合狠狠| 久久精品综合网| 久久aⅴ国产紧身牛仔裤| 亚洲欧美在线磁力| 亚洲欧美精品在线观看| 亚洲欧美日韩人成在线播放| 中文亚洲免费| 亚洲女女女同性video| 在线亚洲观看| 亚洲天堂第二页| 亚洲尤物视频在线| 亚洲欧美色一区| 欧美一区二区三区婷婷月色| 香蕉亚洲视频| 久久精品国亚洲| 久久婷婷丁香| 欧美国产第一页| 欧美日韩免费在线视频| 欧美性猛交一区二区三区精品| 欧美日韩一区二区高清| 国产精品成人一区二区三区吃奶| 国产精品高潮在线| 国产精品婷婷| 国产在线精品自拍| 亚洲福利专区| 亚洲精品久久久久中文字幕欢迎你| 亚洲精品日产精品乱码不卡| 日韩五码在线| 亚洲免费视频观看| 久久爱www| 亚洲免费大片| 亚洲摸下面视频| 久久精品女人| 欧美精品123区| 国产精品乱码人人做人人爱| 国产亚洲欧美日韩精品| 在线欧美一区| 夜夜嗨av一区二区三区网站四季av| 亚洲网站视频| 亚洲国产欧美一区二区三区久久 | 亚洲电影自拍| 亚洲精选国产| 亚洲免费在线视频| 亚洲国产一区在线| 亚洲一级高清| 久久九九热免费视频| 欧美国产精品久久| 国产精品免费电影| 狠狠综合久久| aa级大片欧美| 欧美在线|欧美| 一区二区三区四区五区精品视频| 香蕉久久一区二区不卡无毒影院 | 亚洲欧美日韩综合| 裸体歌舞表演一区二区| 欧美日韩精品一区二区三区四区| 国产精品久久中文| 在线欧美小视频| 亚洲一区精彩视频| 亚洲人成网站999久久久综合| 亚洲欧美国产另类| 欧美国产日韩在线观看| 国产女人aaa级久久久级| 亚洲福利专区| 性久久久久久久| 亚洲无亚洲人成网站77777| 久久免费视频观看| 国产精品高精视频免费| 亚洲电影下载| 欧美一区二区免费观在线| 夜夜嗨av一区二区三区网站四季av| 久久精品国产久精国产思思| 欧美日产一区二区三区在线观看| 国产一区二区久久久| 日韩午夜在线观看视频| 亚洲国产综合在线| 欧美一区亚洲二区| 欧美日韩一区在线| 亚洲国产美女精品久久久久∴| 亚洲欧美日韩成人高清在线一区| 日韩香蕉视频| 老司机午夜精品| 国产性做久久久久久| 中文无字幕一区二区三区| 亚洲精品少妇| 久久综合亚州| 国产一区二区按摩在线观看| 一本久久综合亚洲鲁鲁五月天| 最新日韩在线视频| 久久久久天天天天| 国产乱子伦一区二区三区国色天香 | 久久国产综合精品| 欧美日本亚洲| 国产综合一区二区| 亚洲欧美日韩国产综合| 亚洲午夜一区| 欧美日韩成人精品| 亚洲国产精品一区二区第一页| 欧美一级视频精品观看| 亚洲欧美在线免费| 欧美午夜精品理论片a级大开眼界| 亚洲区中文字幕| 亚洲日韩成人| 欧美成人免费播放| 在线日韩中文字幕| 亚洲国产老妈| 巨乳诱惑日韩免费av| 国内精品久久久久伊人av| 欧美诱惑福利视频| 久久精品国产在热久久| 国产亚洲欧美激情| 欧美一区二区黄| 久久精品二区亚洲w码| 国产欧美日韩高清| 欧美亚洲日本网站| 久久久久久九九九九| 国产综合18久久久久久| 久久精品亚洲国产奇米99| 老巨人导航500精品| 在线观看精品| 亚洲欧洲免费视频| 欧美精品在线观看| 日韩亚洲在线| 亚洲欧美日本日韩| 国产乱码精品一区二区三区五月婷 | 亚久久调教视频| 国产精品久久久久一区二区| 亚洲视频导航| 先锋影音网一区二区| 国产欧美日韩综合精品二区| 午夜视频在线观看一区| 久久久久久亚洲精品不卡4k岛国| 国产日韩精品视频一区二区三区 | 久久免费视频这里只有精品| 影音欧美亚洲| 亚洲乱码国产乱码精品精可以看 | 午夜亚洲性色视频| 国产亚洲人成a一在线v站| 亚洲成人在线网站| 美女在线一区二区| 亚洲精品一区二| 小辣椒精品导航| 韩国一区二区在线观看| 亚洲精品影院| 国产精品久久久久免费a∨| 亚洲欧美在线一区二区| 久久综合九色综合欧美狠狠| 亚洲国产另类久久精品| 亚洲一区二区三区高清不卡| 国产欧美一区视频| 亚洲国产一区二区三区青草影视| 欧美另类亚洲| 午夜欧美不卡精品aaaaa| 猛男gaygay欧美视频| 9人人澡人人爽人人精品| 欧美伊人久久| 亚洲电影免费观看高清完整版在线观看 | 欧美一级淫片播放口| 久久精品女人的天堂av| 亚洲国产精品ⅴa在线观看 | 欧美丝袜第一区| 欧美影院在线播放| 欧美久久综合| 欧美一区2区三区4区公司二百 | 欧美日韩视频第一区| 欧美一区二区精品在线| 欧美日韩八区| 欧美一区二区三区免费观看| 欧美韩日一区二区三区| 亚洲女人天堂av| 欧美精品99| 新狼窝色av性久久久久久| 欧美人与禽性xxxxx杂性| 性做久久久久久久久| 欧美日韩国产综合新一区| 午夜亚洲影视| 欧美色大人视频| 久久精品视频网| 国产精品久久久久av| 亚洲日韩中文字幕在线播放| 国产精品一区在线观看| 99v久久综合狠狠综合久久| 国产精品一区二区三区四区 | 欧美视频在线播放| 亚洲国产日韩欧美在线动漫| 国产精品午夜在线| 亚洲美女福利视频网站| 国产手机视频精品| 亚洲夜间福利| 亚洲国产一成人久久精品| 久久精品一本久久99精品| 一区二区三区你懂的| 男女激情久久| 欧美一进一出视频| 国产精品福利网| 99v久久综合狠狠综合久久|