51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机源码 > 详细内容
一种eeprom动态分配的实施方法
作者:佚名  发布时间:2009/1/8  阅读次数:2455  字体大小: 【】 【】【

以下程序来自网络,仅供参考
stc eeprom的实用读写演示,提供了一种eeprom动态分配的实施方法

           sfr isp_data=0xe2;
           sfr isp_addrh=0xe3;
           sfr isp_addrl=0xe4;
           sfr isp_cmd=0xe5;
           sfr isp_trig=0xe6;
           sfr isp_contr=0xe7;

           unsigned char eeprom_read(unsigned int addres);
           void eeprom_write(unsigned int address,unsigned char wdata);
           void eeprom_eares(unsigned int addres);//扇区擦除。

           void eeprom_eares(unsigned int addres)//扇区擦除。
                     {unsigned i;
                       isp_addrl=addres;         //低位地址
                       isp_addrh=addres>>8;   //高位地址
                       isp_contr=0x01;
                       isp_contr=isp_contr|0x80; //设时间与充ISP操作。
                       isp_cmd=0x03;                 //扇区命命令
                       isp_trig=0x46;               //触发
                       isp_trig=0xb9;               //触发启动。
                       for(i=0;i<3;i++);
                       isp_addrl=0xff;
                       isp_addrh=0xff;
                       isp_contr=0x00;
                       isp_cmd=0x00;
                       isp_trig=0x00;
                  

                               }
           void eeprom_write(unsigned int addres,unsigned char write_data)//写数据。
                     {unsigned char i;
                       isp_data=write_data;     //要写入的数据。
                       isp_addrl=addres;         //低位地址
                       isp_addrh=addres>>8;   //高位地址
                       isp_contr=0x01;
                       isp_contr=isp_contr|0x80; //设时间与充ISP操作。
                       isp_cmd=0x02;                 //写命令
                       isp_trig=0x46;               //触发
                       isp_trig=0xb9;               //触发启动。
                       for(i=0;i<3;i++);
                       isp_addrl=0xff;
                       isp_addrh=0xff;
                       isp_contr=0x00;
                       isp_cmd=0x00;
                       isp_trig=0x00;

                    
                         }
           unsigned char eeprom_read(unsigned int addres)
                     {unsigned char i,z;
                       isp_addrl=addres;         //低位地址
                       isp_addrh=addres>>8;   //高位地址
                       isp_contr=0x01;
                       isp_contr=isp_contr|0x80; //设时间与充ISP操作。
                       isp_cmd=0x01;                 //写命令
                       isp_trig=0x46;               //触发
                       isp_trig=0xb9;               //触发启动。
                       for(i=0;i<3;i++);
                       isp_addrl=0xff;
                       isp_addrh=0xff;
                       isp_contr=0x00;
                       isp_cmd=0x00;
                       isp_trig=0x00;
                       z=isp_data;
                       return(z);
                    
                    
                     }

