|
IIC读eeprom与写进去的值不一样,而且改变写的值,eeprom读出来的值没有变化。
[复制链接]
如题。
/***************************************************************************
IIC总线读8位数据
返回值:读出的8位数据
***************************************************************************/
unsigned char Read8Bit()
{
unsigned char temp,temp1,q0,rbyte=0;
SCL_OUT;
SDA_IN;
for(temp=8;temp >0;temp--)
{
C_SCL;
delay();
rbyte=rbyte<<1;
SDA_IN; //设置端口为输入
q0 = READ_SDA; //(IIC_IN&IIC_SDA) //读SDA电平
if(q0)
rbyte += 1;
if(q0==IIC_SDA)
temp1++;
//delay();
S_SCL;
delay();
}
return rbyte;
}
读eeprom的程序
/***************************************************************************
从24c02中读一个字节
***************************************************************************/
unsigned char Read24c02(uchar der_addr,uchar word_addr){
uchar temp = 0;
// uchar tempaddr = de_addr;
// tempaddr = (temp<<1)|0x01;
Start();
Write8Bit(0xa0);
if(TestAck()!=0)
return 1;
else{
// DelayMs(1);
Write8Bit(word_addr);
if(TestAck()!=0)
return 1;
else{
Start();
Write8Bit(der_addr); //写24C02的芯片地址以及确定下面执行读操作
if(TestAck()!=0)
return 1;
else{
temp=Read8Bit();
NoAck();
Stop();
return temp;
}
}
}
}
|
|