MCS-51单片机外部RAM的地址空间为64K,地址总线为16位,拜访外接RAM可履行如下4条指令:
MOVX A,@DPTR
MOVX
MOVX
MOVX
其间DPTR为16位地址寄存器,地址高8位存于DPH,地址低8位存于DPL;Ri(I=0,1)是8位寄存器,作为地址指针时仅存低8位地址。
MCS-51履行上述指令时分为两个阶段:首要,是从外接程序存储器中取出指令代码,并进行剖析。然后,履行对外接RAM的数据读/写操作。在这两个阶段,P0口、P1口上的地址选通是有差异的。
履行“MOVX A,@DPTR”和“MOVX
履行“MOVX
由上所述,用R0和R1对外接RAM的直接寻址,可看作是一种页面寻址,由P2锁存器(P2 SFR)的当时值决议了当时页面地址。MCS-51单片机在复位时,P2 SFR为FFH,若程序运转中没有改动P2 SFR中的值,R0和R1只能对FF00H~FFFFH规模的外接RAM进行直接寻址,即FF页面寻址。因为用指令改动P2 SFR的值并不影响程序正常运转,因而能够用R0和R1对64K外接RAM空间的恣意一个单元进行直接寻址。这样就使MCS-51单片机外接RAM的地址指针由1个变成3个,大大方便了程序设计。
下面以数据块传送子程序为例,阐明R0和R1对外接RAM直接寻址的程序设计办法。假定数据块的源首地址为1000H,意图首地址为3045H,数据块长度为50H,程序清单如下所示:
程序1—用DPTR做地址指针
MOV
MOV
MOV
MOV
MOV
LOOP:
程序2—运用R0和R1做地址指针
MOV
MOV
MOV
MOV
LOOP:
MOVX
INC
INC
DJNZ
RET
程序1用了19条指令,程序2用了10条指令。恰当运用R0和R1地址指针,能够大大提高程序运转功率。
在运用R0和R1间址的外接RAM数据传送操作中,一般运用“MOV P2,#ADDR”和“MOV
在中止服务程序中,假如要用到地址指针,有必要在维护现场程序段维护运用的地址指针,即运用“PUSH P2”和“PUSH Ri”指令。在中止回来之前又有必要在康复现场程序段康复运用过的地址指针,即用“POP RI”和“POP P2”指令。
当单片机进入等候方法或节电方法,且又用硬件复位回来到本来的正常操作状况时,因为复位对P2 SFR写入FFH,改动了页地址。因而,在单片机进入等候方法或节电方法之前,也有必要先将P2 SFR内容进行维护。当状况康复进入原正常操作程序入口处时,再康复P2 SFR的内容。