我在公车被蹭水后当晚就来了月经,在公车上露着奶被男人玩,公车上的人妻沦陷完整版,(NP、高H、纯肉)公车,公车娇喘抽搐喷潮H文苏小暖,公车全黄H全肉短篇公车之狼

技術(shù)熱線: 4007-888-234

專(zhuān)注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

技術(shù)支持

用c語(yǔ)言實(shí)現(xiàn)24LC256讀寫(xiě)

更新時(shí)間: 2019-03-23

用c語(yǔ)言實(shí)現(xiàn)24LC256讀寫(xiě)

#i nclude
unsigned char i=0;
unsigned char receive=0x00;

void i2c_start()
{
    SEN=1;   //啟動(dòng)
    do{
    }while(SSPIF==0);
    SSPIF=0;
}

void i2c_stop()
{
    PEN=1;       //產(chǎn)生停止條件
    do{
    ;
    }while(SSPIF==0);
    SSPIF=0;
}

void i2c_restart()
{
    RSEN=1;  //啟動(dòng),反復(fù)啟動(dòng)
    do{
    ;
    }while(SSPIF==0);
    SSPIF=0;
}

void i2c_dataout()   //數(shù)據(jù)發(fā)送等待過(guò)程
{
    do{
    ;
    }while(SSPIF==0);
    SSPIF=0;
}

void i2c_datain()   //讀取24LC256時(shí),不是讀的最后一個(gè)字節(jié)時(shí)使用
{
    RCEN=1;
    do{
    ;
    }while(SSPIF==0);
    SSPIF=0;
    receive=SSPBUF;
    ACKDT=0;
    ACKEN=1;
    do{
    ;
    }while(SSPIF==0);
    SSPIF=0;
}

void i2c_datainlast()   //讀取最后一個(gè)字節(jié),或只讀取24lc256中一個(gè)字節(jié)
{
    SSPIF=0;
    RCEN=1;
    do{
    ;
    }while(SSPIF==0);
    SSPIF=0;
    receive=SSPBUF;
    ACKDT=1 ;
    ACKEN=1;
    do{
    ;
    }while(SSPIF==0);
    SSPIF=0;
    
}

void i2c_error()
{
    i2c_stop();
    return;
}

void write(unsigned int addr,unsigned char data,unsigned int n)  //向iic寫(xiě)入一字節(jié)數(shù)據(jù) 地址,數(shù)據(jù),字節(jié)個(gè)數(shù)
{
    i2c_start();
    SSPBUF=0xA0;//EEPROM尋址碼和寫(xiě)操作命令碼
    i2c_dataout(); //發(fā)送
    
    if(ACKSTAT)
    i2c_error();   //無(wú)應(yīng)答,錯(cuò)誤!
    else if(!ACKSTAT)
    SSPBUF=addr/256;
        //高eeaddr/256  ,取eeprom數(shù)據(jù)地址高字節(jié)
    i2c_dataout(); //發(fā)送
    
    if(ACKSTAT)
    i2c_error();   //無(wú)應(yīng)答,錯(cuò)誤!
    else if(!ACKSTAT)
    SSPBUF=addr%256;//低eeaddr%256 ,取eeprom數(shù)據(jù)地址低字節(jié)
    i2c_dataout(); //發(fā)送
    
    for(i=0;i    {
        if(ACKSTAT)//應(yīng)答
        i2c_error();  //無(wú)應(yīng)答,錯(cuò)誤!
        else if(!ACKSTAT)
        SSPBUF=data;//eedata      入eeprom的數(shù)據(jù)
        i2c_dataout();//發(fā)送
    }
    
    if(ACKSTAT)//應(yīng)答
    i2c_error();
    
    i2c_stop();   //產(chǎn)生停止位,啟動(dòng)eeprom內(nèi)部些過(guò)程
    
    do{
    i2c_start();
    SSPBUF=0xA0;
    i2c_dataout();
    i2c_stop();
    if(!ACKSTAT)break;
    }while(ACKSTAT);
}

unsigned int current_read(void)//current address read ok!
{
    i2c_start();
    SSPBUF=0xA1;//尋址命令碼0xA0 和 讀命令
    i2c_dataout();
    if(ACKSTAT)//應(yīng)答
    i2c_error();
    else if(!ACKSTAT)
    i2c_datainlast();
    i2c_stop();

    return ((unsigned int)receive);
}

unsigned int random_read(unsigned int eepromaddress)
{
    i2c_start();
    SSPBUF=0xA0;//EEPROM尋址碼和寫(xiě)操作命令碼
    i2c_dataout(); //發(fā)送
    
    if(ACKSTAT)
    i2c_error();   //無(wú)應(yīng)答,錯(cuò)誤!
    else if(!ACKSTAT)
    SSPBUF=eepromaddress/256;
        //高eeaddr/256  ,取eeprom數(shù)據(jù)地址高字節(jié)
    i2c_dataout(); //發(fā)送
    
    if(ACKSTAT)
    i2c_error();   //無(wú)應(yīng)答,錯(cuò)誤!
    else if(!ACKSTAT)
    SSPBUF=eepromaddress%256;//低eeaddr%256 ,取eeprom數(shù)據(jù)地址低字節(jié)
    i2c_dataout(); //發(fā)送
    
    if(ACKSTAT)
    i2c_error();   //無(wú)應(yīng)答,錯(cuò)誤!
    else if(!ACKSTAT)
        
    i2c_restart();
    SSPBUF=0xA1;//尋址命令碼0xA0 和 讀命令
    i2c_dataout();
    
    if(ACKSTAT)//應(yīng)答
    i2c_error();
    else if(!ACKSTAT)
    i2c_datainlast();
    i2c_stop();
     return ((unsigned int)receive);
    
}

void i2c_init()
{
    SSPSTAT=0x00;
    TRISC=0xD8;
    SSPADD=19;
    SSPIE=0;
    SSPCON=0x28;    
}


//在主程序中,先i2c_init();然后開(kāi)始讀/寫(xiě)24LC256中數(shù)據(jù),經(jīng)多次運(yùn)行
  no bug
//程序中的寄存器必須芯片內(nèi)部包含,否則無(wú)法實(shí)現(xiàn)硬件iic讀寫(xiě)。

404
返回首頁(yè) |  返回上一頁(yè)
防城港市| 嘉黎县| 枣阳市| 韩城市| 大悟县| 临西县| 特克斯县| 大名县| 依兰县| 灵璧县| 永和县| 兰州市| 永和县| 曲阳县| 台南市| 巩留县| 保靖县| 雷山县| 昂仁县| 石阡县| 舞钢市| 新乡县| 平度市| 东莞市| 云安县| 塔河县| 台北市| 始兴县| 乌恰县| 沛县| 巩留县| 新营市| 山阳县| 梅河口市| 西和县| 启东市| 大安市| 含山县| 军事| 英吉沙县| 纳雍县|