单片机内部EEPROM写之前要擦除吗?擦除的不是单个字节,把别的也擦除了怎么办?
1个回答
展开全部
看单片机PDF,STC的写之前一定要擦除,因为要为空时才可对其编程,写(因为只有扇区擦除才能把0变为1,若这个扇区原本有0的话你不擦出就不是覆盖了而是混乱!!!)。一个扇区可以写很多数据的,但是在每写一个数据之前要把其他的数据都先读出来保存一份到RAM,(定义几个变量,比如,a=eeprom_read(0x4000); b=eeprom_read(0x4001))读出来后执行 eeprom_eares(0x4000);也就是擦除这个扇区,等擦除操作执行完后和新数据一起写入这个扇区,如下:
eeprom_write(0x4000,a);//读出来的数据写回去
eeprom_write(0x4001,b);
eeprom_write(0x4002,c);
这样c就和a,b一起写到这个扇区了,写a的时候同样要把b,c读出来,写b的时候要把a,c读出来。
很多单片机有64个扇区,够用的话尽量一个扇区写一个数据,这样程序写起来比较方便,
其他类型的单片机没试验不知道,外部eeprom情况又不一样
eeprom_write(0x4000,a);//读出来的数据写回去
eeprom_write(0x4001,b);
eeprom_write(0x4002,c);
这样c就和a,b一起写到这个扇区了,写a的时候同样要把b,c读出来,写b的时候要把a,c读出来。
很多单片机有64个扇区,够用的话尽量一个扇区写一个数据,这样程序写起来比较方便,
其他类型的单片机没试验不知道,外部eeprom情况又不一样
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询