IIC_Start();
IIC_W8(add*2+0x90+0);///0---write
if(IICr() ==1)
{
return 0x200;
}
IIC_W8(0);
if(IICr() ==1)
{
return 0x200;
}
IIC_End();
IIC_Start();
IIC_W8(0x90+1+add*2);////1---read
if(IICr() ==1)
{
return 0x200;
}
v=0;
if(IICr()==1) v=0x200;
if(IICr()==1) v+=0x100;
if(IICr()==1) v+=0x080;
if(IICr()==1) v+=0x40;
if(IICr()==1) v+=0x20;
if(IICr()==1) v+=0x10;
if(IICr()==1) v+=0x8;
if(IICr()==1) v+=0x4;
IICw(0);
if(IICr()==1) v+=0x2;
if(IICr()==1) v+=0x1;
IIC_End();
return v;
}
/////////IIC控制函数
void IICw(bit c)
{
SDA=c;
delayIIC(); //
SCL=1;
delayIIC(); //
SCL=0;
delayIIC(); //
}
bit IICr()
{
bit c;
SCL=1;
delayIIC(); //
SDA=1;
delayIIC(); //
c=SDA;
SCL=0;
delayIIC(); //
return c;
}
void IIC_Start()
{
SCL=0; //start
delayIIC(); //
SDA=1; //
delayIIC(); //
SCL=1; //
delayIIC(); //
SDA=0; //
delayIIC(); //
SCL=0; //
delayIIC(); //
}
void IIC_End()
{
SCL=0; //stop
delayIIC(); //
SDA=0; //
delayIIC(); //
SCL=1; //
delayIIC(); //
SDA=1; //
delayIIC(); //
SCL=0; //
delayIIC(); //
}
void IIC_W8(unsigned char v)
{
unsigned char c;
for(c=0x80 ; c!=0 ; c>>=1)
{
IICw(v&c);
}
}