void write_at24c02(unsigned char add,unsigned char dat)
{
IIC_Start();
IIC_SendByte(0xA0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_SendByte(dat);
IIC_WaitAck();
IIC_Stop();
}
unsigned char read_byte_24c02(unsigned char addr){
unsigned char temp;
IIC_Start();
IIC_SendByte(0xA0);
IIC_WaitAck();
IIC_SendByte(addr);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0xA1);
IIC_WaitAck();
temp = IIC_RecByte();
IIC_Stop();
}
改版
void e2prom_write(uint8_t addr, uint8_t *Data, uint8_t len)
{
I2CStart();
I2CSendByte(0xA0);
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
while(len--)
{
I2CSendByte(*Data);
I2CWaitAck();
Data++;
}
I2CStop();
}
void e2prom_read(uint8_t addr, uint8_t *Data, uint8_t len)
{
I2CStart();
I2CSendByte(0xA0);
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
I2CStart();
I2CSendByte(0xA1);
I2CWaitAck();
loop:
*Data = I2CReceiveByte();
if (--len)
{
I2CSendAck(0); //发送应答
Data++;
goto loop;
}
I2CSendAck(1); //发送非应答
I2CStop();
}