TEMA 3. HERRAMIENTAS
DE PROGRAMACIÓN
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
INSTRUCCIONES DE
MANIPULACIÓN DE BITS
• BCF F,B (Poner a Cero al Bit B del registro F)
– Ejemplo: bcf Datox,5
– Datox= E4H
• BSF F,B (Poner a Uno al Bit B del registro F)
– Ejemplo: bsf Datox,3
– Datox= C8H
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
INSTRUCCIONES DE
EXPLORACIÓN/TESTEO DE BITS
• BTFSS F,B (Pregunta si el bit B del registro F vale uno)
• (Bit Test File Skip Set)
– Ejemplo: btfss suma,2
goto RutinaA
goto RutinaB
• BTFSC F,B (Pregunta si el bit B del Registro F vale cero)
• (Bit Test File Skip Clear)
– Ejemplo: btfsc suma,5
goto RutinaA
goto RutinaB
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
STATUS
7     
(L/E)
6      (L/E) 5      (L/E) 4      (L) 3      (L) 2      (L/E) 1      (L/E) 0      (L/E)
IRP RP1 RP0 TO PD Z DC C
C. Bit de acarreo en el bit MSB
Vale 1 cuando en el resultado de una operación aritmética, se ha producido una acarreo (suma)
Vale 0 si no se ha producido un acarreo.
Para el caso de una resta, ocurre todo lo contrario a lo expuesto:
Vale 1 si no se ha producido un "préstamo"
Vale 0 si se ha producido un "préstamo"
 DC. Acarreo en el cuarto bit (Nibble bajo). Misma descripción de C, pero referida al cuarto bit.
 Z. Cero.
Vale 1 si el resultado de una operación lógico - aritmética es cero
Vale 0 si el resultado de una operación lógico- aritmética NO es cero
 IRP. Bit para direccionamiento indirecto de los bancos de datos.
 RP1 - RP0. Bits para direccionamiento directo de los bancos de datos.
1 - 1   : Banco 3
1 -0   : Banco 2
0 - 1  : Banco 1
0 - 0 : Banco 0
TO. Time Out
Se pone a 1 después de la conexión de la alimentación al microcontrolador, o al ejecutarse las
instrucciones clrwdt ó sleep
Se pone a 0 cuando el perro guardián se ha desbordado.
 PD. Power Down
