Hallo,
Ik heb het volgende programma

MOV DPTR,#0FFAH
MOV P2,#03H
MOV R0,#81H
MOV 81H,#2FH
MOVX A,@R0
MOVX @DPTR,A
MOV A,P2

Ik moet de waarde op adres 0FFAh bepalen.
Volgens mij is dit de waarde die in het externe ram geheugen zit op adres 81h.

Indien MOVX A,@R0 vervangen zou worden door MOV A,@R0 dan zou 2Fh op het adres 0FFAh zitten.

Is mijn redenering juist? Ik denk het wel maar ik zou het graag zeker weten. Daarom post ik dit even.

Al hartelijk bedankt.

MOV DPTR,#0FFAH > DPTR = 0xFFA
MOV P2,#03H > port2 bit 0 en 1 hoog, rest laag
MOV R0,#81H > R0 = 0x81
MOV 81H,#2FH > adres 0x81=0x2F
MOVX A,@R0 > A = waarde locatie 0x81 = 0x2F
MOVX @DPTR,A > adres gegeven door dptr = A > 0xFFA = 0X2F
MOV A,P2 > A = status port 2

Je leest 0xFFA dus niet, maar overschrijft hem

Op 21 januari 2007 13:07:14 schreef williewortel:
MOVX A,@R0 > A = waarde locatie 0x81 = 0x2F
Je leest 0xFFA dus niet, maar overschrijft hem

Ik begrijp niet waarom de Accu geladen wordt met 0x2F? Het is toch een MOVX en geen MOV. Je weet toch niet wat er op adres 81h staat van het externe geheugen?
Of is de instuctie MOVX A,@R0 het zelfde als MOV A,@R0?

Bedankt
mvg

[Bericht gewijzigd door Tom v.h. op ]

MOVX wil niet zeggen dat ie per definitie alles uit extern
geheugen haalt. sommige adressen zijn intern.
Ben met dit adres uitgegegaan van het adres wat je daarvoor
gevuld hebt.
Soms wil je een interne locatie gebruiken en moet je de MOVX
opcode gebruiken omdat de MOV niet mogelijk is met de juiste
argumenten