This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Dual data pointer registers problem

Hi there,

I run the codes below in uVision3 V3.30 in order to
see the effect of AUXR1 register in switching DPTR0 and DPTR1. I choose the device as AT89S51 which provides the dual DPTR function. But when I run the codes step by step in uVision, the Address Window appears the pointer address 4000h and 8000h have been written into the same address saying 82h-83h - the DPS in AUXR1 didn't switch the DPTR though the instruction 'XRL DPTRSW, #DPS' definitely alters the DPS in step run. Why this happened?

DPTRSW DATA 0A2H ;
DPS EQU 00000001B ;
ORG 00H

MOV R7, #4 ;
MOV DPTR, #4000h ;
XRL DPTRSW, #DPS ;
MOV DPTR, #8000h ;

LOOP:
XRL DPTRSW, #DPS ;
CLR A
MOVC A, @A+DPTR ;
INC DPTR ;
XRL DPTRSW, #DPS
MOVX @DPTR, A ;
INC DPTR ;
DJNZ R7, LOOP ;

END

0