TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: lolos123 en 26 de Enero de 2005, 13:21:00
-
Necesito hacer muchas comparaciones entre datos y queria saber si hay alguna forma facil de hacerlas.
Los datos son Bytes y he visto que se puede hacer así:
MOVF A,W
XORWF B,W
BTFSC STATUS,Z
GOTO IGUAL
donde A y B son los datos.
¿Se puede hacer de otras forma mejor?
¿If sirve para esto?lo he intentado pero o la he usado mal o no sirve.
if (A==B)
......
else
....
¿no vale?¿ no???
No se si ha quedado claro ,pero bueno agradezco, vuestros comentarios y ayuda.
Gracias por vuestro tiempo.
-
Primero: Las primeras instrucciones que has escrito son correctas y son en asembler.
Es para comparar si dos valores son iguales. (o diferentes)
También puedes hacerlo así:
movf a,w
subwf b,w
btfsc STATUS,Z
goto igual
Con el carry:
si a < b ir a menor_que
movf b,w
subwf a,w
btfss STATUS,C
goto menor_que
si a > o = b ir a mayor_o_igual
movf b,w
subwf a,w
btfsc STATUS,C
goto mayor_o_igual
si a < o = b ir a menor_o_igual
movf a,w
subwf b,w
btfsc STATUS,C
goto menor_o_igual
si a <> b ir a distinto
movf b,w
subwf a,w
btfsc STATUS,Z
goto distinto
segundo: lo que has escrito del "if" es C. y aunque no conozco casi nada de C creo que está mal escrita la sentencia. Pregunta a los genios del C.