TEMA 17

INTERRUPCION
Del
TIMER 0

INTRODUCCIÓN Seguidamente comenzamos el estudio de Timer 0 como temporizador. MÓDULO DE PROYECTOS 2 . realizaremos un sencillo ejercicio de temporización: ENUNCIADO: Se desea mostrar 11110000 y 00001111 alternativamente e ininterrumpidamente en los leds conectados al puerto B y con una cadencia de 0. Como elemento temporizador utilizaremos el Timer0 del PIC 16F84 funcionando a una frecuencia de 4 MHz.E.5 segundos.P. CCFF D. recordemos que en estas condiciones el timer aumenta su cuenta en 1 cada microsegundo. para ello.

para ello lanzamos el compilador. lo anterior se puede conseguir si el preescaler lo asignamos al timer y con un factor de división de 8. deberemos inicializarlo con 256-numero de sucesos a contar que en nuestro caso es: 156-250 = 6 Comencemos a construir nuestro proyecto. y seleccionamos Project Wizar CCFF D. el timer cuenta 250 y además se producen 250 interrupciones → 500000 = 8x250x250 Para que el timer cuente 250 sucesos.E. MÓDULO DE PROYECTOS 3 .P.5 segundos se precisan 500000 microsegundos. Solución: Para temporizar 0.

Damos el nombre del proyecto y fijamos en la ventana general.P. la frecuencia de oscilación. oscilador de cristal… Posteriormente seleccionamos la pestaña Timers CCFF D. MÓDULO DE PROYECTOS 4 .E.

E. MÓDULO DE PROYECTOS 5 . resolución 8 (factor de división del prescaler) CCFF D. Timer0 fuente interna (temporizador).P.En la ventana de selección fijamos: perro guardián desactivado.

Picamos sobre OK y pasamos a seleccionar la pestaña de Interrupts CCFF D.P. factor de división del preescaler 8.El código que se genera es: Que nos indica: timer en modo temporizador. MÓDULO DE PROYECTOS 6 .E.

En esta ventana activamos la interrupción del Timer0. MÓDULO DE PROYECTOS 7 .P. con lo que se genera el siguiente CCFF D.E.

E.Una vez que validamos pulsando sobre OK. volvemos a zona de edición y comprobaremos que el código que ya ha sido generado es: Nos resta terminar el programa. MÓDULO DE PROYECTOS 8 . editando el main y la rutina de atención a la interrupción del Timer0 CCFF D.P.

Solución: CCFF D. MÓDULO DE PROYECTOS 9 .P.E.

Simulación: CCFF D.E. MÓDULO DE PROYECTOS 10 .P.

P. MÓDULO DE PROYECTOS 11 .E.Simulación: CCFF D.

Simulación: CCFF D.P.E. MÓDULO DE PROYECTOS 12 .

En el siguiente ejercicio ejer_9_1 corregimos parte de esta deriva: CCFF D.Como podemos comprobar en la simulación mediante Mplab y utilizando el stopwatch para medir tiempos. pero si se deseara hacer un reloj en tiempo real. la conmutación entre estados no es todo lo precisa que deseamos ya que ocurre cada 507499 ciclos. esto supondría una deriva importante que deberiamos corregir.P. MÓDULO DE PROYECTOS 13 . para este ejercicio no representa ningún incoveniente.E.

P.Ejercicio 9_1 CCFF D. MÓDULO DE PROYECTOS 14 .E.

MÓDULO DE PROYECTOS 15 .E.P.CCFF D.

Ejercicio 9_2 CCFF D.P.E. MÓDULO DE PROYECTOS 16 .

MÓDULO DE PROYECTOS 17 .E.P.Ejercicio 9_2 CCFF D.