实现原理
在读取EEPROM中的数据之前,先对一个目标地址连续读取两个数据,这个目标地址我用id_add来表示,读取到的两个数与EEPROM_ID[]中存取的两个数据进行比较(这两个数据是随便写的,作为辨识ID),如果读取到的值与设定的ID不一样,则说明是首次上电,EEPROM中还没有我们需要读取的值。
在第一次写入时引入一个flag标志位,当标志位为0的时候给idd_add发送两个连续的数据,这个数据是EEPROM_ID[]中的,这样就 更新了eeprom中id_add的值,再让flag+1,使每次上电只更新一次。
使用方法
先是和之前蓝桥杯模版的eeprom代码一样,在iic中添加
void EEPROM_Write(unsigned char *EEPROM_String, unsigned char addr, unsigned char num)
{
IIC_Start();
IIC_SendByte(0xA0);
IIC_WaitAck();
IIC_SendByte(addr);
IIC_WaitAck();
while(num--)
{
IIC_SendByte(*EEPROM_String++);
IIC_WaitAck();
IIC_Delay(200);
}
IIC_Stop();
}
void EEPROM_Read (unsigned char *EEPROM_String, unsigned char addr, unsigned char num)
{
IIC_Start();
IIC_SendByte(0XA0);
IIC_WaitAck();
IIC_SendByte(addr);
IIC_WaitAck();
//-------------先用写的形式访问,再用读的形式访问
IIC_Start