TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: lolos123 en 26 de Enero de 2005, 13:21:00

Título: Como comparo dos Bytes
Publicado 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.
Título: RE: Como comparo dos Bytes
Publicado por: carlyvalente en 18 de Febrero de 2005, 03:18:00
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.