Hallo
Ik wil een getal van 2 bytes groot gaan aftrekken van een ander getal dat ook 2 bytes groot is.
Eerst laad ik mijn variabelen met bepaalde waarden.
Als ik dit simuleer met MPLAB zie ik dat de waarden wel degelijk in het geheugen staan, maar als ik ze dan terug wil ophalen met 'MOVLW Ref1' en 'MOVLW Ref2' zie ik dat de waarde 0 in het WREG wordt geladen.
Hierdoor klopt de uitkomst ook niet.
Als ik bv. 'MOVLW 0X96' en 'MOVLW 0X12'typ dan klopt de uitkomst wel.
Weet iemand wat ik verkeerd doe?
Hieronder staat mijn code.
Dank bij voorbaat.
ORG 0X00
#include P18F4523.INC
CBLOCK
Ref1 ;Ref2:Ref1
Ref2
ADC1 ;ADC2:ADC1
ADC2
ENDC
ini MOVLW b'10010110'
MOVWF Ref1
MOVLW b'00010010'
MOVWF Ref2
MOVLW b'01100010'
MOVWF ADC1
MOVLW b'00100111'
MOVWF ADC2
;Verschil maken van ADC2:ADC1 - Ref2:Ref1 en op PORTB en D zetten
MOVLW Ref1
SUBWF ADC1, F
MOVLW Ref2
SUBWFB ADC2, F
MOVFF ADC1, PORTB
MOVFF ADC2, PORTD
;Uitkomst = zou '0001010011001100' moeten zijn
ENDREF2 is een variabele.
Met MOVLW haal je de locatie van de variabele op.
Dat wil je niet, je wil de waarde van de variabele weten.
Gebruik daartoe de MOVF REF2,w instructie.