Ayuda con instruccion

#1
Hola muchachos, aunque os leo no he posteado nunca y ahora os necesito.
Estoy haciendo un programilla y tengo un problema con las compaciones...

movf PORTA,W
xorwf b'00001',W ;W xor '00001' -> W flag en Z
btfsc STATUS,Z ;si Z=0,salta una posicion
goto Configuracion1 ;si Z=1 son iguales y va a 1ª
movf PORTA,W
xorwf b'00000',W
......
etc.....

Bueno, pues al cargar W con por ejemplo 00001 y lo compara con la xorfw con b'00001' no se que hago mal pero me salta el "goto" y no posiciona flag en Z...Solo me sale bien con comparaciones '00000'.
Seguro que es una tonteria pero hace tiempo que deje los estudios de elctronica y en aquella epoca di el Z-80..Ahora estoy aprendiendo por mi cuenta con un libro y pasa lo que pasa...
Muchas gracias de antemano.
saludos!!!
 
#2
Tu problema es la instruccion xorwf b'00001',W, alli estas haciendo la operacion logica entre W y el registro 0001, y el registro 0001 es el timer 0 (me parece)

Lo que tienes que hacer es guardar tu dato a comparar en alguna direccion de RAM de uso general o hacer la comparacion con una constante inmediata usando la instruccion XORLW

Código:
movf	PORTA,W
xorlw	b'00001'		;W xor '00001' -> W flag en Z
btfsc	STATUS,Z		;si Z=0,salta una posicion
goto	Configuracion1	;si Z=1 son iguales y va a 1ª
movf	PORTA,W
xorlw	b'00000'
 
Última edición:
Arriba