联系方式  客服中心 会员中心 切换到繁體中文

 单片机技术培训基地
 | 网站首页 | 资讯 | 培训中心 | 技术文章 | 软件下载 | 产品展示 | 留言板 | 电子商城 | 供求信息 | 求职招聘 | 
您现在的位置: 华信单片机 > 技术文章 > 设计应用 > 单片机 > 文章正文 用户登录 新用户注册
AT89S8252片内EEPROM及高128字节的访问方法         ★★★ 【字体:
AT89S8252片内EEPROM及高128字节的访问方法
作者:华信单片…    文章来源:本站原创    点击数:    更新时间:2005-2-25    

 

WMCON—看门狗及存储器控制寄存器                                                       地址:96H

 

 

BIT

PS2

PS1

PS0

EEMWE

EEMEN

DPS

WDTRST

WDTEN

7

6

5

4

3

2

1

0

 

 

EEMWE:
   写EEPROM使能位。使用 MOVX指令写EEPROM之前必须置位。写完EEPROM之后要清零。

EEMEN:
   EEPROM访问使能位。EEMEN=1时,指令 MOVX  A,@DPTR和MOVX  @DPTR,A 访问的不再是外部数据存储器,而是访问内部EEPROM;当EEMEN=0时,这两条指令则访问外部数据存储器。

WDTRST:
   写操作判断位。写EEPROM 时这一位用作只读的RDY/BSY。在内部编程过程起动后,RDY/BSY为“0”。而编程结束后,RDY/BSY 自动恢复为“1”。也就是说,RDY/BSY为“1”时表示可以对EEPROM进行写操作。

DPS2/DPS1/DPS0:
    看门狗预定比例选择位。

DSP:
   数据指针选择位。

WTDEN:
   看门狗使能位。

  数据存储器—EEPROM和RAM的访问方法:

  AT89S8252内部有2K字节的EEPROM和256字节的RAM。
1. RAM
   高128字节的RAM具有与SFR相同的地址,但两者在物理上是完全分离的。对它们的访问取决于指令的寻址模式。如果寻址模式为直接寻址,如:MOV  0A0H,#data,则访问的是地址为0A0H的SFR(P2);如果寻址模式为间接寻址,如:MOV  @R0,#data,则访问的是地址为0A0H的片内RAM。

2. EEPROM
   访问片内EEPROM的指令为 MOVX  @DPTR,A 和 MOVX  A,@DPTR。在访问(读/写)片内EEPROM 之前,首先要置位WMCON 的EEMEN。否则,MOVX 指令访问的是片外的RAM。
   如果要对EEPROM进行写操作:
1. 置位WMCON 的EEMWN;
2. 执行MOVX  @DPTR,A指令;
3. 检查WMCON的WDTRST是否为“1”;
4. 如果是为“1”,表明编程结束,可以写入另一个数据,或者清除EEMWE 和 EEMEN结束对EEPROM的操作;
5. 如果为“0”,则返回到第三步。

基本例程如下:
   读例程:
           MOV  DPTR,#7FEH       ;要访问的EEPROM地址
           MOV  A,08H            ;置位EEMEN
           ORL  96H,A
           MOVX A,@DPTR          ;读数据
           MOV  A,0F7H          
           ANL  96H,A            ;清除EEMEN

    写例程:
           MOV   DPTR,#7FEH      ;要访问的EEPROM地址
           MOV   A,#18H          ;置位EEMEN 和 EEMWE
           ORL   96H,A
           MOV   A,#77H
           MOVX  @DPTR,A         ;写数据77H
HERE:     MOV   A,96H
           JNB   ACC.1,HERE       ;等待编程结束
           MOV   A,0E7H
           ANL   96H,A           ;清除EEMEN 和 EEMWE


;定义EEPROM的存放地址[000H(2000H)-7FFH(27FFH)]

ACS01   EQU     000H       

写数据实例:
        MOV     DPTR,#ACS01     ;EEPROM的地址
        MOV     R7,#1           ;写入的字节数
        CALL    WRITE_data      ;调写数据到EEPROM中

读数据实例:
        MOV     DPTR,#ACS01     ;要访问的EEPROM地址-->CLK
        MOV     R7,#1           ;字节数
        CALL    READ_data       ;取出数据

;*---------------------------------------------------------
;* 利用RDY/BSY写周期,写数据到EEPROM中,和检验的例程
;* 入口条件:要访问的地址-->DPTR;写入的数据存放首址-->R0;字节数-->R7
;----------------------------------------------------------
WRITE_data:
        PUSH    DPH             ;保护指针
        PUSH    DPL
        PUSH    ACC
        PUSH    B
        MOV     A,R0
        MOV     R4,A
        ORL     WMCON,#EEMEN    ; EEPROM访问使能位置1
        ORL     WMCON,#EEMWE    ; 写EEPROM使能位置1
ERROR_1:
        MOV     A, @R0          ;要写入的数据送A
        MOVX    @DPTR, A        ;写数据
loop:
        MOV     A,WMCON        
        ANL     A,#WDTRST      
        JZ      LOOP            ;等待编程结束(WDTRST=1时编程结束)
        MOVX    A,@DPTR         ;读数据
        MOV     B,@R0
        CJNE    A,B,ERROR_1     ; jump if data compare fails,读出,比较(检验)
                                ;检验正确时,向下执行,否则返回重写
        INC     R0
        INC     DPTR
        DJNZ    R7,ERROR_1      ;未处理完继
        xrl     WMCON,#EEMWE    ; 清除EEMEN和EEMWE
        xrl     WMCON,#EEMEN    ;
        POP     B
        POP     ACC
        POP     DPL             ;恢复指针
        POP     DPH
        MOV     A,R4
        MOV     R0,A
        RET

;---------------------------------------------------------
; 读EEPROM的例程
;入口条件:要访问的地址-->DPTR;读出的数据存放首址-->R0;字节数-->R7
;----------------------------------------------------------
READ_data:
        PUSH    DPH             ;保护指针
        PUSH    DPL
        PUSH    ACC
        PUSH    B
        MOV     A,R0
        MOV     R4,A
        ORL     WMCON,#EEMEN   ;EEPROM访问使能位置1
READ_1:
        MOVX    A,@DPTR        ;读数据
        MOV     @R0,A
        INC     R0              ;缓存的地址指针加一
        INC     DPTR            ;地址指针加一
        DJNZ    R7,READ_1       ;未读完继续
        XRL     WMCON,#EEMEN    ;清除EEMEN (异或)
        POP     B
        POP     ACC
        POP     DPL             ;恢复指针
        POP     DPH
        MOV     A,R4
        MOV     R0,A
        RET

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    AT89C55WD在智能流量积算仪中…
    AT24C02在IC煤气表中的应用
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)