<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 用c語(yǔ)言實(shí)現24LC256讀寫(xiě)(非軟件模擬方式)

用c語(yǔ)言實(shí)現24LC256讀寫(xiě)(非軟件模擬方式)

作者: 時(shí)間:2011-02-16 來(lái)源:網(wǎng)絡(luò ) 收藏


#include
unsignedchari=0;
unsignedcharreceive=0x00;

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

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

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

voidi2c_dataout()//數據發(fā)送等待過(guò)程
{
do{
;
}while(SSPIF==0);
SSPIF=0;
}

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

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

}

voidi2c_error()
{
i2c_stop();
return;
}

voidwrite(unsignedintaddr,unsignedchardata,unsignedintn)//向iic寫(xiě)入一字節數據地址,數據,字節個(gè)數
{
i2c_start();
SSPBUF=0xA0;//EEPROM尋址碼和寫(xiě)操作命令碼
i2c_dataout();//發(fā)送

if(ACKSTAT)
i2c_error();//無(wú)應答,錯誤!
elseif(!ACKSTAT)
SSPBUF=addr/256;
//高eeaddr/256,取eeprom數據地址高字節
i2c_dataout();//發(fā)送

if(ACKSTAT)
i2c_error();//無(wú)應答,錯誤!
elseif(!ACKSTAT)
SSPBUF=addr%256;//低eeaddr%256,取eeprom數據地址低字節
i2c_dataout();//發(fā)送

for(i=0;i{
if(ACKSTAT)//應答
i2c_error();//無(wú)應答,錯誤!
elseif(!ACKSTAT)
SSPBUF=data;//eedata入eeprom的數據
i2c_dataout();//發(fā)送
}

if(ACKSTAT)//應答
i2c_error();

i2c_stop();//產(chǎn)生停止位,啟動(dòng)eeprom內部些過(guò)程

do{
i2c_start();
SSPBUF=0xA0;
i2c_dataout();
i2c_stop();
if(!ACKSTAT)break;
}while(ACKSTAT);
}

unsignedintcurrent_read(void)//currentaddressreadok!
{
i2c_start();
SSPBUF=0xA1;//尋址命令碼0xA0和讀命令
i2c_dataout();
if(ACKSTAT)//應答
i2c_error();
elseif(!ACKSTAT)
i2c_datainlast();
i2c_stop();

return((unsignedint)receive);
}

unsignedintrandom_read(unsignedinteepromaddress)
{
i2c_start();
SSPBUF=0xA0;//EEPROM尋址碼和寫(xiě)操作命令碼
i2c_dataout();//發(fā)送

if(ACKSTAT)
i2c_error();//無(wú)應答,錯誤!
elseif(!ACKSTAT)
SSPBUF=eepromaddress/256;
//高eeaddr/256,取eeprom數據地址高字節
i2c_dataout();//發(fā)送

if(ACKSTAT)
i2c_error();//無(wú)應答,錯誤!
elseif(!ACKSTAT)
SSPBUF=eepromaddress%256;//低eeaddr%256,取eeprom數據地址低字節
i2c_dataout();//發(fā)送

if(ACKSTAT)
i2c_error();//無(wú)應答,錯誤!
elseif(!ACKSTAT)

i2c_restart();
SSPBUF=0xA1;//尋址命令碼0xA0和讀命令
i2c_dataout();

if(ACKSTAT)//應答
i2c_error();
elseif(!ACKSTAT)
i2c_datainlast();
i2c_stop();
return((unsignedint)receive);

}

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


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



c語(yǔ)言相關(guān)文章:c語(yǔ)言教程




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>