Autor Tema: Compara dos bytes !!!  (Leído 1484 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado FER_CBA

  • PIC10
  • *
  • Mensajes: 13
Compara dos bytes !!!
« 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

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Compara dos bytes !!!
« Respuesta #1 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
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado FER_CBA

  • PIC10
  • *
  • Mensajes: 13
Re: Compara dos bytes !!!
« Respuesta #2 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

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Compara dos bytes !!!
« Respuesta #3 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)
No hay preguntas tontas...
Solo hay tontos que no preguntan.


 

anything