/*---------------- 24CXX读写程序 ----------------*/
void start24c(void) //开始启动
{ sda=1;scl=1;
nop();
sda=0;
nop();
}
void stop24c(void) //停止
{ sda=0;scl=1;
nop();
sda=1;
nop();
}
void ack24c(void) //正向回应
{ sda=0;
nop();
scl=1;
nop();
scl=0;
}
void noack24c(void) //反向回应
{ sda=1;
nop();
scl=1;
nop();
scl=0;
}
void send24c(uchar dd) //内部函数,发送数到i2c
{ uchar bitcounter=8;
uchar temp;
do {
temp=dd;
scl=0;
nop();
if((temp&0x80)==0x80)
sda=1;
else
sda=0;
scl=1;
temp=dd<<1;
dd=temp;
bitcounter--;
} while(bitcounter);
scl=0;
}
uchar rece24c(void) //内部函数,从i2c接收数
{ uchar temp=0,temp1=0,bitcounter=8;
sda=1;
do {
scl=0;
nop();
scl=1;
nop();
if(sda)
temp=temp|0x01;
else
temp=temp&0xfe;
if(bitcounter-1)
{ temp1=temp<<1;
temp=temp1;