关于AT24C02的疑问 求大神

我想用该芯片实现掉电存储功能 比如设置一个温度上限 超过报警器会报警 但我有个疑问 若初始就给一个上限值 未经设置情况下会一直是这个值 若是设置之后才会写入24c02 来掉电存储 那该怎么来实现呢 有点绕不过去 简单说就是在第一次开机的时候 怎么能确保读出的是预先给的值而不是就去读24C02里还没写入的不确定的值 最好有代码

从芯片中选两个地址,一个地址存放超过温度上限时的温度值还是设置的上限值?另外一个地址用来存放标识符,表示是否上限。

先写一个AT24C02的配置程序,在AT24C02里面写一个上限报警值,比如说28℃。
接着,写单片机上电跑的程序,程序开始是读取AT24C02中的上限值,也就是28℃,接着就按你的逻辑进行判断即可。
注意,若要改变初始的上限值,需要重新写一个配置程序,把AT24C02中的上限值先设定好,再烧写单片机的程序即可。

正常情况,我们可以做一个标志,在写入设定数据的时候,把这个标志同时写入到EEPROM,标志只要避开EEPROM没有用过时候的缺省数据就可以了
如果复杂一点,考虑用过没用过的什么样的芯片都可以用,那么就自己规定一个校验方法,把正常数据和校验数据一起写入到EEPROM,比如简单点的校验和,复杂点的CRC,只有经过数据和校验都通过了,可以认为数据就是自己需要存储的数据,可以调用。而不符合校验的,就直接放弃,认为是新的芯片。
这个方法里面,建议存储的数据人为复杂化,这样校验结果被随机数据撞车的概率就很低。

首先程序上电就去读24c02中是否有设定值,如果有,就取出来使用,如果没有就使用程序中的默认值,只是存储数据需要加校验,保证取出来的数据准确性,如果数据错误,则恢复出厂的默认值。