GUIA4 RETARDOS

18
I.S.T AVANSYS ELECTRÓNICA INDUSTRIAL GUÍA Nº 04 MANEJO DE TIEMPOS (RETARDOS=DELAY) OBJETIVO: 1) Conocer las instrucciones de salto condicional 2) Manejar retardos 3) Realizar aplicaciones utilizando las instrucciones del PIC. REGISTROS PRINCIPALES DE PIC 16F84 1. INSTRUCCIONES DE SALTO El repertorio de instrucciones del PIc16F84 también dispone de un grupo de instrucciones de salto condicional, que son aquellas que producen un salto en función de que se cumpla o no una condición. Estas instrucciones son el único medio para realizar bifurmaciones condicionales en un programa. MICROCONTROLADORES I 1

description

dcf

Transcript of GUIA4 RETARDOS

I.S.T AVANSYSELECTRNICA INDUSTRIAL

GUA N 04MANEJO DE TIEMPOS (RETARDOS=DELAY)

OBJETIVO:1) Conocer las instrucciones de salto condicional2) Manejar retardos3) Realizar aplicaciones utilizando las instrucciones del PIC.

REGISTROS PRINCIPALES DE PIC 16F84

1. INSTRUCCIONES DE SALTO El repertorio de instrucciones del PIc16F84 tambin dispone de un grupo de instrucciones de salto condicional, que son aquellas que producen un salto en funcin de que se cumpla o no una condicin. Estas instrucciones son el nico medio para realizar bifurmaciones condicionales en un programa.El repertorio de instrucciones del PIC16F84 incluye cuatro instrucciones de salto condicional clasificados en dos grupos. Aquellas que pueden producir un salto en funcin del estado de un bit. Son el BTFSS y el BTFSC. Aquellas que pueden producir un salto en funcin del contenido de un registro distinto de cero. Son el DECFSZ e INCFSZ.

SALTOS EN FUNCIN DE UN BIT.

Son muy poderosas ya que permiten al programa tomar decisiones en funcin del estado de un bit perteneciente a cualquier registro o puerto de entra y/o salida. Las instrucciones son:

SALTOS EN FUNCIN DE UN REGISTRO

Este grupo de instrucciones de salto condicional pueden producir el salto en funcin del contenido de un registro distinto de cero y son casos especiales de los de incremento y decremento.Las instrucciones son.

2. RETARDOSUn retardo, es una forma de control de tiempo en la programacin del PIC, las instrucciones 'normales' utilizan un ciclo de mquina para ejecutarse, un ciclo mquina es la unidad bsica de tiempo de ejecucin de un programa en un PIC y depende de la velocidad del oscilador.Hay instrucciones llamadas de salto como goto, return, call, btfss, btfsc, decfz, incfz etc que necesitan 2 ciclos mquina para ejecutarse.

Si contamos los ciclos mquina de una determinada parte de instrucciones de un programa, podremos controlar los tiempos de retardo.Como sabemos que F=1/T, siendo F=frecuencia y T=tiempo, podemos determinar cunto tiempo consumir una instruccin en el microcontrolador, sabiendo que para ejecutar una instruccin el microcontrolador utiliza 4 pulsos de reloj. Ej :

Es decir que para un reloj de 4 MHz, cada instruccin simple tardar 1 useg.

Y para las instrucciones de salto tardar 2useg.

Retardo por Software

Los retardos por Software consisten en que el pic se quede EN UN BUCLE durante un tiempo. Es decir, es necesario usar uno o varios contadores que debern ser decrementados, cuando dichos contadores lleguen a 0 habrn concluido el retardo. Ejemplo con flujo-grama:

ESQUEMA DE UN BUCLE SIMPLE.

Observe en el diagrama anterior como a una variable CONTA_1 se le asigna un numero n, posteriormente esta variable se decrementa y se pregunta si ha llegado a 0, si no ha llegado a0 entonces se vuelve a decrementar, y as sucesivamente hasta que llegue a 0 en cuyo caso es el FIN del retardo. El programa se quedo perdiendo el tiempo enciclado dando vueltas n veces

Observe que tenemos una instruccin nueva decfsz, esta instruccin es equivalente a decir:Decrementa el registro f y salta si ha llegado a 0.Es una instruccin muy til y sumamente utilizada principalmente en procesos que se repiten n nmero de veces, tales como lo son los retardos.

Bucles anidados

Como hemos visto el retardo mximo que se puede generar de las formas enunciadas anteriormente son apenas mayores a 1mS. Para generar retardos mucho mayores necesitamos usar BUCLES ANIDADOS. Estos bucles anidados consisten generar un Retardo base que se repetir n veces, el retardo base se hace de la manera anteriormente mencionada usando un bucle que llamamos bucle interno, y al repetir este retardo base n veces estamos formando un bucle mayor o bucle externo. Veamos el ejemplo en flujo-grama:

Para obtener un retardo de1 segundoutilizaremos la siguiente rutina:

EJEMPLO:

Genere el cdigo para hacer un retardo de 1 segundo.

Solucin: 1 segundo = 1000 mS, notamos de inmediato que ser necesario un tercer bucle ya que el numero 1000 no podr ser cargado al CONTA_2 ya que supera el mximo de 255. As que nuestra formula con un tercer bucle seria as:

Note la facilidad para hacer retardos, Es muy conveniente usar retardos base redondos con base en 10 es decir, que el retardo base sea de 1mS o 10mS etc para que solo se repita n veces para calcular y obtener los retardos que deseemos fcilmente y no tener que calcular tanto.

Retardos como subrutinas

Supongamos que deseamos hacer un programa para un led parpadeante, que encienda ya pague cada 1 segundo. El cdigo en ensamblador seria as:

3. SUBRRUTINAS

Las subrutinas son segmentos de cdigo que se pueden ejecutar cada vez que el programa principal las llame y cuando terminen de ejecutarse regresan a la siguiente posicin de donde fueron llamadas. La instruccin que las manda a llamar es CALL y la instruccin que regresa a la siguiente posicin de donde fueron llamadas es RETURN.Las subrutinas deben tener un nombre para poder ser llamadas. Son una herramienta muy til que ahorra espacio de memoria y facilita la programacin.

Retardos como supresores de rebote

Sabemos que los elementos mecnicos como los pulsadores producen un efecto llamado rebote. Cuando se presiona un botn este no se cierra idealmente, sino que antes de cerrar se completamente rebota produciendo varios pulsos antes de cerrarse completamente. El efecto de rebote suele durar menos de 20 ms. Los pulsos falsos debido al rebote suelen ser un problema si se desea hacer un contador, ya que cuando se pulsa el botn para incrementar el contador el contador no se incrementa en 1, sino en varias unidades, Por qu? Pues porque cuenta los pulsos falsos producidos por el rebote. Los retardos son tiles supresores de rebote. Cuando se pulsa un botn se llama a un retardo de aproximadamente 20ms, despus del retardo de 20ms continua el programa, de esta manera los pulsos de rebote no desaparecen pero son completamente omitidos.

EJEMPLO:

TRUCOS

Existe un truco muy til llamado multiplicacin de retardos base. Este truco consiste en usar uno o unos pocos retardos base y solo invocarlos y multiplicarlos por X para tener tantos retardos como queramos. As se puede hacer un retardo base de 1ms y generar cuando queramos retardos desde 1ms hasta 255ms sin necesidad de hacer 255 retardos diferentes. La frmula que usaramos sera la siguiente:

Por ejemplo, si se desea un retardo de 10 ms solo se hara lo siguiente:

Lo que hace lo anterior es primero mover a W el 10, luego llama al retardo, en donde a CONTA_2 se le asigna lo que tiene W, como el retardo base es de 1ms entonces el retardo total es W x 1ms.

Podemos hacer 5 retardos base de 1ms de 10ms de 100ms de 1seg y de 10seg y as hacer combinaciones para poder hacer todos los retardos posibles desde 1ms hasta 2550 segundos. Por ejemplo, si deseamos un retardo de 362ms entonces escribiramos lo siguiente:

4. EJERCICIOS

a) SENSAR PULSADOR EN PUERTOA Y ACTIVA UN LED POR EL PUERTO B

b) PARPADEO DE UN LED

c) JUEGO DE LUCES

d) COMENTAR LAS SIGUIENTES LNEAS DE CDIGO

AUTOEVALUACIN1. Cul es la funcin del registro STATUS y cules son las funciones de sus bits.2. Cul es la funcin del registro TRISA y TRISB.3. Cul es la funcin del registro PORTA y PORTB.4. Que se requiere para configurar los puertos de entrada y salida de un microcontrolador PIC.5. Realizar un esquema para clasificar las instrucciones de acuerdo a su funcin (ejem. Manejo de bits, manejo de registros, de salto, aritmticas y lgicas, etc.6. Que son las subrutinas y los retardos.7. Que funcin cumple la instruccin CALL y RETURN8. Que funcin cumple la instruccin BCF f,b y BSF f,b9. Que funcin cumple la instruccin BTFSS f,b y BFTSC f,b.10. Realizar un programa para mostrar por el PUERTO B el dato 10101010 y que parpadea constantemente a cada 1 segundo.

MICROCONTROLADORES I 17