Se pone a 1 después de la conexión de la alimentación al microcontrolador o al ejecutarse la
instrucción clrwdt
Se pone a 0 mediante la ejecución de la instrucción sleep
RESULTADO DE OPERACIONES
LÓGICO/ARITMÉTICAS
• ¿Cómo hacemos para saber si la suma de dos registros ha producido
acarreo?
R= Se suman los dos registros y se pregunta por el bit c del registro
STATUS:
movf DatoA,0 ;DatoA W→
addwf DatoB,0 ;DatoA+DatoB W→
btfss STATUS,0 ; C=1?
goto Noacarreo
goto Acarreo
• ¿Cómo sabemos si la suma de dos nibbles (4 bits) ha producido
acarreo?
R= Se suman los dos registros y se pregunta por el bit DC del Registro
STATUS:
movf DatoA,0 ;DatoA W→
addwf DatoB,0 ;DatoA+DatoB W→
btfss STATUS,1 ; DC=1?
goto Noacarreo
goto Acarreo
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
RESULTADO DE OPERACIONES
LÓGICO/ARITMÉTICAS
• ¿Cómo sabemos si un registro es igual a otro?
• Opción A: Se restan ambos registros y se pregunta si Z es igual
a 1:
movf DatoB,0 ;DatoB W→
subwf DatoA,0 ;DatoA – DatoB W→
btfss STATUS,2
goto NOIGUAL
goto IGUAL
• Opción B: Se aplica XOR entre ambos registros y:
movf DatoB,0 ;DatoB W→
xorwf DatoA,0 ;DatoA (XOR) DatoB W→
btfss STATUS,2
goto NOIGUAL
goto IGUAL
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
RESULTADO DE OPERACIONES
LÓGICO/ARITMÉTICAS
• ¿Cómo sabemos si un registro es mayor, igual o menor a
otro?
R= Se restan ambos registros (A – B) y:
movf DatoB,0 ;DatoB W→
subwf DatoA,0 ;DatoA-DatoB W→
EXPLORA btfss STATUS,2 ; Z=1?
goto SIGUE
goto IGUAL ;Si Z=1, A=B
SIGUE btfsc STATUS,0 ;C=0?
goto MAYOR ; Si C=1, A>B
goto MENOR ; Si C=0, A<B
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
SELECCIONANDO LOS BANCOS DE
REGISTROS
• El PIC 16F84 posee solamente dos (2)
bancos de Registros, por lo que para
seleccionar el banco deseado, basta con
manipular el bit RP0 del registro STATUS.
• Si RP0= 1, se ha seleccionado el banco 1
• Si RPO= 0, se ha seleccionado el banco 0
• Ejemplo: Seleccione el banco de registros
1:
– bsf STATUS,5 ; RP0= 1
• Seleccione el banco de registros 0:
– bcf STATUS,5 ; RP0=0
Así de sencillo es seleccionar los bancos de
registros.
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
CONFIGURANDO UN PUERTO
La configuración de puertos es muy fácil:
1. Se selecciona el banco 1
• Aquí se encuentran los registros que manipulan mediante software a
los circuitos triestados que determinan que un pin o puerto trabaje
como entrada o salida.
2. Se configuran mediante los registros asociados a los puertos
(TRISA y TRISB), los pines de un puerto como entrada o
salida.
• Si coloco un uno (1) en un bit asociado a un puerto (RA0, RA1, RB5,
RB7,etc), éste se comportará como una entrada y solamente
podremos leer por esta entrada.
• Si coloco un cero (0) en un bit asociado a un puerto, éste se
comportará como una salida y solamente podremos escribir por esta
entrada.
• Podemos hacer analogía de la siguiente forma:
            1 = In     = Entrada = Solo lectura
            0 = Out  = Salida   = Solo escritura
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
CONFIGURANDO UN PUERTO
La configuración de puertos es muy fácil:
3. Se selecciona o se regresa al banco 0, para trabajar con los
puertos que han sido previamente configurados.
• Si un puerto (o pin) ha sido configurado como salida, entonces se
podrá escribir sobre él, para sacar datos.
• Si un puerto (o pin) ha sido configurado como entrada, entonces se
podrá leer los datos que están ingresando por él.
• Nota: Escribir sobre un puerto (o pin) configurado como entrada,
no tiene ningún efecto. Si se desea escribir sobre él, es necesario
que el mismo sea habilitado como salida.
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
CONFIGURANDO UN PUERTO COMO
ENTRADA/SALIDA (POR BYTE)
Recordemos los tres pasos:
• Por Byte:
A)     bsf STATUS, 5 ; (1) Selección de banco 1
movlw    FFH ; B’11111111’
      movwf    TRISB        ; (2) Todos los bits del puertoB están
; configurados como entradas
bcf STATUS,5 ; (3) Se regresa al banco 0
B)      bsf STATUS, 5 ; (1) Selección de banco 1
movlw    00H ; B’00000000’
      movwf    TRISA        ; (2) Todos los bits del puertoA están
; configurados como salidas
bcf STATUS,5 ; (3) Se regresa al banco 0
C)      bsf STATUS, 5 ; (1) Selección de banco 1
movlw    B’10010001 ; B’ESSESSSE’
      movwf    TRISB        ; (2) Mixto E/S en un mismo puerto
bcf STATUS,5 ; (3) Se regresa al banco 0
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
CONFIGURANDO UN PUERTO COMO
ENTRADA/SALIDA (BIT A BIT)
Recordemos los tres pasos:
• Bit a bit:
bsf STATUS,5 ; (1) Selección de Banco 1
        bsf        PuertoA,1        ; (2) ¿Salida o Entrada?
        bcf        PuertoA,2       ; (2) ¿Salida o Entrada?
        bsf        PuertoA,3       ; (2) ¿Salida o Entrada?
        bcf        PuertoB,0       ; (2) ¿Salida o Entrada?
bcf        PuertoB,2       ; (2) ¿Salida o Entrada?
        bcf        PuertoB,3       ; (2) ¿Salida o Entrada?
        bsf        PuertoB,5       ; (2) ¿Salida o Entrada?
        bcf        PuertoB,7       ; (2) ¿Salida o Entrada?
