Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia4 Retardos
Guia4 Retardos
T AVANSYS
ELECTRNICA INDUSTRIAL
GUA 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 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.
MICROCONTROLADORES I
1
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
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.
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:
MICROCONTROLADORES I
2
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
MICROCONTROLADORES I
3
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
2. RETARDOS
Un retardo, es una forma de control de tiempo en la programacin del PIC,
las
MICROCONTROLADORES I
4
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
Es decir que para un reloj de 4 MHz, cada instruccin simple tardar 1 useg.
MICROCONTROLADORES I
5
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
MICROCONTROLADORES I
6
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
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.
MICROCONTROLADORES I
7
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
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 flujograma:
MICROCONTROLADORES I
8
I.S.T AVANSYS
Para
obtener
un
ELECTRNICA INDUSTRIAL
retardo
de 1
segundo utilizaremos
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:
MICROCONTROLADORES I
9
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
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.
MICROCONTROLADORES I
10
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
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
MICROCONTROLADORES I
11
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
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:
MICROCONTROLADORES I
12
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
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
MICROCONTROLADORES I
13
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
b) PARPADEO DE UN LED
MICROCONTROLADORES I
14
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
c) JUEGO DE LUCES
MICROCONTROLADORES I
15
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
MICROCONTROLADORES I
16
I.S.T AVANSYS
ELECTRNICA INDUSTRIAL
AUTOEVALUACIN
1.
2.
3.
4.
Cul
Cul
Cul
Que
es
es
es
se
la funcin del
la funcin del
la funcin del
requiere para
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 RETURN
8. Que funcin cumple la instruccin BCF f,b y BSF f,b
9. 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