You are on page 1of 4

Microcontroladores PIC

Docente: Ing. Roger Guachalla Narvez xoroger@yahoo.es

PRACTICA 08: Interrupcin por Timer0 en modo Contador

Entender el funcionamiento del Timer0 en los microcontroladores PIC Usar el Timer0 en el modo Contador El programa principal incrementa el contador binario en el puerto C infinitamente. Al pulsar 3 veces sobre el pulsador Contador, el valor del display de 7 segmentos, se incrementa.

Descripcin del Mdulo Timer0 (Temporizador/Contador) Caractersticas TMR0 TMR0 es un Contador/Temporizador de 8 bits Leble y escribible Reloj interno o externo Seleccin de flanco activo en el reloj externo Preescalador de 8 bits programable Solicitud de interrupcin opcional en el desbordamiento (de FFh a 00h) El Timer0 es un contador / temporizador de 8 bits. El registro principal de este mdulo es TMR0 (01h, 101h). Este registro se incrementa continuamente a una frecuencia seleccionable manejada por un preescalador y el reloj interno Fosc/4 (modo temporizador) o bien, por un preescalador y una seal externa (modo contador). En la siguiente figura se muestra un diagrama de bloques de este mdulo, en donde se indican los bits que afectan su operacin y la manera en que lo hacen.

El modo Temporizador En el modo temporizador la seal de reloj que controla el incremento del registro TMR0 es la frecuencia Fcy = Fosc/4, la cual puede ser dividida opcionalmente por el preescalador si as se desea. Como se puede ver en la figura anterior, este modo es seleccionado al limpiar el bit T0CS (OPTION_REG<5>). En este modo, el contenido del registro TMR0 se incrementar a la frecuencia Fcy dividida de acuerdo al preescalador, sin embargo, si se realiza una escritura al registro TMR0, su incremento es inhibido por los siguientes dos ciclos de instruccin (Tcy). El modo Contador En el modo contador, la seal que controla los incrementos del registro TMR0 es una seal externa que proviene de la patita T0CKI. En la figura anterior se puede ver que este modo se selecciona poniendo el bit T0CS en alto. Se puede seleccionar la transicin que provoca los incrementos mediante el bit Timer0 Source Edge Select T0SE (OPTION_REG <4>), limpiando este bit se selecciona la transicin de subida, mientras que al ponerlo en alto se selecciona la de bajada. La Bandera T0IF El registro TMR0 se incrementa continuamente en cualquiera de sus dos modos, desde 00h hasta FFh y en la siguiente cuenta se reinicia en 00h y as sucesivamente. Al momento del reinicio se activa la bandera T0IF (INTCON<2>) ponindose en 1. Esta activacin puede usarse de dos maneras: para solicitar una interrupcin para ser consultada por sondeo En ambos casos debe tenerse en cuenta que para poder detectar una activacin (un 1) en esta bandera, previamente habr que limpiarla por software. Esto debe realizarse en la inicializacin del Timer0 y despus de que un reciclo la ha activado. Lo ltimo puede hacerse en la rutina de atencin a la interrupcin, o bien, en la rutina que la consulta por sondeo (segn sea el caso). El preescalador El preescalador es un divisor de frecuencia de mdulo seleccionable. Como se puede ver en la figura anterior, el preescalador est compartido entre el timer0 y el mdulo watchdog, sin embargo slo puede conectarse a uno de los dos y esto se establece mediante el bit PSA (OPTION_REG<3>), as, con este bit en alto el preescalador es asignado al reloj del watchdog, mientras que con un nivel bajo en PSA el preescalador dividir la frecuencia que maneja al Timer0. La seleccin del mdulo (valor de divisin de frecuencia) del preescalador se puede realizar mediante los bits PS2,PS1,PS0 (OPTION_REG<2:0>) de acuerdo a la siguiente tabla:

A manera de resumen se presenta a continuacin una descripcin de los bits del registro OPTION_REG que tienen relacin con el Timer0: Registro OPTION_REG

bits 5 T0CS.- Bit de seleccin de la fuente de reloj para incrementar TMR0. Un 1 en este bit selecciona como reloj la patita T0CKI (modo contador), mientras que un 0 selecciona el reloj del ciclo de instruccin interno (CLKout) (modo temporizador). bit 4 T0SE.- Bit de seleccin de transicin activa del reloj en modo contador. Un 1 en este bit selecciona el incremento de TMR0 en la transicin de alto a bajo de T0CKI, mientras que un 0 selecciona la transicin de bajo a alto. bit 3 PSA.- Bit de asignacin del preescalador. Un 1 en este bit asigna el preescalador al watchdog y un 0 lo asigna al Timer0. bits 2:0 PS2:PS0.- Bits de seleccin del valor del preescaler (ver tabla anterior).

Componentes Proteus:

You might also like