bcf STATUS,5 ; (3) Se regresa al banco 0
Nota: Estamos asumiendo que en este ejemplo hemos etiquetado
previamente a 05H como PuertoA y 06H como PuertoB.
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
ESCRIBIR Y LEER SOBRE UN PUERTO
• Para configurarlos como entradas y/o salidas, debemos de estar en el banco 1.
Una vez configurados, para poder leer y/o escribir sobre estos, debemos de
cambiarnos al banco 0.
• Ejemplo. Realice un programa que configure al Puerto A como entrada y a los
primeros cuatro bits del Puerto B como salida, los restantes bits del puerto B
como entrada.
            STATUS        equ            03H   ; A esta parte se le conoce como zona de
; etiquetas o declaración de etiquetas.
            PuertoA          equ            05H ; También se puede usar la directiva
; INCLUDE
            PuertoB          equ            06H ; Y se obvian estas declaraciones
            bsf                STATUS,5        ; Hemos cambiado al banco 1, para configurar
; los puertos
            movlw            1FH
            movwf            PuertoA              ; Hemos configurado al PuertoA como entrada
            movlw            b'11110000'
            movwf            PuertoB              ; Nibble bajo como salida y nibble alto como
; entrada
            bcf                STATUS,5          ; Cambiamos al banco 0 para poder leer ó
; escribir en estos, según sea el caso.
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
REGISTROS ASOCIADOS A LOS
PUERTOS
• De configuración:
– TRISA (85H, Banco 1)
– TRISB (86H, Banco 1)
• De Trabajo (Lectura/Escritura)
– PORTA (05H, Banco 0)
– PORTB (06H, Banco 0)
• PORTA y PORTB, son registros de Lectura/Escritura, como
cualquier otro registro de propósito general, sólo que están
directamente vinculados a los puertos del microcontrolador.
• Por lo tanto su Lectura/Escritura NO difiere de la de cualquier
otro registro
IUT Cumaná
Prof. Luis Zurita
Microcontroladores
LEER Y/O ESCRIBIR EL UN VALOR
EN UN PUERTO
• Ejemplo 1. Lea el valor presente en el puerto A y guárdelo en un
Registro DatoA.
movf PORTA,0 ; PORTA W→
movwf DatoA ; W DatoA→
• Ejemplo 2. Escriba sobre el puerto B el siguiente valor: 49H
movlw 49H ; 49H W→
movwf PORTB ; W PORTB→
• Ejemplo 3. Active el bit RB0, desactive el bit RB1 y active el bit
RA4:
bsf PORTB,0 ; RB0= 1
bcf PORTB,1 ; RB1= 0
bsf PORTA,4 ; RA4= 1
IUT Cumaná
Prof. Luis ZuritaMicrocontroladores
• Según el ejemplo 3, planteado
anteriormente;
¿Qué Efectos se tiene sobre el
siguiente circuito?
LEER Y/O ESCRIBIR EL UN VALOR
EN UN PUERTO
• ¿Qué Efectos se tiene sobre el circuito
si se aplican las siguientes
instrucciones?
movlw B’00000001’
movwf PORTB
• ¿Qué Efectos se tiene sobre el
siguiente circuito si se aplican estas
siguientes instrucciones?
bcf PORTA,0
bsf PORTA,1
bcf PORTA,2
IUT Cumaná
Prof. Luis Zurita
Microcontroladores
• Para el siguiente circuito,
¿Qué valor debemos
colocar en puerto B para
que se visualice un 7 en el
display?
LEER Y/O ESCRIBIR EL UN VALOR
EN UN PUERTO
• ¿Cómo hacemos para saber el
valor del bit RA0?
Basta con explorar su estado
lógico mediante alguna de las
instrucciones de testeo y/o
exploración: btfss f,b ó btfsc
f,b:
btfss PORTA,0
goto RutinA
goto RutinB
IUT Cumaná
Prof. Luis Zurita
Microcontroladores
TOMA DE DECISIONES
• Una Tarea.
La condición puede venir
internamente como
externamente.
Condición
X=1?
Proceso A
NO
SI
• Interna
btfss STATUS,0 ; C=1?
goto ProcesoA
goto SIGUE
• Externa
btfss PORTA,0 ; RA0=1?
goto ProcesoA
goto SIGUE
IUT Cumaná
Prof. Luis Zurita
Microcontroladores
TOMA DE DECISIONES
• Dos Tareas.
La condición puede venir
internamente como
externamente.
• Interna
btfss STATUS,0 ; C=1?
goto ProcesoA
goto ProcesoB
• Externa
btfss PORTA,0 ; RA0=1?
goto ProcesoA
goto ProcesoB
Condición
X=1?
Proceso A
NO
SI
Proceso B
IUT Cumaná
Prof. Luis Zurita
Microcontroladores
• Dado el siguiente circuito, Active el LED
ubicado en RB0 si RA0, vale 0 y en caso
contrario, active el LED ubicado en RB1.
TOMA DE DECISIONES. EJEMPLO
IUT Cumaná
Prof. Luis Zurita
Microcontroladores
TOMA DE DECISIONES. EJEMPLO
• Externa
btfss PORTA,0 ; RA0=1?
goto ProcesoA
goto ProcesoB
ProcesoA bsf PORTB,0
goto SIGUE
ProcesoB bcf PORTB,1
goto SIGUE
SIGUE ------
------
------
RA0=1?
Activar LED en
RB0
NO
SI
Activar LED en
RB1
IUT Cumaná
Prof. Luis Zurita
Microcontroladores
TOMA DE DECISIONES. CERROJO Ó
VALIDACIÓN
• Se queda esperando que
la condición ocurra.
• Interna
ESPERA btfss INTCON,0
goto ESPERA
goto ProcesoA
• Externa
EXPLORA btfss PORTA,0 ; RA0=1?
goto EXPLORA
goto ProcesoA
Condición
X=1?
Proceso A
NO
SI
IUT Cumaná
Prof. Luis Zurita
Microcontroladores
TOMA DE DECISIONES
• Multitareas.
Dos condiciones permiten
elegir entre uno a cuatro
procesos distintos.
Condición
X=1?
NO
SI
Proceso B
Condición
Y=1?
NO
SI
Condición
Y=1?
Proceso D
Proceso A
Proceso C
SI
NO
IUT Cumaná
Prof. Luis Zurita
Microcontroladores
¿Cómo pasar del diagrama de flujo al
programa?
• Es sencillo:
– Cada símbolo del diagrama de flujo representa una (ó varias)
instrucción (es).
– El programador/Diseñador, mediante la práctica y/o visualización,
debe buscar las instrucciones que cumplan con los símbolos y su
contenido, e ir colocándolas secuencialmente, según lo indique el
diagrama de flujo previamente elaborado.
CARGA movlw 35H
movwf SUMA
btfss STATUS,2
goto ProcesoA
goto Carga
35H SUMA→
Z=1?
ProcesoA
NO
SI
IUT Cumaná
Prof. Luis Zurita

