TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: FER_CBA en 22 de Abril de 2007, 17:28:35
-
Alguien conoce una rutina que funcione para compara 2 bytes de los cuales solo uso los 4 bits menos significativos, osea que el valor del byte nunca es mayor a 15. Uso un pic 16F628a en lenguaje ensamblador. Estuve tratando con los bits dc yc ero no me funciono. necesito saber cuando uno es mayor que otro o igual. gracias
-
Hola.Por lo que te entendí, podría ser así:
Compara
movf Byte1,W ;W= Byte1
subwf Byte2,W ;W = Byte2 - W = Byte2 - Byte1
btfsc STATUS,Z ;¿Son distintos?
goto SonIguales ;No.Entonces son iguales.
btfsc STATUS,C ;¿Byte2 > Byte1? (*)
goto Byte1EsMayor ;No.(Entonces Byte1 es mayor a Byte 2)
Byte2EsMayor nop ;Si.Byte2 es mayor a Byte1
(*) STATUS,C se pone a CERO SI Y SOLO SI SE PRODUCE UN UNDERFLOW, es decir que la resta da "negativa".
Entonces, si la resta da mayor a cero o igual, el bit C del registro STATUS se seteará.
Fijate que yo debería haber puesto como comentario entonces en esa linea:
btfsc STATUS,C ;¿Byte2 => Byte1?
pero como ya había comprobado mediante el Z si la resta habia dado cero, puedo eliminar el signo =, quedando:
btfsc STATUS,C ;¿Byte2 > Byte1?
Hay muchas variantes de hacer esto mísmo.
Saludos.