一个汇编的:
           ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
           ;;;         内部EEPROM读写定义
           ISP_DATA     EQU   0E2H       ;写入读出数据寄存器.
           ISP_ADDRH   EQU   0E3H       ;地址寄存器高8位
           ISP_ADDRL   EQU   0E4H       ;地址寄存器低8位
           ISP_CMD       EQU   0E5H       ;命令模式寄存器
           ISP_TRIG     EQU   0E6H       ;命令触发寄存器
           ISP_CONTR   EQU   0E7H       ;ISP/IAP控制寄存器.
           ISP_IAP_BYTE_READ EQU 1 ;字节读
           ISP_IAP_BYTE_PROGRAM EQU 2 ;字节编程,要空才能写
           ISP_IAP_SECTOR_ERASE EQU 3 ;扇区擦除,
           WAIT_TIME     EQU   1                 ;20M以下为1
           BYTE_ADDR_HIGH EQU   60H       ;高位地址
           BYTE_ADDR_LOW   EQU   61H       ;低位地址
           BYTE_WRITE_DATA EQU 62H       ;要写入的数据

           ;***********************内部EEPROM操作*************************
           READ_EEPROM:MOV ISP_ADDRH,ISP_ADDRH     ;送高地址
                                   MOV ISP_ADDRL,ISP_ADDRL     ;送低地址
                                   MOV ISP_CONTR,#01h               ;设置等等待时间
                                   ORL ISP_CONTR,#80h               ;允许ISP/IAP操作
                                   MOV ISP_CMD,#01h                   ;送读命令
                                   MOV ISP_TRIG,#46H                 ;触发
                                   MOV ISP_TRIG,#0B9H               ;触发启动.
                                   NOP
                                   NOP
                                   MOV ISP_CONTR,#00H
                                   MOV ISP_CMD,#00H
                                   MOV ISP_TRIG,#00H
                                   MOV ISP_ADDRH,#0FFH
                                   MOV ISP_ADDRL,#0FFH
                                   MOV 6AH,ISP_DATA     ;读出的数据放到6AH单元中。

                                   RET
           WRITE_EARES: MOV WDT,#34H
                                     CLR EA                                           ;关中断
                                     MOV ISP_ADDRH,ISP_ADDRH     ;送高地址
                                     MOV ISP_ADDRL,ISP_ADDRL     ;送低地址
                                     MOV ISP_CONTR,#1h                     ;设置等等待时间
                                     ORL ISP_CONTR,#10000000B       ;允许ISP/IAP操作
                                     MOV ISP_CMD,#3h                         ;送扇区命令
                                     MOV ISP_TRIG,#46H                     ;触发
                                     MOV ISP_TRIG,#0B9H                   ;触发启动.
                                     NOP
                                     NOP
                                     MOV ISP_CONTR,#00H
                                     MOV ISP_CMD,#00H
                                     MOV ISP_TRIG,#00H
                                     MOV ISP_ADDRH,#0FFH
                                     MOV ISP_ADDRL,#0FFH
                                     SETB EA
                                     RET
           WRITE_EEPROM:MOV WDT,#34H
                                     CLR EA
                                     MOV ISP_DATA,BYTE_WRITE_DATA ;要写入的数据
                                     MOV ISP_ADDRH,ISP_ADDRH           ;送高地址
                                     MOV ISP_ADDRL,ISP_ADDRL           ;送低地址
                                     MOV ISP_CONTR,#1h                       ;设置等等待时间
                                     ORL ISP_CONTR,#10000000B         ;允许ISP/IAP操作
                                     MOV ISP_CMD,#02h                         ;送写命令
                                     MOV ISP_TRIG,#46H                       ;触发
                                     MOV ISP_TRIG,#0B9H                     ;触发启动.
                                     NOP
                                     NOP
                                     MOV ISP_CONTR,#00H
                                     MOV ISP_CMD,#00H
                                     MOV ISP_TRIG,#00H
                                     MOV ISP_ADDRH,#0FFH
                                     MOV ISP_ADDRL,#0FFH
                                     SETB EA
          

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[5]
  • 评论人:[匿名] 时间: [2011/8/2 21:50:55] IP:[182.93.222.5*]
  • 9ICMYL , [url=http://lrznqrssfxwf.com/]lrznqrssfxwf[/url], [link=http://ofnkglscarax.com/]ofnkglscarax[/link], http://lotxslwxycdp.com/
  • 评论人:[匿名] 时间: [2011/8/2 16:30:24] IP:[93.92.221.7*]
  • 6s010K <a href="http://rvxgxnlinopw.com/">rvxgxnlinopw</a>
  • 评论人:[匿名] 时间: [2011/8/1 19:34:52] IP:[92.103.183.9*]
  • VqLzd1 , [url=http://htqdwmtbgtzp.com/]htqdwmtbgtzp[/url], [link=http://orpzshlmcrsa.com/]orpzshlmcrsa[/link], http://ixvmrxqugvzk.com/
  • 评论人:[匿名] 时间: [2011/8/1 15:23:53] IP:[49.212.38.13*]
  • Cp2AzK <a href="http://kuynfvfqwsdq.com/">kuynfvfqwsdq</a>
  • 评论人:[匿名] 时间: [2011/7/31 15:30:34] IP:[194.228.3.2*]
  • I feel satisfied after renaidg that one.

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号