Curso Micro Tema 3

  • 1.
    TEMA 3. HERRAMIENTAS DEPROGRAMACIÓN IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 2.
    INSTRUCCIONES DE MANIPULACIÓN DEBITS • BCF F,B (Poner a Cero al Bit B del registro F) – Ejemplo: bcf Datox,5 – Datox= E4H • BSF F,B (Poner a Uno al Bit B del registro F) – Ejemplo: bsf Datox,3 – Datox= C8H IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 3.
    INSTRUCCIONES DE EXPLORACIÓN/TESTEO DEBITS • BTFSS F,B (Pregunta si el bit B del registro F vale uno) • (Bit Test File Skip Set) – Ejemplo: btfss suma,2 goto RutinaA goto RutinaB • BTFSC F,B (Pregunta si el bit B del Registro F vale cero) • (Bit Test File Skip Clear) – Ejemplo: btfsc suma,5 goto RutinaA goto RutinaB IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 4.
    STATUS 7      (L/E) 6      (L/E) 5     (L/E) 4      (L) 3      (L) 2      (L/E) 1      (L/E) 0      (L/E) IRP RP1 RP0 TO PD Z DC C C. Bit de acarreo en el bit MSB Vale 1 cuando en el resultado de una operación aritmética, se ha producido una acarreo (suma) Vale 0 si no se ha producido un acarreo. Para el caso de una resta, ocurre todo lo contrario a lo expuesto: Vale 1 si no se ha producido un "préstamo" Vale 0 si se ha producido un "préstamo"  DC. Acarreo en el cuarto bit (Nibble bajo). Misma descripción de C, pero referida al cuarto bit.  Z. Cero. Vale 1 si el resultado de una operación lógico - aritmética es cero Vale 0 si el resultado de una operación lógico- aritmética NO es cero  IRP. Bit para direccionamiento indirecto de los bancos de datos.  RP1 - RP0. Bits para direccionamiento directo de los bancos de datos. 1 - 1   : Banco 3 1 -0   : Banco 2 0 - 1  : Banco 1 0 - 0 : Banco 0 TO. Time Out Se pone a 1 después de la conexión de la alimentación al microcontrolador, o al ejecutarse las instrucciones clrwdt ó sleep Se pone a 0 cuando el perro guardián se ha desbordado.  PD. Power Down Se pone a 1 después de la conexión de la alimentación al microcontrolador o al ejecutarse la instrucción clrwdt Se pone a 0 mediante la ejecución de la instrucción sleep
  • 5.
    RESULTADO DE OPERACIONES LÓGICO/ARITMÉTICAS •¿Cómo hacemos para saber si la suma de dos registros ha producido acarreo? R= Se suman los dos registros y se pregunta por el bit c del registro STATUS: movf DatoA,0 ;DatoA W→ addwf DatoB,0 ;DatoA+DatoB W→ btfss STATUS,0 ; C=1? goto Noacarreo goto Acarreo • ¿Cómo sabemos si la suma de dos nibbles (4 bits) ha producido acarreo? R= Se suman los dos registros y se pregunta por el bit DC del Registro STATUS: movf DatoA,0 ;DatoA W→ addwf DatoB,0 ;DatoA+DatoB W→ btfss STATUS,1 ; DC=1? goto Noacarreo goto Acarreo IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 6.
    RESULTADO DE OPERACIONES LÓGICO/ARITMÉTICAS •¿Cómo sabemos si un registro es igual a otro? • Opción A: Se restan ambos registros y se pregunta si Z es igual a 1: movf DatoB,0 ;DatoB W→ subwf DatoA,0 ;DatoA – DatoB W→ btfss STATUS,2 goto NOIGUAL goto IGUAL • Opción B: Se aplica XOR entre ambos registros y: movf DatoB,0 ;DatoB W→ xorwf DatoA,0 ;DatoA (XOR) DatoB W→ btfss STATUS,2 goto NOIGUAL goto IGUAL IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 7.
    RESULTADO DE OPERACIONES LÓGICO/ARITMÉTICAS •¿Cómo sabemos si un registro es mayor, igual o menor a otro? R= Se restan ambos registros (A – B) y: movf DatoB,0 ;DatoB W→ subwf DatoA,0 ;DatoA-DatoB W→ EXPLORA btfss STATUS,2 ; Z=1? goto SIGUE goto IGUAL ;Si Z=1, A=B SIGUE btfsc STATUS,0 ;C=0? goto MAYOR ; Si C=1, A>B goto MENOR ; Si C=0, A<B IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 8.
    SELECCIONANDO LOS BANCOSDE REGISTROS • El PIC 16F84 posee solamente dos (2) bancos de Registros, por lo que para seleccionar el banco deseado, basta con manipular el bit RP0 del registro STATUS. • Si RP0= 1, se ha seleccionado el banco 1 • Si RPO= 0, se ha seleccionado el banco 0 • Ejemplo: Seleccione el banco de registros 1: – bsf STATUS,5 ; RP0= 1 • Seleccione el banco de registros 0: – bcf STATUS,5 ; RP0=0 Así de sencillo es seleccionar los bancos de registros. IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 9.
    CONFIGURANDO UN PUERTO Laconfiguración de puertos es muy fácil: 1. Se selecciona el banco 1 • Aquí se encuentran los registros que manipulan mediante software a los circuitos triestados que determinan que un pin o puerto trabaje como entrada o salida. 2. Se configuran mediante los registros asociados a los puertos (TRISA y TRISB), los pines de un puerto como entrada o salida. • Si coloco un uno (1) en un bit asociado a un puerto (RA0, RA1, RB5, RB7,etc), éste se comportará como una entrada y solamente podremos leer por esta entrada. • Si coloco un cero (0) en un bit asociado a un puerto, éste se comportará como una salida y solamente podremos escribir por esta entrada. • Podemos hacer analogía de la siguiente forma:             1 = In     = Entrada = Solo lectura             0 = Out  = Salida   = Solo escritura IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 10.
    CONFIGURANDO UN PUERTO Laconfiguración de puertos es muy fácil: 3. Se selecciona o se regresa al banco 0, para trabajar con los puertos que han sido previamente configurados. • Si un puerto (o pin) ha sido configurado como salida, entonces se podrá escribir sobre él, para sacar datos. • Si un puerto (o pin) ha sido configurado como entrada, entonces se podrá leer los datos que están ingresando por él. • Nota: Escribir sobre un puerto (o pin) configurado como entrada, no tiene ningún efecto. Si se desea escribir sobre él, es necesario que el mismo sea habilitado como salida. IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 11.
    CONFIGURANDO UN PUERTOCOMO ENTRADA/SALIDA (POR BYTE) Recordemos los tres pasos: • Por Byte: A)     bsf STATUS, 5 ; (1) Selección de banco 1 movlw    FFH ; B’11111111’       movwf    TRISB        ; (2) Todos los bits del puertoB están ; configurados como entradas bcf STATUS,5 ; (3) Se regresa al banco 0 B)      bsf STATUS, 5 ; (1) Selección de banco 1 movlw    00H ; B’00000000’       movwf    TRISA        ; (2) Todos los bits del puertoA están ; configurados como salidas bcf STATUS,5 ; (3) Se regresa al banco 0 C)      bsf STATUS, 5 ; (1) Selección de banco 1 movlw    B’10010001 ; B’ESSESSSE’       movwf    TRISB        ; (2) Mixto E/S en un mismo puerto bcf STATUS,5 ; (3) Se regresa al banco 0 IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 12.
    CONFIGURANDO UN PUERTOCOMO ENTRADA/SALIDA (BIT A BIT) Recordemos los tres pasos: • Bit a bit: bsf STATUS,5 ; (1) Selección de Banco 1         bsf        PuertoA,1        ; (2) ¿Salida o Entrada?         bcf        PuertoA,2       ; (2) ¿Salida o Entrada?         bsf        PuertoA,3       ; (2) ¿Salida o Entrada?         bcf        PuertoB,0       ; (2) ¿Salida o Entrada? bcf        PuertoB,2       ; (2) ¿Salida o Entrada?         bcf        PuertoB,3       ; (2) ¿Salida o Entrada?         bsf        PuertoB,5       ; (2) ¿Salida o Entrada?         bcf        PuertoB,7       ; (2) ¿Salida o Entrada? bcf STATUS,5 ; (3) Se regresa al banco 0 Nota: Estamos asumiendo que en este ejemplo hemos etiquetado previamente a 05H como PuertoA y 06H como PuertoB. IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 13.
    ESCRIBIR Y LEERSOBRE UN PUERTO • Para configurarlos como entradas y/o salidas, debemos de estar en el banco 1. Una vez configurados, para poder leer y/o escribir sobre estos, debemos de cambiarnos al banco 0. • Ejemplo. Realice un programa que configure al Puerto A como entrada y a los primeros cuatro bits del Puerto B como salida, los restantes bits del puerto B como entrada.             STATUS        equ            03H   ; A esta parte se le conoce como zona de ; etiquetas o declaración de etiquetas.             PuertoA          equ            05H ; También se puede usar la directiva ; INCLUDE             PuertoB          equ            06H ; Y se obvian estas declaraciones             bsf                STATUS,5        ; Hemos cambiado al banco 1, para configurar ; los puertos             movlw            1FH             movwf            PuertoA              ; Hemos configurado al PuertoA como entrada             movlw            b'11110000'             movwf            PuertoB              ; Nibble bajo como salida y nibble alto como ; entrada             bcf                STATUS,5          ; Cambiamos al banco 0 para poder leer ó ; escribir en estos, según sea el caso. IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 14.
    REGISTROS ASOCIADOS ALOS PUERTOS • De configuración: – TRISA (85H, Banco 1) – TRISB (86H, Banco 1) • De Trabajo (Lectura/Escritura) – PORTA (05H, Banco 0) – PORTB (06H, Banco 0) • PORTA y PORTB, son registros de Lectura/Escritura, como cualquier otro registro de propósito general, sólo que están directamente vinculados a los puertos del microcontrolador. • Por lo tanto su Lectura/Escritura NO difiere de la de cualquier otro registro IUT Cumaná Prof. Luis Zurita Microcontroladores
  • 15.
    LEER Y/O ESCRIBIREL UN VALOR EN UN PUERTO • Ejemplo 1. Lea el valor presente en el puerto A y guárdelo en un Registro DatoA. movf PORTA,0 ; PORTA W→ movwf DatoA ; W DatoA→ • Ejemplo 2. Escriba sobre el puerto B el siguiente valor: 49H movlw 49H ; 49H W→ movwf PORTB ; W PORTB→ • Ejemplo 3. Active el bit RB0, desactive el bit RB1 y active el bit RA4: bsf PORTB,0 ; RB0= 1 bcf PORTB,1 ; RB1= 0 bsf PORTA,4 ; RA4= 1 IUT Cumaná Prof. Luis ZuritaMicrocontroladores
  • 16.
    • Según elejemplo 3, planteado anteriormente; ¿Qué Efectos se tiene sobre el siguiente circuito? LEER Y/O ESCRIBIR EL UN VALOR EN UN PUERTO • ¿Qué Efectos se tiene sobre el circuito si se aplican las siguientes instrucciones? movlw B’00000001’ movwf PORTB • ¿Qué Efectos se tiene sobre el siguiente circuito si se aplican estas siguientes instrucciones? bcf PORTA,0 bsf PORTA,1 bcf PORTA,2 IUT Cumaná Prof. Luis Zurita Microcontroladores
  • 17.
    • Para elsiguiente circuito, ¿Qué valor debemos colocar en puerto B para que se visualice un 7 en el display? LEER Y/O ESCRIBIR EL UN VALOR EN UN PUERTO • ¿Cómo hacemos para saber el valor del bit RA0? Basta con explorar su estado lógico mediante alguna de las instrucciones de testeo y/o exploración: btfss f,b ó btfsc f,b: btfss PORTA,0 goto RutinA goto RutinB IUT Cumaná Prof. Luis Zurita Microcontroladores
  • 18.
    TOMA DE DECISIONES •Una Tarea. La condición puede venir internamente como externamente. Condición X=1? Proceso A NO SI • Interna btfss STATUS,0 ; C=1? goto ProcesoA goto SIGUE • Externa btfss PORTA,0 ; RA0=1? goto ProcesoA goto SIGUE IUT Cumaná Prof. Luis Zurita Microcontroladores
  • 19.
    TOMA DE DECISIONES •Dos Tareas. La condición puede venir internamente como externamente. • Interna btfss STATUS,0 ; C=1? goto ProcesoA goto ProcesoB • Externa btfss PORTA,0 ; RA0=1? goto ProcesoA goto ProcesoB Condición X=1? Proceso A NO SI Proceso B IUT Cumaná Prof. Luis Zurita Microcontroladores
  • 20.
    • Dado elsiguiente circuito, Active el LED ubicado en RB0 si RA0, vale 0 y en caso contrario, active el LED ubicado en RB1. TOMA DE DECISIONES. EJEMPLO IUT Cumaná Prof. Luis Zurita Microcontroladores
  • 21.
    TOMA DE DECISIONES.EJEMPLO • Externa btfss PORTA,0 ; RA0=1? goto ProcesoA goto ProcesoB ProcesoA bsf PORTB,0 goto SIGUE ProcesoB bcf PORTB,1 goto SIGUE SIGUE ------ ------ ------ RA0=1? Activar LED en RB0 NO SI Activar LED en RB1 IUT Cumaná Prof. Luis Zurita Microcontroladores
  • 22.
    TOMA DE DECISIONES.CERROJO Ó VALIDACIÓN • Se queda esperando que la condición ocurra. • Interna ESPERA btfss INTCON,0 goto ESPERA goto ProcesoA • Externa EXPLORA btfss PORTA,0 ; RA0=1? goto EXPLORA goto ProcesoA Condición X=1? Proceso A NO SI IUT Cumaná Prof. Luis Zurita Microcontroladores
  • 23.
    TOMA DE DECISIONES •Multitareas. Dos condiciones permiten elegir entre uno a cuatro procesos distintos. Condición X=1? NO SI Proceso B Condición Y=1? NO SI Condición Y=1? Proceso D Proceso A Proceso C SI NO IUT Cumaná Prof. Luis Zurita Microcontroladores
  • 24.
    ¿Cómo pasar deldiagrama de flujo al programa? • Es sencillo: – Cada símbolo del diagrama de flujo representa una (ó varias) instrucción (es). – El programador/Diseñador, mediante la práctica y/o visualización, debe buscar las instrucciones que cumplan con los símbolos y su contenido, e ir colocándolas secuencialmente, según lo indique el diagrama de flujo previamente elaborado. CARGA movlw 35H movwf SUMA btfss STATUS,2 goto ProcesoA goto Carga 35H SUMA→ Z=1? ProcesoA NO SI IUT Cumaná Prof. Luis Zurita