TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Cool1993 en 30 de Septiembre de 2011, 23:51:55

Título: [Ayuda] ¿Como comparo 4 entradas de un PIC con un numero 'k'?
Publicado por: Cool1993 en 30 de Septiembre de 2011, 23:51:55
Bueno quisiera saber como comparar 4 entradas de un pic digamos de RA0:RA3 y comparar el binario de estos con un numero para que salte a alguna etiqueta que yo ponga.  Digamos que yo pongo a la entrada 0010 y cuando sea igual a 2 salte a una etiqueta y sino que continue comparando. ¿Como hago eso?
Título: Re: [Ayuda] ¿Como comparo 4 entradas de un PIC con un numero 'k'?
Publicado por: jhozate en 01 de Octubre de 2011, 00:40:45
puedes hacer XOR entre lo que lees y la constante, y verificar el resultado en el bit Z
Título: Re: [Ayuda] ¿Como comparo 4 entradas de un PIC con un numero 'k'?
Publicado por: Cool1993 en 01 de Octubre de 2011, 01:08:40
Me puedes dejar medio ejemplificado como hacer la XOR?
porque lo que va despues de eso tngo entendido que es asi:


BTFSS      STATUS,Z
goto           Etiqueta


Título: Re: [Ayuda] ¿Como comparo 4 entradas de un PIC con un numero 'k'?
Publicado por: Noelillo en 01 de Octubre de 2011, 04:05:36
NUMERO EQU D'13'

ORG 0

INICIO
         BSF           SATATUS,RP0
         CLRF          TRISB
         MOVLW       B'00011111'
         MOVWF       TRISA
         BCF            STATUS,RP0

PRINCIPAL

         MOVLW        NUMERO
         SUBWF         PORTA,W
          MOVLW       B'11110000'                       ;SUPONE QUE ES MENOR
        BTFSS           STATUS,C
         GOTO           ACTIVARSALIDAS
         MOVLW         B'11111111'                      ;SUPONE QUE SON IGUALES
         BTFSC           STATUS,Z
         GOTO            ACTIVASALIDAS
         MOVLW          B'01010101'                      ;SUPONE QUE ES MAYOR
ACTIVASALIDAS
         MOVWF          PORTB
         GOTO             PRINCIPAL

END



Título: Re: [Ayuda] ¿Como comparo 4 entradas de un PIC con un numero 'k'?
Publicado por: jhozate en 01 de Octubre de 2011, 14:17:46
bueno hace rato no programo en asm, si la sintaxis esta bien, seria asi:
compara  MOVF PORTA,W
                 XORLW '2'
                BTFSS STATUS,Z
                GOTO COMPARA
                GOTO RUTINA
Título: Re: [Ayuda] ¿Como comparo 4 entradas de un PIC con un numero 'k'?
Publicado por: mtristan en 03 de Octubre de 2011, 12:37:43
.


El código que pone jhozate está bien, pero si solamente querés comparar las entradas RA0:RA3, antes de comparar tenés que "deshacerte" de los valores que tengan las entradas RA4:RA7. Eso lo podés hacer así:

Código: ASM
  1. MOVF  PORTA,W
  2.       ANDLW  0x0F      ; La parte alta del bit queda toda con 0 y la baja no se modifica
  3.  
  4.       ; Ahora si compara:
  5.       XORLW  D'2'      ; D'2' se usa para indicar el numero 2 en decimal
  6.       BTFSC  STATUS,Z      ; Si el resultado de la operacion anterior es 0, entonces lo que habia en el puerto A es igual a 2
  7.       GOTO  Igual
  8.       GOTO  No_igual

Saludos.

Título: Re: [Ayuda] ¿Como comparo 4 entradas de un PIC con un numero 'k'?
Publicado por: jhozate en 03 de Octubre de 2011, 13:13:37
 :D :D cierto, aunque no supimos de que pic se trataba, si era un F84 habia que ignorar un solo bit porque el puerto A es de 5.
mtristan el bit Z se pone a uno cuando la operacion da Cero, en tu codigo habria que invertir los gotos o preguntar por un Uno
Título: Re: [Ayuda] ¿Como comparo 4 entradas de un PIC con un numero 'k'?
Publicado por: tapi8 en 03 de Octubre de 2011, 14:27:40
Citar
mtristan el bit Z se pone a uno cuando la operacion da Cero, en tu codigo habria que invertir los gotos o preguntar por un Uno

No, esta bien, si es uno no salta y hace GOTO IGUAL, y si es 0 salta y va a GOTO NO_IGUAL.

O yo estoy tonto o tu estas desentrenado, no?
Título: Re: [Ayuda] ¿Como comparo 4 entradas de un PIC con un numero 'k'?
Publicado por: jhozate en 03 de Octubre de 2011, 15:42:44
 :mrgreen: estoy tonto y desentrenado