欢迎来到天天文库
浏览记录
ID:11526603
大小:31.00 KB
页数:4页
时间:2018-07-12
《stc89c52内部eeprom》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM或FLASHROM等存储器来实现。在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通过IIC或SPI等接口来进行数据通信。这样不光会增加开发成本,同时在程序开发上也要花更多的心思。在STC单片机中内置了EEPROM(其实是采用IAP技术读写内部FLASH来实现EEPROM),这样就节省了片外资源,使用起来也更加方便。下面就详细介绍STC单片机内置EE
2、PROM及其使用方法。STC各型号单片机内置的EEPROM的容量各有不同,见下表:(内部EEPROM可以擦写100000次以上)上面提到了IAP,它的意思是“在应用编程”,即在程序运行时程序存储器可由程序自身进行擦写。正是是因为有了IAP,从而可以使单片机可以将数据写入到程序存储器中,使得数据如同烧入的程序一样,掉电不丢失。当然写入数据的区域与程序存储区要分开来,以使程序不会遭到破坏。要使用IAP功能,与以下几个特殊功能寄存器相关:ISP_DATA:ISP/IAP操作时的数据寄存器。ISP/IAP从Fla
3、sh读出的数据放在此处,向Flash写的数据也需放在此处ISP_ADDRH:ISP/IAP操作时的地址寄存器高八位。ISP_ADDRL:ISP/IAP操作时的地址寄存器低八位。ISP_CMD:ISP/IAP操作时的命令模式寄存器,须命令触发寄存器触发方可生效。ISP_TRIG:ISP/IAP操作时的命令触发寄存器。当ISPEN(ISP_CONTR.7)=1时,对ISP_TRIG先写入0x46,再写入0xb9,ISP/IAP命令才会生效。单片机芯片型号起始地址内置EEPROM容量(每扇区512字节)STC8
4、9C51RC,STC89LE51RC0x2000共八个扇区STC89C52RC,STC89LE52RC0x2000共八个扇区STC89C54RD+,STC89LE54RD+0x8000共五十八个扇区STC89C55RD+,STC89LE55RD+0x8000共五十八个扇区STC89C58RD+,STC89LE58RD+0x8000共五十八个扇区寄存器标识地址名称76543210初始值ISP_DATA0xE2ISP/IAP闪存数据寄存器11111111ISP_ADDRH0xE3ISP/IAP闪存地址高位00
5、000000ISP_ADDRL0xE4ISP/IAP闪存地址低位00000000ISP_CMD0xE5ISP/IAP闪存命令寄存器MS2MS1MS0xxxxx000ISP_TRIG0xE6ISP/IAP闪存命令触发xxxxxxxxISP_CONTR0xE7ISP/IAP控制寄存器ISPENSWBSSWRSTWT2WT1WT000xx000B7B6B5B4B3B2B1B0命令/操作模式选择保留命令选择-----000待机模式,无ISP/IAP操作-----001对用户的应用程序Flash区及数据Flash区
6、字节读-----010对用户的应用程序Flash区及数据Flash区字节编程-----011对用户的应用程序Flash区及数据Flash区扇区擦除ISP_CONTR:ISP/IAP控制寄存器。ISPEN:ISP/IAP功能允许位。0:禁止ISP/IAP编程改变Flash,1:允许编程改变FlashSWBS:软件选择从用户主程序区启动(0),还是从ISP程序区启动(1)。SWRST:0:不操作,1:产生软件系统复位,硬件自动清零。ISP_CONTR中的SWBS与SWRST这两个功能位,可以实现单片机的软件启
7、动,并启动到ISP区或用户程序区,这在“STC单片机自动下载”一节,亦有所应用。如:ISP_CONTR=0x60?则可以实现从用户应用程序区软件复位到ISP程序区开始运行程序。ISP_CONTR=0x20?则可以实现从ISP程序区软件复位到用户应用程序区开始运行程序。用IAP向Flash中读写数据,是需要一定的读写时间的,读写数据命令发出后,要等待一段时间才可以读写成功。这个等待时间就是由WT2、WT1、WT0与晶体振荡器频率决定的。(以上的建议时钟是(WT2、WT1、WT0)取不同的值时的标称时钟,用户
8、系统中的时钟不要过高,否则可能使操作不稳定。)#include"reg52.h"#include"eeprom.h"//******************关闭ISPIAP功能**************voidISP_IAP_Disable(void){ISP_CONTR=0x00;ISP_CMD=0X00;ISP_TRIG=0x00;EA=1;//开中断}//*******************字节读**********
此文档下载收益归作者所有