Curso Micro Tema 3

24
TEMA 3. HERRAMIENTAS DE PROGRAMACIÓN IUT Cumaná Prof. Luis Zurita Microcontroladores

description

Tema 3 de Microcontroladores I del IUT Cumaná

Transcript of Curso Micro Tema 3

Page 1: Curso Micro Tema 3

TEMA 3. HERRAMIENTAS DE PROGRAMACIÓN

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 2: Curso Micro Tema 3

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

Page 3: Curso Micro Tema 3

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,2goto RutinaAgoto RutinaB

• BTFSC F,B (Pregunta si el bit B del Registro F vale cero)• (Bit Test File Skip Clear)

– Ejemplo: btfsc suma,5goto RutinaAgoto RutinaB

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 4: Curso Micro Tema 3

STATUS7     

(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 CC. 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 ceroVale 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 31 -0   : Banco 20 - 1  : Banco 10 - 0 : Banco 0

TO. Time OutSe pone a 1 después de la conexión de la alimentación al microcontrolador, o al ejecutarse las instrucciones clrwdt ó sleepSe pone a 0 cuando el perro guardián se ha desbordado.

 PD. Power DownSe pone a 1 después de la conexión de la alimentación al microcontrolador o al ejecutarse la instrucción clrwdtSe pone a 0 mediante la ejecución de la instrucción sleep

Page 5: Curso Micro Tema 3

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 Noacarreogoto 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 Noacarreogoto Acarreo

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 6: Curso Micro Tema 3

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,2goto NOIGUALgoto 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,2goto NOIGUALgoto IGUAL

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 7: Curso Micro Tema 3

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 SIGUEgoto IGUAL ;Si Z=1, A=B

SIGUE btfsc STATUS,0 ;C=0?goto MAYOR ; Si C=1, A>Bgoto MENOR ; Si C=0, A<B

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 8: Curso Micro Tema 3

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=0Así de sencillo es seleccionar los bancos de

registros.

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 9: Curso Micro Tema 3

CONFIGURANDO UN PUERTOLa 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

Page 10: Curso Micro Tema 3

CONFIGURANDO UN PUERTOLa 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

Page 11: Curso Micro Tema 3

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 entradasbcf STATUS,5 ; (3) Se regresa al banco 0

B)      bsf STATUS, 5 ; (1) Selección de banco 1movlw    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 1movlw    B’10010001 ; B’ESSESSSE’

      movwf    TRISB        ; (2) Mixto E/S en un mismo puertobcf STATUS,5 ; (3) Se regresa al banco 0

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 12: Curso Micro Tema 3

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

Page 13: Curso Micro Tema 3

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

Page 14: Curso Micro Tema 3

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 ZuritaMicrocontroladores

Page 15: Curso Micro Tema 3

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: 49Hmovlw 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= 1bcf PORTB,1 ; RB1= 0bsf PORTA,4 ; RA4= 1

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 16: Curso Micro Tema 3

• 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,0bsf PORTA,1bcf PORTA,2

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 17: Curso Micro Tema 3

• 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,0goto RutinAgoto RutinB

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 18: Curso Micro Tema 3

TOMA DE DECISIONES

• Una Tarea.La condición puede venir internamente como externamente.

CondiciónX=1? Proceso ANO

SI

• Internabtfss STATUS,0 ; C=1?goto ProcesoAgoto SIGUE

• Externabtfss PORTA,0 ; RA0=1?goto ProcesoAgoto SIGUE

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 19: Curso Micro Tema 3

TOMA DE DECISIONES

• Dos Tareas.La condición puede venir internamente como externamente.

• Internabtfss STATUS,0 ; C=1?goto ProcesoAgoto ProcesoB

• Externabtfss PORTA,0 ; RA0=1?goto ProcesoAgoto ProcesoB

CondiciónX=1? Proceso A

NO

SI

Proceso B

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 20: Curso Micro Tema 3

• 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 ZuritaMicrocontroladores

Page 21: Curso Micro Tema 3

TOMA DE DECISIONES. EJEMPLO

• Externabtfss PORTA,0 ; RA0=1?goto ProcesoAgoto ProcesoB

ProcesoA bsf PORTB,0goto SIGUE

ProcesoB bcf PORTB,1goto SIGUE

SIGUE ------------------

RA0=1? Activar LED en RB0

NO

SI

Activar LED enRB1

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 22: Curso Micro Tema 3

TOMA DE DECISIONES. CERROJO Ó VALIDACIÓN

• Se queda esperando que la condición ocurra.

• InternaESPERA btfss INTCON,0 goto ESPERAgoto ProcesoA

• ExternaEXPLORA btfss PORTA,0 ; RA0=1?goto EXPLORAgoto ProcesoA

CondiciónX=1?

Proceso A

NO

SI

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 23: Curso Micro Tema 3

TOMA DE DECISIONES

• Multitareas.Dos condiciones permiten elegir entre uno a cuatro procesos distintos.

CondiciónX=1?

NO

SI

Proceso B

CondiciónY=1?

NO

SI

CondiciónY=1?

Proceso D

Proceso A

Proceso C

SI

NO

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 24: Curso Micro Tema 3

¿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 35Hmovwf SUMA

btfss STATUS,2

goto ProcesoA

goto Carga

35H SUMA→

Z=1?

ProcesoA

NO

SI

IUT Cumaná

Prof. Luis Zurita