2025-11-08 06:32:09
STC芯片里的EEPROM是专门存小数据的芯片,比如密码、参数这些。要存数据得先找到EEPROM的地址,用MOVX指令往指定地址写数据。读的时候也是用MOVX指令,不过得先写个0FFH过去。注意地址不能重复,重复了会覆盖旧数据。擦数据的话得连续写三次FFH到指定地址,但擦写次数有限,大概能写1000次左右。
为什么这样做呢?因为STC12C5A60S2的EEPROM有256字节容量,地址从0000H到0FFEH,每个字节存8位数据。手册里写明擦写次数超过3000次会损坏,所以建议存重要数据时用其他存储器。比如存校准参数,得先用MOVX @R0写地址,然后循环写8位数据。读的时候同理,但得确保程序跑完再读,不然数据会乱。比如存温度补偿值,先写地址00H,再写三个字节的数据,擦除地址00H到02H,下次启动时重新读。这样既安全又省电,毕竟EEPROM耗电比Flash多。
模拟效果:
STC芯片里的EEPROM是专门存小数据的芯片,比如密码、参数这些。要存数据得先找到EEPROM的地址,用MOVX指令往指定地址写数据。读的时候也是用MOVX指令,不过得先写个0FFH过去。注意地址不能重复,重复了会覆盖旧数据。擦数据的话得连续写三次FFH到指定地址,但擦写次数有限,大概能写1000次左右。为什么这样做呢?因为STC12C5A60S2的EEPROM有256字节容量,地址从0000H到0FFEH,每个字节存8位数据。手册里写明擦写次数超过3000次会损坏,所以建议存重要数据时用其他存储器。比如存校准参数,得先用MOVX @R0写地址,然后循环写8位数据。读的时候同理,但得确保程序跑完再读,不然数据会乱。比如存温度补偿值,先写地址00H,再写三个字节的数据,擦除地址00H到02H,下次启动时重新读。这样既安全又省电,毕竟EEPROM耗电比Flash多。
本题链接: