STC单片机的内部EEPROM是用DATAFLASH模拟出来的,不是真正的EEPROM存储器,不能用普通的方法来操作下面是一些注意点:
1.字节写之前要先将这个字节所在扇区的其它有效数据读取到RAM暂存(这步不是必须的)
2.暂存完之后再对整个扇区(512字节)进行擦除操作,擦拭完后,整个扇区每个地址中数据都变成0xFF
3.将欲写入的N个字节数据,用字节写函数写入EEPROM
4.将暂存到RAM的其它有用的EEPROM值再用字节写函数写回EEPROM
5.STC用FLASH模拟出来的EEPROM的字节写功能只能将1变成0,而不能将0变成1,
只有扇区擦除后数据才是全1,
例如:在地址0x21f0处第1次写11010110,第2次写111010,读出结果是这2个值的相与10010 所以如果一个地址处的值不是0xff时写入新的数据是不对的,要先执行扇区擦除,变为0xff, 对于单个字节的写入,我们可以先检查该地址处的数据是否为0xff,是的话就不用擦除扇区了
----------------------------------------------------------------------
STC89C52单片机内部EEPROM 的读写过程
1 配置ISP_CONTR寄存器,使能第7位ISPEN,让ISP_IAP功能生效,并配置低3位的等待时间
2 写指令: 读/写/擦除扇区 这3个命令
3 赋值: ISP_ADDRH和ISP_ADDRL的地址值
4 关闭总中断EA,因为下面要写的2个触发指令必须是连续操作的,不能被中断
5 执行公用的 ISP_IAP 触发指令,触发后读写操作才能进行
6 打开中断 EA, 关闭ISP_IAP功能:清相关寄存器
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !