You are on page 1of 20

Subrutinas de retardo con

el PIC

M.I. Israel Nava Bravo


Retardos
ƒ En algunos proyectos
es necesario controlar
el tiempo que tardan
en ejecutarse algunas
acciones.
Ciclo de máquina
ƒ Unidad básica de tiempo que utiliza el
microcontrolador.
ƒ Para el PIC 1 ciclo de máquina equivale a
4 ciclos de reloj.
Tiempo de ejecución de
instrucciones
ƒ Las instrucciones en el PIC necesitan 1
ciclo de máquina para ejecutarse,
excepto las de salto que requieren de 2
ciclos de máquina.
ƒ Verificar en las hojas de datos del PIC.
Tiempo de una tarea
ƒ El tiempo que tarda el
microcontrolador en
una tarea viene dado
por la siguiente
1
fórmula:
Tiempo = 4 cm
f
Donde:
f es la frecuencia del oscilador
Cm es el número de ciclos de máquina que tarda en ejecutar la tarea
Ejemplo 1
ƒ Calcular la duración de 1 ciclo de máquina
para un PIC16F84 que utiliza un cristal de
cuarzo de 4 MHz.
Solución:

1 1
Tiempo = 4 cm = 4 1 = 1μs
f 4 MHz
Ejemplo 2
ƒ Calcular el tiempo que tarda en ejecutarse la
instrucción call si el sistema funcionase con un
cristal de cuarzo de 4 MHz.
Solución: Al tratarse de un salto la instrucción tarda 2
ciclos en ejecutarse.

1 1
Tiempo = 4 cm = 4 2 = 2 μs
f 4 MHz
Ejercicio
ƒ En un sistema
microcontrolador
PIC16F84 y cristal de
cuarzo de 4 MHz se
desea generar un
retardo de 1.5 ms.
Calcular el número
de ciclos de máquina
necesarios.
Solución
ƒ De la ecuación principal se deduce:

f 4 MHz
cm = Tiempo = 1500μs = 1500
4 4
Instrucción NOP
ƒ La instrucción NOP (no operación) no realiza
operación alguna.
ƒ Solo consume un ciclo de máquina sin hacer
nada.
Retardos mediante lazo simple
ƒ Se trata de un conjunto de instrucciones
que se repiten tantas veces como sea
necesario, hasta conseguir el retardo
pretendido.
ƒ Puede implementarse como subrutina.
Estructura de un retardo simple
CALL RETARDO

CARGA CONTADOR CONT1 CON EL


VALOR INICIAL "K"

PEQUEÑO TIEMPO DE ESPERA

DECREMENTA CONT1

CONT1 =
0 NO

SI

RETURN
Programa en ensamblador
ƒ Retardo1ms MOVLW d’249’
MOVWF CONT1
LOOP NOP
DECFSZ CONT1,F
GOTO LOOP
RETURN
Tiempo de la subrutina
Retardo1ms ;LA LLAMADA CALL APORTA 2 CICLOS
MOVLW d’249’ ;APORTA 1 CICLO DE MAQUINA, “K”
MOVWF CONT1 ;APORTA 1 CICLO DE MÁQUINA
LOOP NOP ;APORTA Kx1 CICLO DE MÁQUINA
DECFSZ CONT1,F ;(K-1)x1 CM (CUANDO NO SALTA), 2 AL SALTAR

GOTO LOOP ;APORTA (K-1)x2 CICLOS DE MÁQUINA


RETURN ;EL RETORNO APORTA 2 CICLOS DE MÁQUIINA

En total esta subrutina tarda:


2 + 1 + 1 + (Kx1) + (K-1)x1 + 2 + (K-1)x2 +2 = 5 + 4K = 1001 ciclos de máquina

1001 ciclos suponen 1 milisegundo (1001 μs) para un cristal de 4 MHz


Ecuación para el tiempo en
microsegundos

Tiempo − 5
Tiempo = 5 + 4 K ⇒ K =
4
Ejemplo 3
ƒ Calcular el valor de la constante K, para obtener
una subrutina de retardo de 500 μs con la
estructura vista.
ƒ Solución:
Tiempo − 5 500 − 5
K= = = 123.7
4 4
¿Qué valor se debe elegir para K?
ƒ Si se elige 123, se obtiene un tiempo de
retardo real de:
Tiempo = 5 + 4 K = 5 + (4 x123) = 497 μs

ƒ Si se elige 124, se obtiene un tiempo de


retardo real de:

Tiempo = 5 + 4 K = 5 + (4 x124) = 501μs


¿Puede obtenerse el tiempo exacto
de 500 μs?
ƒ ¿Qué opciones propones?
Programe el retardo en MPLAB
Tarea
ƒ ¿Cómo puede crearse un retardo
anidado?
ƒ Diagrama de flujo
ƒ Codificación en ensamblador

You might also like