STC12LE5052的EEPROM使用
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空间,远远超出我们想象和官方公布。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |