关于STC单片机内部EEPROM问题的解决
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于STC单片机内部EEPROM问题的解决
由于STC单片机的IAP功能比较好用,不需要仿真器就可以下载程序。
在一些简单的业余设计中,采用STC芯片确实比较方便。
STC芯片可以采用内部FLASH做成EEPROM功能来使用。这个功能其实几乎
所有现在出来的芯片都支持。但STC做的有点让人不适应。
我刚开始做的时候,从官网下载了程序源代码,建好了工程。试了一下,
功能可以实现。认为没有问题。这东西也简单。但到了后来,折腾了我两天。
让我头痛了。最后终于解决了。总结一下。
STC内部FLASH分的块挺小的.512Byte一个区。毕竟是FLASH。所以擦除一定
是一片【512Byte】,写也简单,只要调用官网的程序就行了。
官网的程序还用了P1端口做为输出指示。我把这些去掉了。
刚开始只是做了个按键调试一下,显示出来,然后修改完成后,又存进去。
所以没有发现问题。后来,程序量大了。同时,做为EEPROM,我是一上电就
去读取。如果读取的数据不对,我的程序会强行重新刷一次默认值进去。
结果问题出来了。读取出来的数据偶尔会不正确。总是被我给刷成默认值。
电路本身很简单,就一个通讯和显示【速按键调整】。所以,硬件不会有
问题,有问题的一定是软件本身。
STC的烧录中有一项,禁止低压时操作EEPROM。当时,只是认为这个主要管
理掉电的时候不要去写EEPROM。后来才觉得不对。上电时,是否也会有这种
问题?由于有数据码显示,所以,上电后不久,数码管就会被点亮。此时,电
源电压会有所下降。这个时候,写EEPROM肯定有问题。其实,在这个时候,不光
是写,读取也不行。
所以,我在程序中,做了处理,上电200ms以内,不去读取EEPROM的数据,同时
220ms以内,不开启数码管显示。这样有效地保证了电源电压的稳定。
这样,我还不放心,原来读取EEPROM只读取一次。现在改为带校验。每16个数据
后面带一个校验字。如果读取出来以后,校验不通过,则重新读取,三次都不正确
则重新加载默认值,向EEPROM写一次数据。
每次写EEPROM时,程序自动在16字节以后加入一个校验。写完以后,再读取出来
比较一次。三次读取机会,直到读取出来的数据是正确的。否则报错。
到此,EEPROM功能工作正常。