单片机内部EEPROM写之前要擦除吗?擦除的不是单个字节,把别的也擦除了怎么办?

2024-12-18 18:31:26
推荐回答(4个)
回答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情况又不一样

回答2:

写之前可以不擦除,写的时候就把原来的数据覆盖了。擦除其实就是写入00H或者FFH,可单字节写入,也可页写!

回答3:

你的程序要用很多扇区吗?要是不用的话最好一个扇区一个数,如果要是不够用的话,还要删除其中的字节,要先把其他单元数存到别的单元中。

回答4:

修改原来已写入的地址需要擦除扇区,也就是不能对已写入的地址进行覆盖,原来未写入的地址不需要擦除扇区