精品国产成人一区二区三区-女子十八毛片-欧洲性猛交-无码不卡一区二区三区在线观看-www.四虎在线-伊人网国产-国精产品自偷自偷综合下载-不卡av网站-俄罗斯黄色大片-一本久久知道综合久久-国产精品日韩一区二区-日韩精品色-免费人成网ww555kkk在线-黄色在线观看免费-日韩在线免费-久久久久99人妻一区二区三区-十八禁真人啪啪免费网站

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
HOLTEK 主I2C的代碼
HOLTEK 主I2C的代碼
 更新時(shí)間:2008-7-26 20:05:02  點(diǎn)擊數(shù):2
【字體: 字體顏色
調(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);

/***********************************************
     總線啟動(dòng)函數(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ù)時(shí)的ACK應(yīng)答
***********************************************/
uchar WaitAck(void)
{
     uchar errtime=255;  //因故障接收方無(wú)ACK 超時(shí)值為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ù)時(shí)的NO ACK應(yīng)答
***********************************************/
void SendNotAck(void)
{
     SDA=1 ;
     delay_5us();
     SCL=1 ;
     delay_5us();
     SCL=0;
}
/***********************************************
     I2C總線接收數(shù)據(jù)時(shí)的ACK應(yīng)答
***********************************************/
void SendtAck(void)
{
     SDA=0 ;
     delay_5us();
     SCL=1 ;
     delay_5us();
     SCL=0;
}
/***********************************************
     寫(xiě)1個(gè)字節(jié)的函數(shù)
***********************************************/
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();
}
/***********************************************
     讀當(dāng)前1字節(jié)數(shù)據(jù)函數(shù)
***********************************************/
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);
}
/***********************************************
     寫(xiě)當(dāng)前1字節(jié)數(shù)據(jù)函數(shù)
***********************************************/
void cwrite(uchar addr,uchar dat)
{
     i2c_start();
     i2c_writ2(CHIP_ADDR);        // Write
     i2c_writ2(addr);
     i2c_writ2(dat);
     i2c_stop();
     delay(30);
}
/***********************************************
     讀數(shù)據(jù)
***********************************************/
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);
}
/***********************************************
     寫(xiě)數(shù)據(jù)
***********************************************/
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++);        // 寫(xiě)
     }
     i2c_stop();
     delay(30);
}
/***********************************************
     讀1字節(jié)函數(shù)
***********************************************/
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;
}
/***********************************************
     延時(shí)程序
***********************************************/
void delay_5us()
{
     uchar i;
     //for(i=0;i<2;i++){}
     for(i=0;i<4;i++)
     {
     }
}
  • 上一篇: 基于HT48R50A的 RS232串口示例程序
  • 下一篇: HT46R22單片機(jī)在電磁爐功率控制中的應(yīng)用
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1
    镇安县| 遵义县| 儋州市| 彩票| 忻州市| 苏州市| 荔浦县| 宁乡县| 友谊县| 荔波县| 新安县| 尼勒克县| 高雄县| 博爱县| 大化| 舒兰市| 万州区| 昌江| 平乡县| 内黄县| 儋州市| 金昌市| 环江| 清苑县| 农安县| 景德镇市| 澄江县| 丰台区| 福建省| 来凤县| 开阳县| 弥勒县| 外汇| 西青区| 乌兰察布市| 青浦区| 成武县| 临沂市| 长汀县| 龙州县| 辰溪县|