Vous êtes sur la page 1sur 6

UNIVERSIDAD NACIONAL AUTONOMA DE NICARAGUA

RECINTO UNIVERSITARIO RUBEN DARIO


FACULTAD DE CIENCIAS E INGENIERIA
DEPARTAMENTO DE TECNOLOGIA
INGENIERIA ELECTRONICA.
Gua de laboratorio No. 3:
Ciclos de retardo de tiempo en el microcontrolador P16f84A

Base Terica.
Un ciclo de maquina es la unidad bsica de tiempo que utiliza el
microcontrolador y equivale a 4 ciclos de reloj.
Si tenemos un oscilador de 4 MHz, el ciclo de reloj sera de 250 ns (T= 1 / 4
Mhz) y el ciclo mquina de 1 s (T= 1 / 4 Mhz)*4. Como F=1/T, es lo mismo decir
que se divide la frecuencia del oscilador entre 4.
En el datasheet se establece que la velocidad de operacin mxima (frecuencia)
es de 20 Mhz equivalente a 200 ns de ciclo de instruccin (ciclo de mquina),
esto es:
F=1/T (1/20 Mhz = 5 exp -8 multiplicada por 4 ciclos de reloj = 200 ns).
Las instrucciones del microcontrolador necesitan 1 ciclo mquina excepto
algunas excepciones, como son las instrucciones que incluyen saltos (goto,
call, btfss, btfsc, return, etc) que necesitan dos ciclos mquina.
Regla de 3 s:
El formato del ciclo de retardo es el siguiente:
movlw d'n'
movwf contador
decfsz contador,F
goto $-1
La instruccin decfsz dura 1s y la instruccin goto dura 2 s, lo que da 3 s,
por lo tanto el retardo ser:
Retardo = 3 s * n
Despejando:

n = Retardo / 3 s

Ejemplo 1:
Si se quiere un retardo de 100 s: n = 100 s / 3 s = 33.33
movlw d'33'
movwf contador
decfsz contador,F
goto $-1
return

; si no es cero salta una instruccin atrs.

El valor mximo de un contador 'n' es de 255 debido a los registros son de 8 bits.
Regla de 4 us:
El Formato del ciclo de retardo es el siguiente:
movlw d'n'
movwf contador
nop
decfsz contador,F
goto $-2
return

; si no es cero salta 2 instrucciones atrs.

La instruccin nop dura 1 s.


La instrucion decfsz dura 1 s.
La instruccin goto dura 2 s.
Por lo tanto n= retardo / 4 s.
Ejemplo 2: Para un retardo de 100 s: n = 100 s / 4 s = 25
movlw d'25'
movwf contador
nop
decfsz contador,f
goto $-2
return
Ejercicio: Calcular el valor de n para un retardo de 1 ms usando la regla de
los 4 s.

Retardos con ciclos anidados:


Retardo = m x (n x 4 s)
El formato del ciclo de retardo es el siguiente:
movlw d'm'
movwf contador_2
movlw d'n'
movwf contador_1
nop
decfsz contador_1,f
goto $-2
decfsz contador_2,f
goto $-6
; si no es cero, regresa a cargar contador_1
return
Ejemplo 4: Para un retardo de 10 ms:

Se hace un retardo de 1 ms: n=250


Se multiplica por 10: m = 10
Retardo = 10 x (250 x 4us)
= 10 x

1ms = 10 ms

movlw d'10'
movwf contador_2
movlw d'250'
movwf contador_1
nop
decfsz contador_1,f
goto $-2
decfsz contador_2,f
goto $-6
; si no es cero, regresa a cargar contador_1
return
Se puede hacer un retardo base de 1 ms y generar muchos retardos desde 1ms
a 255 ms sin necesidad de hacer 255 retardos diferentes.

Retardo = w x retardo base


Ejemplo 5:
Generar un retardo de 10 ms:
movlw d'10'
call retardo_1ms
retardo_1ms

movwf contador_2
movlw d'250'
movwf contador_1
nop
decfsz contador_1,f
goto $-2
decfsz contador_2,f
goto $-6
return

Nota: Esta rutina se puede incluir en un archivo .inc


Retardo de 1s:
Para retardos de 1s generalmente se utiliza la regla de los 3 s ya que con 4s
(usando nop) el tiempo de simulacin se hace muy extenso y muchas veces se
bloquea el pic con proteus.
Retardo = p x [m x (n x 3 s)]
n = Retardo / 3 s
n = 100 s / 3 s= 33
m = 10,000 s / 100 s = 100
p = 1,000,000 s / 10,000 s= 100

Ejercicio 1:
Elaborar un programa para un LED parpadeante que se encienda y se apague
cada 1s conectado a Rb0:
Ejercicio 2:

1) Elaborar un programa que resuelva el siguiente algoritmo, tomando en


cuenta que el led estar conectado a RB0 y el pulsador conectado a RA0.

Ejercicio 3: Elaborar un programa que simule el funcionamiento de un semforo


de 2 vas.

Vous aimerez peut-être aussi