加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

STC12LE5052的EEPROM使用

发布时间:2020-12-15 06:09:52 所属栏目:百科 来源:网络整理
导读:STC12LE5052的EEPROM使用 关于STC12LE5052的EEPROM,官方资料只有简单一句话:所有FLASH空间均可作EEPROM修改。 写一段代码,生成HEX后,显示CODE=2437,扫描 0x0000开始的10个扇区,发现前2438个字节都是有数据的,其它是0或FF.? 说明STC12LE5052代码从 0x0

STC12LE5052的EEPROM使用

关于STC12LE5052的EEPROM,官方资料只有简单一句话:所有FLASH空间均可作EEPROM修改。

写一段代码,生成HEX后,显示CODE=2437,扫描 0x0000开始的10个扇区,发现前2438个字节都是有数据的,其它是0或FF.? 说明STC12LE5052代码从 0x0000处开始存储。其它空余空间可作EEPROM来使用。那它的空间顶部在哪儿? 下面用代码证明:

?

????for?(i=512*5;?i<512*200;?i+=512)???????????//前面的5个扇区不操作保留为代码空间

????{

????????IapEraseSector(i)?;? 先清除第5到第200个扇区(假定有200个扇区,哈)

????}

????for?(i=512*5;?i<512*200;?i++)???????????

????{? //对这些扇区进行写操作,i为增变量,保证相邻不相同

????????IapProgramByte(IAP_ADDRESS+i,?(BYTE)i);

????}

????for?(i=512*5;?i<512*200;?i++)???????????//Check?whether?all?sector?data?is?FF

????{

????????theByte?=?IapReadByte(IAP_ADDRESS+i)?;

????? ?//TxData(theByte);?

??? ??if(theByte==oldByte?&&?theByte==0xFF)

????? {??

????????? TxData(i);????TxData(i>>8);

???????? break;

???? ?}

????? oldByte??=theByte;

????}

?? 最后,返回到串口的数据是0070. 这就意味着EEPROM可存储0x7000个字节。STC12LE5052包括代码,最大扇区数为 0x7000/512=56. 存储空间为28K。为了验证0-55扇区的有效性,可用如下代码测试:

????for?(i=0;?i<512*57;?i++)???????????

????{?

???????? theByte?=?IapReadByte(i)?;

?????????TxData(theByte);

????}

发现最后512个字节,全是重复的FF。这就是stc12le5052的真实EEPROM空间,远远超出我们想象和官方公布。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读