Curso Micro Tema 3 2

24
TEMA 3. RUTINAS INTERMEDIAS IUT Cumaná Prof. Luis Zurita Microcontroladores

description

Tema 3 complementario de Microcontroladores I del IUT Cumaná

Transcript of Curso Micro Tema 3 2

Page 1: Curso Micro Tema 3 2

TEMA 3. RUTINAS INTERMEDIAS

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 2: Curso Micro Tema 3 2

SUBRUTINA MIENTRAS SE PRESIONA UNA TECLA

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

TECLAPRESIONADA?

NO

SI

DELAY 10 ms

PROCESO A

Page 3: Curso Micro Tema 3 2

PRESIONAR TECLA Y ESPERAR A QUE SE SUELTE PARA EJECUTAR SUBRUTINA

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Tecla Presionada?

Retardo 10 ms

NO

SI

Tecla Soltada?

NO

SI

Retardo 10 ms

Proceso A

Page 4: Curso Micro Tema 3 2

ENMASCARAMIENTO

Este proceso es muy utilizado cuando se desea segmentar ó separar un registro en dos nibbles (4 bits) y luego en registros de 8 bits. La instrucción ideal para este es la “and”

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 5: Curso Micro Tema 3 2

ENMASCARAMIENTO

DatoA equ 12HDatoL equ 23HDatoH equ 4EH

movlw 4CH ; Cargamos a w con 4CHmovwf DatoA ; Transferimos 4CH a wmovlw 0FHandwf DatoA,0 ; Neutralizamos el nibble

; más significativo de DatoA y lo ; guardamos en w para no alterar el ; contenido de DatoA

movwf DatoL ; Lo guardamos en éstemovlw F0Handwf DatoA,0 ; Neutralizamos el nibble menos

; significativo de DatoAmovwf DatoHswapf DatoH ; Intercambiamos nibbles

; en DatoH para ordenarlo.

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 6: Curso Micro Tema 3 2

ENMASCARAMIENTO

• También se puede neutralizar un bit o varios bits, selectivamente, según sea nuestra conveniencia.

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 7: Curso Micro Tema 3 2

CALL K

INICIO

INSTRUCC A

INSTRUCC B

INSTRUCC C

CALL PROX

INSTRUCC D

FIN

PROX

INSTRUCC 1

INSTRUCC 2

RETURN ó RETLW K

PCL

27H

28H

29H

2AH

2BH

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

PROGRAMA PRINCIPAL

SUBRUTINA

Page 8: Curso Micro Tema 3 2

CALL K

• El llamado a una Subrutina K, desvía el flujo normal del programa, hacia donde se encuentra la etiqueta K.

• El valor del contador del programa (PC) es guardado en la pila (STACK), que es una memoria tipo FIFO (First In First Out).

• La familia de la gama media (PIC16FXXX) posee 8 niveles de STACK. Si se sobrepasa de este valor, se pierde la información del contador de programa y el microcontrolador no puede determinar el retorno correcto.

• Esto ocurre si existen 8 subrutinas anidadas (Subrutinas dentro de subrutinas).

• Ciertamente, este problema se puede presentar en programas medianos o grandes, pero debe tenerse en cuenta al momento de la programación y elaboración de un diseño.

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 9: Curso Micro Tema 3 2

CALL K

M (09H)

N (1FH)

O (2AH)

L (05H)

K (03H)

P (2EH)

Q (30H)

R (3CH)

T (40H)

PILA (STACK) (PCL)

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 10: Curso Micro Tema 3 2

TEMPORIZANDO SIN EL USO DEL TMR0

• La temporización sin el uso del temporizador TMR0 se basa en “hacer perder el tiempo” al microcontrolador mientras las ejecuta en lazos o bucles, logrando un retardo (delay) que puede variar según sean las necesidades del programa.

• Con estos retardos inducidos, podemos generar tiempos para funciones específicas, como la de eliminar rebotes de un pulsador o interruptor por software, lo que nos permite simplificar el hardware que esto acarrea en nuestro circuito aplicado al microcontrolador, dejando el uso del temporizador TMR0, para otros usos.

IUT Cumaná

Prof. Luis Zurita

Page 11: Curso Micro Tema 3 2

EJEMPLO DE UN RETARDO POR SOFTWARE SIN TMR0

RETARDO movlw d’16’ ; (1 ciclo)movwf REG2 ; Cargamos REG1 con 16 (1 ciclo)

DOS movlw d’14’ ; (1 ciclo)movwf REG1 ; Cargamos REG2 con 14 (1 ciclo)

UNO decfsz REG1,1 ; Dec REG2 (13 veces*1 ciclo + 1*2 ciclos)goto UNO ; Se mantiene dec. REG2 (2 ciclos)

TRESdecfsz REG2,1 ; Dec REG1 (16 veces * 1ciclo)goto DOS ; Va a recargar REG2 (2 ciclos)return ; (2 ciclos)

• La subrutina UNO, tarda 3 ciclos que se repite 13 veces hasta que REG2 se hace cero y salta (2 ciclos)= (3*13 ciclos)= 39 ciclos.

• La subrutina DOS consume 2 ciclos + 3 ciclos que consume la subrutina TRES= 5 ciclos, y ambas se repiten al igual que la UNO, por 16 veces = [39 ciclos (de la rutina UNO)+ 5 ciclos (de las rutinas DOS y TRES)*16 ]= 704 ciclos

• Pero, cada vez que se salta de la subrutina UNO a la TRES se consumen 2 ciclos y esto se repite por 16 veces: 2 ciclos *16 = 32 ciclos

• Adicional a esto, al iniciarse la rutina de retardo, han transcurrido 4 ciclos (hasta que empieza la subrutina UNO)

• En total= 704 ciclos + 32 ciclos + 4 ciclos + 2 ciclos (al ejecutarse “return”) = 742 ciclos.

IUT Cumaná

Prof. Luis Zurita

Page 12: Curso Micro Tema 3 2

RUTINA DE CONVERSIÓN BINARIO A BCD (8 BITS)

INICIO

DATOX W→

W RESP→

U=0D=0C=0

RESP= RESP-100

C=0?

incf C,1

incf D,1

MOSTRAR ENDISPLAY

FIN

RESP= RESP+100

RESP= RESP-10

C=0?

RESP= RESP+10

RESP= RESP-1

C=0?

incf U,1NO

SI

SI SI

NO

NO

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 13: Curso Micro Tema 3 2

RUTINA DE CONVERSIÓN DE BCD A BINARIO (8 BITS)

INICIO

DAT=0

UNI=XDEC=YCEN=Z

CEN=CEN-1

C=0?

DAT=DAT+100

DAT=DAT+10

RETURN

DEC=DEC-1

C=0?

UNI=UNI-1

C=0?

DAT=DAT+1

NO

SI

NO

NO

SI SI

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 14: Curso Micro Tema 3 2

TABLAS

• Las tablas nos permiten extraer valores para ser utilizados en otras tareas, tales como la visualización de datos, linealización de valores, conversión de códigos, etc.

• Su funcionamiento se basa en la manipulación del contador de programa (PC) mediante la suma de un puntero de tabla (registro) y la parte baja del contador de programa (PCL).

• Para un rango máximo de 256 valores, se manipula directamente el PCL. En caso de valores superiores, se debe manipular adicionalmente el PCLATH, que amplia la capacidad de datos en una tabla.

• La instrucción RETLW K, está muy asociada a las tablas, ya que cuando se llama a una subrutina “tabla”, esta instrucción extrae el valor de la misma previamente seleccionada por el puntero de tabla.

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 15: Curso Micro Tema 3 2

TABLAS

• Normalmente, cuando se llama a una subrutina “tabla”, previamente se carga el valor del puntero.

• Dentro de la subrutina “tabla”, el puntero se suma al PCL, “saltando” al valor correspondiente indicado por el puntero.

• Veamos el siguiente programa:

movf CONTADOR,0

call TABLA

movwf PORTB

TABLA addwf PCL,1

retlw ‘Valor0’

retlw ‘Valor1’

retlw ‘Valor2’

retlw ‘ValorN’

Puntero + PCL

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 16: Curso Micro Tema 3 2

VARIAS OPCIONES

TECLA1ACT?

NO

SIProceso B

TECLA2ACT?

NO

SI

TECLA2ACT?

Proceso D

Proceso A

Proceso C

NO

SI

TECLA3ACT?

SINO

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 17: Curso Micro Tema 3 2

MULTIPLEXACIÓN DE DISPLAYS

• La multiplexación de displays, consiste en la activación secuencial de varios displays. Se activa un display y se desactiva el resto, mientras el dato que se desea mostrar es colocado inmediatamente por el puerto correspondiente.

• Seguidamente, se desactiva este display, se activa el display siguiente y se desactivan los restantes y se coloca el dato correspondiente. Y así sucesivamente.

• Se recomienda que entre activación y desactivación de displays se utilice un tiempo menor a 5 ms.

• El efecto óptico percibido por el ojo humano es el de una cifra fija.

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 18: Curso Micro Tema 3 2

MULTIPLEXACIÓN DE DISPLAYS• Paso a paso: (Asumamos que tenemos tres displays)

1) Se activa display de UNIDAD2) Se desactiva el resto de los displays3) Se muestra el dato de UNIDAD

4) Se desactiva los displays de UNIDAD y CENTENA

5) Se activa el display de DECENA6) Se muestra el dato de DECENA

7) Se desactivan los displays de UNIDAD y DECENA8) Se activa el display de CENTENA9) Se muestra el dato de CENTENA

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 19: Curso Micro Tema 3 2

MULTIPLEXACIÓN DE DISPLAYS

MOSTRAR

DIG1 W→W PORTA→

HABI DISP1

RETARDO 1ms

HABI DISP2

DIG2 W→W PORTA→

RETARDO 1ms

RETURN

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores

Page 20: Curso Micro Tema 3 2

ESTRUCTURA DE CONTADORES

INICIO

CONTADOR=0

MOSTRAR

CONTADOR=0

MOSTRAR

MOSTRAR

INCF CONTADOR,1 CONTADOR=9?

1

1

NO

SI

CONTADOR ASCENDENTE SIMPLE

Page 21: Curso Micro Tema 3 2

CONTADOR ASCENDENTE COMPLEJO INICIO

UNI=0

DEC=0

RETARDO

UNI=0

MOSTRAR

INCF DEC,1

RA0=1?

1

1

NO

SI

MOSTRAR

UNI=9?

MOSTRAR

INCF UNI,1

NO

SI

NO

SI

DEC=9?

MOSTRAR DEC=0

Page 22: Curso Micro Tema 3 2

ESTRUCTURA DE CONTADORES

INICIO

CONTADOR=0

MOSTRAR

CONTADOR=9

MOSTRAR

MOSTRAR

DECF CONTADOR,1 CONTADOR=0?

1

1

NO

SI

CONTADOR DESCENDENTE SIMPLE

Page 23: Curso Micro Tema 3 2

CONTADOR DESCENDENTE COMPLEJO INICIO

UNI=0

DEC=0

RETARDO

UNI=9

MOSTRAR

DECF DEC,1

RA0=1?

1

1

NO

SI

MOSTRAR

UNI=0?

MOSTRAR

DECF UNI,1

NO

SI

NO

SI

DEC=0?

MOSTRAR DEC=9

Page 24: Curso Micro Tema 3 2

DE LA IDEA AL PROGRAMA (PARTE I)

1. Delimitar / Diseñar el Hardware2. Diagrama de Flujo para establecer el

funcionamiento lógico3. Realizar programa en lenguaje ensamblador.• Ejercicios propuestos:

– Leer el valor del puerto A y visualizarlo por el Puerto B

– Taladro / Torno– Manipular Display– Estacionamiento Local Comercial– Doble interruptor

IUT Cumaná

Prof. Luis ZuritaMicrocontroladores