Autor Tema: No entiendo el porque de una instrucción en un ejercicio de salto indexado  (Leído 2304 veces)

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

Desconectado morelius21

  • PIC12
  • **
  • Mensajes: 55
Hola,

Estoy intentando realizar el ejercicio salto indexado 01 de libro de Ra-Ma pero tengo una duda concreta. A ver si alguien me la puede resolver ;)
En particular es la instrucción siguiente:

Principal
   movf   PORTA,W      ; Lee el valor de las variables de entrada.
----->andlw   b'00000111'      ; Se queda con los tres bits de entrada.
   addwf   PCL,F         ; Salta a la configuración adecuada.

Se que hace esta instrucción (andlw) pero no entiendo porque se queda con los tres bits de entrada. Si alguien me puede explicar o indicar donde buscar al información estaría muy agradecido.

Seguidamente dejo todo el programa entero.

Muchas gracias

;********************************** Indexado_01.asm *************************************
;
;   ===================================================================
;     Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;     E. Palacios, F. Remiro y L. López.
;      Editorial Ra-Ma.  www.ra-ma.es
;   ===================================================================
;
; Implementar una tabla de la verdad mediante el manejo de tablas grabadas en ROM.
; Por ejemplo, la tabla será de 3 entradas y 6 salidas tal como la siguiente:
;
;       C  B  A  | S5  S4  S3  S2  S1  S0
;       -----------|---------------------------
;       0   0   0   |   0    0    1    0    1    0   ; (Configuración 0).
;       0   0   1   |   0    0    1    0    0    1   ; (Configuración 1).
;       0   1   0   |   1    0    0    0    1    1   ; (Configuración 2).
;       0   1   1   |   0    0    1    1    1    1   ; (Configuración 3).
;       1   0   0   |   1    0    0    0    0    0   ; (Configuración 4).
;       1   0   1   |   0    0    0    1    1    1   ; (Configuración 5).
;       1   1   0   |   0    1    0    1    1    1   ; (Configuración 6).
;       1   1   1   |   1    1    1    1    1    1   ; (Configuración 7).
;
; Las entradas C, B, A se conectarán a las líneas del puerto A: RA2 (C), RA1 (B) y RA0 (A).
; Las salidas se obtienen en el puerto B:
; RB5 (S5), RB4 (S4), RB3 (S3), RB2 (S2), RB1 (S1) y RB0 (S0).
;
; ZONA DE DATOS **********************************************************************

   __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
   LIST      P=16F84A
   INCLUDE  <P16F84A.INC>

; ZONA DE CÓDIGOS ********************************************************************

   ORG    0         ; El programa comienza en la dirección 0.
Inicio
   bsf   STATUS,RP0      ; Acceso al Banco 1.
   clrf   TRISB         ; Las líneas del Puerto B se configuran como salida.
   movlw   b'00011111'      ; Las 5 líneas del Puerto A se configuran como entrada.
   movwf   TRISA
   bcf   STATUS,RP0      ; Acceso al Banco 0.
Principal
   movf   PORTA,W      ; Lee el valor de las variables de entrada.
   andlw   b'00000111'      ; Se queda con los tres bits de entrada.
   addwf   PCL,F         ; Salta a la configuración adecuada.
Tabla
   goto   Configuracion0
   goto   Configuracion1
   goto   Configuracion2
   goto   Configuracion3
   goto   Configuracion4
   goto   Configuracion5
   goto   Configuracion6
   goto   Configuracion7
Configuracion0
   movlw    b'00001010'      ; (Configuración 0).
   goto   ActivaSalida
Configuracion1
   movlw    b'00001001'      ; (Configuración 1).
   goto   ActivaSalida
Configuracion2
   movlw    b'00100011'      ; (Configuración 2).
   goto   ActivaSalida
Configuracion3
   movlw    b'00001111'      ; (Configuración 3).
   goto   ActivaSalida
Configuracion4
   movlw    b'00100000'      ; (Configuración 4).
   goto   ActivaSalida
Configuracion5
   movlw    b'00000111'      ; (Configuración 5).
   goto   ActivaSalida
Configuracion6
   movlw    b'00010111'      ; (Configuración 6).
   goto   ActivaSalida
Configuracion7
   movlw    b'00111111'      ; (Configuración 7).
ActivaSalida
   movwf   PORTB         ; Visualiza por el puerto de salida.
   goto    Principal

   END
   
;   ===================================================================
;     Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;     E. Palacios, F. Remiro y L. López.
;      Editorial Ra-Ma.  www.ra-ma.es
;   ===================================================================
« Última modificación: 01 de Septiembre de 2011, 10:34:13 por morelius21 »

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: No entiendo el porque de una instrucción en un ejercicio de salto indexado
« Respuesta #1 en: 01 de Septiembre de 2011, 11:03:42 »
por lo visto lo que hace el programa es coger el valor de los 3 primeros pin del PORTA. con esto tenemos 8 combinaciones.

despues ese valor se suma al PCL.y como despues de la linea addwf  PCL,F . tenemos 8 gotos,pues facil.segun el valor que pongamos en PORTA.
se producira un salto al primer,segundo,...  u octava linea.

Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado morelius21

  • PIC12
  • **
  • Mensajes: 55
Re: No entiendo el porque de una instrucción en un ejercicio de salto indexado
« Respuesta #2 en: 01 de Septiembre de 2011, 11:15:22 »
Hola,
desde que lo he escrito he estado dandole vueltas. La duda es que no entendia que hacia una puerta AND por eso mi confusión. Igualmente te agradezco mucho tu respuesta.
Gracias a todos los del foro por vuestro trabajo.

Saludos

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: No entiendo el porque de una instrucción en un ejercicio de salto indexado
« Respuesta #3 en: 01 de Septiembre de 2011, 15:49:17 »
A eso se le llama comunmente enmascarar, leer las que nos interesan y enmascaramos ( no leemos y las dejamos a 0) las que no nos interesan. Hace unos dias preguntaron algo parecido pero de otra manera miralo.

http://www.todopic.com.ar/foros/index.php?topic=35496.0

Alo mejor asi lo entiendes mejor.



Desconectado morelius21

  • PIC12
  • **
  • Mensajes: 55
Re: No entiendo el porque de una instrucción en un ejercicio de salto indexado
« Respuesta #4 en: 13 de Septiembre de 2011, 12:44:59 »
Hola, creo que ya lo entendi pero igualmente mirare el link que me dejas.

Gracias por la ayuda.

Saludos

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: No entiendo el porque de una instrucción en un ejercicio de salto indexado
« Respuesta #5 en: 13 de Septiembre de 2011, 14:41:24 »
En síntesis, si tienes 3 dip switch conectados a esas entradas, permite seleccionar externamente el comportamiento del programa...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything