- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
stc89c52中eeprom使用方法
单片机STC89C52RC 内部EEPROM
单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM 或FLASHROM 等存储器来实现。
在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通过IIC 或SPI 等接口来进行数据通信。
这样不光会增加开发成本,同时在程序开发上也要花更多的心思。在STC 单片机中内置了EEPROM(其实是采用ISP/IAP 技术读写内部FLASH 来实现EEPROM),这样就节省了片外资源,使用起来也更加方便。下面就详细介绍STC 单片机内置EEPROM 及其使用方法
?
?
STC 各型号单片机内置的EEPROM 的容量最小有2K,最大有16K,基本上很好地满足项目的需要,更方便之处就是节省了周边的EEPROM 器件,达到节省成本的目的,而且内部EEPROM 的速度比外部的EEPROM 的速度快很多。STC 各型号单片机内置的EEPROM 是以512 字节为一个扇区,EEPROM 的起始地址=FALSH 容量值+1,那么STC89C52RC 的起始地址为0x2000,第一扇区的起始地址和结束地址0x2000~0x21FF,第二扇区的起始地址和结束地址0x2200~0x23FF,其他扇区如此类推。深入重点:? 传统的EEPROM 是电可擦可编程只读存储一种掉电后数据不丢失的存储芯片。? STC89C52RC 的EEPROM 是通过ISP/IAP 技术读写内部FLASH 来实现EEPROM。? STC89C52RC 的EEPROM 起始地址为0x2000,以512 字节为一个扇区,EERPOM 的大小为2K 字节。
STC89C52RC 与EEPORM 实现的寄存器有6 个,分别是ISP_DATA、ISP_ADDRH、ISP_ADDRLISP_TRIG、ISP_CMD、ISP_CONTR。
?
1. ISP_DATA 寄存器ISP_DATA 寄存器:ISP/IAP 操作时的数据寄存器。ISP/IAP 从Flash 的数据在此处,向Flash 写的数据也须放在此处。示例1:读单个字节UINT8 EEPROMRead(UINT16 addr){……??????? return ISP_DATA;}示例2:写单个字节void EEPROMWrite(UINT8 byte){……?????? ISP_DATA=byte;}
?
2.ISP_ADDRH、ISP_ADDRL 寄存器ISP_ADDRH: ISP/IAP 操作时的地址寄存器高八位ISP_ADDRL: ISP/IAP 操作时的地址寄存器低八位示例1:设置地址void EEPROMSetAddress(UINT16 Addr){……???? ISP_ADDRH=(UINT8)(Addr8);???? ISP_ADDRL=(UINT8) Addr;}
?
3.ISP_CMD 寄存器ISP_CMD: ISP/IAP 操作时的命令模式寄存器,需要通过ISP_TRIG 命令触发寄存器才能生效。
?
4.ISP_TRIG 寄存器ISP/IAP 命令要生效即ISP_CMD 设置的命令要生效,必须通过ISP_TRIG 命令触发寄存器进行触发。触发过程很特别,只需要连续二次对ISP_TRIG 寄存器赋值就可以的了,对ISP_TRIG 寄存器先写入0x46,再写入0xB9 就完成命令触发的过程。示例1:命令触发void EEPROMCmdTrig(void){……????? ISP_TRIG=0x46;????? ISP_TRIG=0xB9;}
?
5.ISP_CONTR 寄存器ISP_CONTR:ISP/IAP 控制寄存器
ISPEN:ISP/IAP 功能允许位。0:禁止ISP/IAP 编程改变Flash。SWBS: 0:软件选择从用户主程序区启动1:ISP 程序区启动SWRST: 0:不操作1:产生软件系统复位,硬件自动清零WT2、WT1、WT0:设置等待时间
?
假如STC89C52RC 的工作频率为12MHz,那么机器周期为1us,参照表12-,EEPROM 的读单个字节、写单个字节、扇区擦除的所需要的时间大致如下:读单字节: 11*1us=11us写单字节: 60*1us=60us扇区擦除: 10942*1us=10.942ms无论单片机运行在什么工作频率下,EEPROM 的读、写、擦除操作的所需要的时间分别约为10us、60us、10ms。
深入重点:? STC89C52RC 与EEPORM 实现的寄存器有6 个,分别是ISP_DAT
文档评论(0)