Sie sind auf Seite 1von 17

I.S.

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.

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:

MICROCONTROLADORES I
2

I.S.T AVANSYS

ELECTRNICA INDUSTRIAL

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.

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

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.

MICROCONTROLADORES I
4

I.S.T AVANSYS

ELECTRNICA INDUSTRIAL

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.

MICROCONTROLADORES I
5

I.S.T AVANSYS

ELECTRNICA INDUSTRIAL

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.

MICROCONTROLADORES I
6

I.S.T AVANSYS

ELECTRNICA INDUSTRIAL

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.

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.

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:

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

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

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:

Por ejemplo, si se desea un retardo de 10 ms solo se hara lo 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

d) COMENTAR LAS SIGUIENTES LNEAS DE CDIGO

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

registro STATUS y cules son las funciones de sus bits.


registro TRISA y TRISB.
registro PORTA y PORTB.
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 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