欢迎来到天天文库
浏览记录
ID:3914833
大小:434.41 KB
页数:12页
时间:2017-11-25
《stc单片机内部eeprom的应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、STC单片机内部EEPROM的应用可以使单片机可以将数据写入到程序存储器中,使得数据如同烧入的程序一样,掉电不丢失。当然写入数据的区域与程序存储区要分开来,以使程序不会遭到破坏。上面提到了IAP,它的意思是“在应用编程”,即在程序运行时程序存储器可由程序自身进行擦写。正是是因为有了IAP,从而可以使单片机可以将数据写入到程序存储器中,使得数据如同烧入的程序一样,掉电不丢失。当然写入数据的区域与程序存储区要分开来,以使程序不会遭到破坏。要使用IAP功能,与以下几个特殊功能寄存器相关:ISP_DATA
2、:ISP/IAP操作时的数据寄存器。ISP/IAP从Flash读出的数据放在此处,向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命令才会生效。单片
3、机芯片型号起始地址内置EEPROM容量(每扇区512字节)STC89C51RC,STC89LE51RC0x2000共八个扇区STC89C52RC,STC89LE52RC0x2000共八个扇区STC89C54RD+,STC89LE54RD+0x8000共五十八个扇区STC89C55RD+,STC89LE55RD+0x8000共五十八个扇区STC89C58RD+,STC89LE58RD+0x8000共五十八个扇区寄存器标识地址名称76543210初始值ISP_DATA0xE2ISP/IAP闪存数据寄存
4、器11111111ISP_ADDRH0xE3ISP/IAP闪存地址高位00000000ISP_ADDRL0xE4ISP/IAP闪存地址低位00000000ISP_CMD0xE5ISP/IAP闪存命令寄存器MS2MS1MS0xxxxx000ISP_TRIG0xE6ISP/IAP闪存命令触发xxxxxxxxISP_CONTR0xE7ISP/IAP控制寄存器ISPENSWBSSWRSTWT2WT1WT000xx000B7B6B5B4B3B2B1B0命令/操作模式选择保留命令选择-----000待机模式,
5、无ISP/IAP操作-----001对用户的应用程序Flash区及数据Flash区字节读-----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:产生软件系统复位,硬
6、件自动清零。ISP_CONTR中的SWBS与SWRST这两个功能位,可以实现单片机的软件启动,并启动到ISP区或用户程序区,这在“STC单片机自动下载”一节,亦有所应用。如:ISP_CONTR=0x60?则可以实现从用户应用程序区软件复位到ISP程序区开始运行程序。ISP_CONTR=0x20?则可以实现从ISP程序区软件复位到用户应用程序区开始运行程序。用IAP向Flash中读写数据,是需要一定的读写时间的,读写数据命令发出后,要等待一段时间才可以读写成功。这个等待时间就是由WT2、WT1、WT
7、0与晶体振荡器频率决定的。(以上的建议时钟是(WT2、WT1、WT0)取不同的值时的标称时钟,用户系统中的时钟不要过高,否则可能使操作不稳定。)stc单片机EEPROM读写(一)EEPROM操作函数:#defineRdCommand0x01#definePrgCommand0x02#defineEraseCommand0x03#defineError1#defineOk0#defineWaitTime0x01#definePerSector512unsignedcharxdataTtotal[51
8、2]?/*打开ISP,IAP功能*/voidISP_IAP_enable(void)D7D6D5D4D3D2D1D0ISPENSWBSSWRST--WT2WT1WT0设置等待时间CPU等待时间(机器周期)WT2WT1WT0读取编程扇区擦除建议的系统时钟01163054715MHz01011601094210MHz001221202188520MHz000432404376940MHz{EA=0?/*关中断*/ISP_CONTR
9、=0x18?/*0001,1000*/ISP_CONT
此文档下载收益归作者所有