You are on page 1of 17

TEMA 17

INTERRUPCION
Del
TIMER 0
INTRODUCCIN
Seguidamente comenzamos el estudio de Timer 0 como
temporizador, para ello, realizaremos un sencillo ejercicio
de temporizacin:

ENUNCIADO:

Se desea mostrar 11110000 y 00001111 alternativamente e


ininterrumpidamente en los leds conectados al puerto B y
con una cadencia de 0,5 segundos.
Como elemento temporizador utilizaremos el Timer0 del
PIC 16F84 funcionando a una frecuencia de 4 MHz,
recordemos que en estas condiciones el timer aumenta su
cuenta en 1 cada microsegundo.

CCFF D.P.E. MDULO DE PROYECTOS 2


Solucin:

Para temporizar 0,5 segundos se precisan 500000


microsegundos, lo anterior se puede conseguir si el
preescaler lo asignamos al timer y con un factor de
divisin de 8, el timer cuenta 250 y adems se producen 250
interrupciones 500000 = 8x250x250
Para que el timer cuente 250 sucesos, deberemos
inicializarlo con 256-numero de sucesos a contar que en
nuestro caso es: 156-250 = 6
Comencemos a construir nuestro proyecto, para ello
lanzamos el compilador, y seleccionamos Project Wizar

CCFF D.P.E. MDULO DE PROYECTOS 3


Damos el nombre del proyecto y fijamos en la ventana
general, la frecuencia de oscilacin, oscilador de cristal
Posteriormente seleccionamos la pestaa Timers

CCFF D.P.E. MDULO DE PROYECTOS 4


En la ventana de seleccin fijamos: perro guardin
desactivado, Timer0 fuente interna (temporizador);
resolucin 8 (factor de divisin del prescaler)

CCFF D.P.E. MDULO DE PROYECTOS 5


El cdigo que se genera es:

Que nos indica: timer en modo temporizador, factor de


divisin del preescaler 8.

Picamos sobre OK y pasamos a seleccionar la pestaa de


Interrupts

CCFF D.P.E. MDULO DE PROYECTOS 6


En esta ventana activamos la interrupcin del Timer0, con
lo que se genera el siguiente

CCFF D.P.E. MDULO DE PROYECTOS 7


Una vez que validamos pulsando sobre OK, volvemos a
zona de edicin y comprobaremos que el cdigo que ya ha
sido generado es:

Nos resta terminar el programa, editando el main y la


rutina de atencin a la interrupcin del Timer0
CCFF D.P.E. MDULO DE PROYECTOS 8
Solucin:

CCFF D.P.E. MDULO DE PROYECTOS 9


Simulacin:

CCFF D.P.E. MDULO DE PROYECTOS 10


Simulacin:

CCFF D.P.E. MDULO DE PROYECTOS 11


Simulacin:

CCFF D.P.E. MDULO DE PROYECTOS 12


Como podemos comprobar en la simulacin mediante Mplab y
utilizando el stopwatch para medir tiempos, la conmutacin
entre estados no es todo lo precisa que deseamos ya que ocurre
cada 507499 ciclos, para este ejercicio no representa ningn
incoveniente, pero si se deseara hacer un reloj en tiempo real,
esto supondra una deriva importante que deberiamos
corregir.
En el siguiente ejercicio ejer_9_1 corregimos parte de esta
deriva:

CCFF D.P.E. MDULO DE PROYECTOS 13


Ejercicio 9_1

CCFF D.P.E. MDULO DE PROYECTOS 14


CCFF D.P.E. MDULO DE PROYECTOS 15
Ejercicio 9_2

CCFF D.P.E. MDULO DE PROYECTOS 16


Ejercicio 9_2

CCFF D.P.E. MDULO DE PROYECTOS 17

You might also like