内部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
21cnsound 发表于 2026-1-22 15:39
内部扩展RAM的访问:汇编用MOVX,C用xdata声明。
你是怎么用的?
上面有代码,第一个。
帮我看一下,谢谢 Starlight_77 发表于 2026-1-22 16:45
上面有代码,第一个。
帮我看一下,谢谢
11楼已经帮你改了,改52RC的扩展RAM地址即可:#0100H-->小于#0x0100H
angmall 发表于 2026-1-22 15:58
你的代码修正后版本
ORG 0000H
没有注意到扩展RAM与RAM地址都是00H-FFH,我以为扩展RAM是>=100H地址。
我丢,太无语了 已解决!
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]