wat doe ik verkeerd?
ik wil P3 uitlezen in deze in R2 plaatsen, om daarmee de snelheid te kunnen regelen van een tijdsvertraging:


main    mov   a,#0h
        mov   P3,#00h
        

flash   mov   P1,#0ffh
        acall  delay 
        mov   P1,#0
        acall delay
        sjmp flash

delay   mov   a,P3
        mov  r2,a
delay2  djnz  r3,delay2
        djnz  r2,delay2      
        ret


.end

alles werkt, behalvee dat inlezen van P3 en dat overbrengen naar r2

dit stukje dus


mov   a,P3  ; plaats de inhoud van P3 in accu
mov  r2,a   ; plaats de inhoud van accu in r2

weet er trouwens iemand een goede emulator voor 8051 (afgeleide), liefst freeware...

Ik kan het fout hebben, maar moet het niet dit zijn:


mov   P3,a  ; plaats de inhoud van P3 in accu
mov   a,r2  ; plaats de inhoud van accu in r2

Andersom dus. Zo staat het in ieder geval in mijn boek computerarchitectuur.


mov  (source),(destination)

/edit
Zie hier net in een ander topic dat het daar wel zo gebruikt wordt. Dan weet ik het ook niet.

alles was juist op 1 stukje code na


main    mov   a,#0h
        mov   P3,#0FFh
        

de poort moet dus op FF staan alvorens men deze kan gebruiken als ingang. Dom van mij, dat vergeet ik dus nooit meer.

de volledige code, voor geinteresseerden:

main    mov   a,#0h
        mov   P3,#0FFh
        

flash   mov   P1,#0ffh
        acall  delay 
        mov   P1,#0
        acall delay
        sjmp flash

delay   mov   a,P3
        xrl  a,11000011b
        rl a
        rl a
        mov  r2,a
delay2  djnz  r3,delay2
        djnz  r2,delay2      
        ret


.end