angmall 发表于 2026-1-22 15:58:13

Starlight_77 发表于 2026-1-22 11:25
内部RAM 00-FFH
我现在要使用内部扩展256Byte,但是不行。
你的代码修正后版本
ORG 0000H

AUXR    EQU    08EH

MAIN:
      MOV SP,#7FH

      MOV AUXR,#00H      ; ★ 关键:启用内部 XRAM

      MOV DPTR,#070H
      MOV A,#07H
      MOVX @DPTR,A

      MOV DPTR,#070H
      MOVX A,@DPTR

      MOV P2,#00H
      LCALL DELAY_500MS
      MOV P2,A

MAIN_LOOP:
      SJMP MAIN_LOOP

DELAY_500MS:
      MOV R7, #04H
DLY1:
      MOV R6, #250
DLY2:
      MOV R5, #229
DLY3:
      DJNZ R5, DLY3
      DJNZ R6, DLY2
      DJNZ R7, DLY1
      RET

END

Starlight_77 发表于 2026-1-22 16:45:46

21cnsound 发表于 2026-1-22 15:39
内部扩展RAM的访问:汇编用MOVX,C用xdata声明。
你是怎么用的?

上面有代码,第一个。
帮我看一下,谢谢

21cnsound 发表于 2026-1-22 17:09:09

Starlight_77 发表于 2026-1-22 16:45
上面有代码,第一个。
帮我看一下,谢谢

11楼已经帮你改了,改52RC的扩展RAM地址即可:#0100H-->小于#0x0100H

Starlight_77 发表于 2026-1-22 18:40:26

angmall 发表于 2026-1-22 15:58
你的代码修正后版本
ORG 0000H



没有注意到扩展RAM与RAM地址都是00H-FFH,我以为扩展RAM是>=100H地址。
我丢,太无语了

Starlight_77 发表于 2026-1-22 18:45:56

已解决!

ORG 0000H

AUXR    EQU    08EH
       
MAIN:
        MOV SP,#7FH
        MOV P2,#0FFH
        MOV AUXR,#00H
       
        ;1.扩展RAM
        MOV DPTR,#0FFH;DPTR存入立即数FFH
        MOV A,#0FH    ;A存入立即数0FH
       
        MOVX @DPTR,A;DPTR地址间接存入A数据
        MOV A,#0FFH   ;测试A是否真正被存入
       
        MOVX A,@DPTR;A间接获取DPTR地址数据
       
        MOV P2,A          ;P2获取A数据,LED高4位亮
        ACALL DELAY_500MS
       
       
        ;2.RAM
        MOV R0,#0FFH;R0存入立即数FFH
        MOV @R0,#0F0H ;R0地址间接存入F0H
        MOV P2,@R0          ;P2间接获取R0地址中数据,LED低4位亮
MAIN_LOOP:
    SJMP MAIN_LOOP


DELAY_500MS:
    MOV R7, #04H
DLY1:
    MOV R6, #250
DLY2:
    MOV R5, #229
DLY3:
    DJNZ R5, DLY3
    DJNZ R6, DLY2
    DJNZ R7, DLY1
    RET

END
页: 1 [2]
查看完整版本: STC89C52内部扩展RAM为什么不能用???