TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: FER_CBA en 22 de Abril de 2007, 17:27:48

Título: Compara dos bytes !!!
Publicado por: FER_CBA en 22 de Abril de 2007, 17:27:48
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
Título: Re: Compara dos bytes !!!
Publicado por: SavageChicken en 22 de Abril de 2007, 18:27:28
Debería funcionarte bien con el acarreo y el Z

Algo así debe funcionar:

Código: Microchip Assembler
  1. comparar:
  2.         movfw   NUMERO_A
  3.         subwf   NUMERO_B,W
  4.         btfsc   STATUS,C
  5.         goto    Determinar_Zero
  6.         goto    Resultado_Negativo
  7. Determinar_Zero
  8.         btfss   STATUS,Z
  9.         goto    Resultado_Positivo
  10.         goto    Resultado_Zero
Título: Re: Compara dos bytes !!!
Publicado por: FER_CBA en 22 de Abril de 2007, 18:47:52
Gracias por la respuesta pero no se si viste que trabajo solo con el nible inferior de cada byte, lo mismo verifico el C o el DC? gracias
Título: Re: Compara dos bytes !!!
Publicado por: SavageChicken en 22 de Abril de 2007, 19:03:45
Si solo quieres tomar solo los 4 bits menos significativos, deberías limpiar el byte de la siguiente manera, ten cuidado de usar nuevas variables para no grabar el NUMERO_B limpiado sobre el ORIGINAL_B.

Código: Microchip Assembler
  1. comparar:
  2.         movfw   ORIGINAL_B
  3.         addlw   0x0F
  4.         movwf   NUMERO_B
  5.         movfw   ORIGINAL_A
  6.         addlw   0x0F
  7.         subwf   NUMERO_B,W
  8.         btfsc   STATUS,C
  9.         goto    Determinar_Zero
  10.         goto    Resultado_Negativo
  11. Determinar_Zero
  12.         btfss   STATUS,Z
  13.         goto    Resultado_Positivo
  14.         goto    Resultado_Zero

Salud  8)