Está en la página 1de 9

EL MDULO DEL TIMER 1.

El Timer 1 a diferencia del Timer 0 es un contador / temporizador de 16 bits. El conteo es realizado por dos registros de 8 bits: (TMR1H (0Fh) y TMR1L (0Eh)), estos dos registros son tanto de lectura como de escritura. Al par de registros TMR1H:TMR1L los denominaremos por comodidad como si fueran un solo registro de 16 bits (TMR1).

El Mdulo del Timer 1.

As, el registro TMR1 se incrementa de 0000h a FFFFh y en la siguiente cuenta se reinicia en 0000h y as sucesivamente, al reciclarse se activa (en alto) la bandera TMR1IF (PIR1<0>), la cual puede ser utilizada para generar una interrupcin, o bien, para ser consultada por inspeccin, teniendo las mismas precauciones que ya se explicaron antes para la bandera T0IF.

El Mdulo del Timer 1.


T1CKPS1 T1CKPS0 T1OSCEN T1SYN# TMR1CS TMR1ON

Este mdulo al igual que el Timer 0 puede funcionar en modo temporizador y en modo contador. En modo temporizador el par de registros TMR1 se incrementa en cada ciclo de instruccin, este modo se selecciona poniendo a 0 el bit TMR1CS del registro T1CON. En modo contador el par de registros TMR1 se incrementa en cada flanco subida de una seal de reloj externa en RC0 o por flanco de subida de un oscilador a cristal conectado entre RC0 y RC1 , este modo se selecciona poniendo a 1 el bit TMR1CS del registro T1CON. T1OSCEN : Impulsos reloj externo 0 : RC0/T1OSO/T1CKI 1 : RC0/T1OSO/T1CKI y RC1/T1OSI/CCP2 T1SYNC# : Sincronizacin reloj interno con reloj externo 0 : Sincronizacin 1 : No hay Sincronizacin

El preescalador del Timer 1 tiene un valor mximo de 8 y se selecciona con los bits T1CKPS1:T1CKPS0 de la siguiente manera:
T1CKPS1 T1CKPS0

0 0 1 1

0 1 0 1

1 2 4 8

A diferencia del Timer 0, el Timer 1 tiene la posibilidad de activar o detener la cuenta mediante el bit TMR1ON del registro T1CON.

T1OSCEN : Impulsos reloj externo 0 RC0/T1OSO/T1CKI 1 RC0/T1OSO/T1CKI y RC1/T1OSI/CCP2 T1SYNC# : Sincronizacin reloj interno con reloj externo 0 Sincronizacin 1 No hay Sincronizacin

TMR1CS : 0 Temporizador : 1 Contador TMR1ON : Activa desactiva el Timer

El Mdulo del Timer 1.


Carga y Temporizacin En modo temporizador el Timer 1 incrementa su cuenta en cada ciclo de instruccin. La temporizacin que se puede obtener con este mdulo se obtiene de la siguiente relacin: TempTMR1 = [(65536 - precarga)*PS]*Tinstr Donde:
precarga Valor que se le asigna al par de registros TMR1 al comenzar la temporizacin PS Valor del preescalador Tinstr 4/frecuencia de oscilacin TempTMR1 Temporizacin dada en segundos

La temporizacin mxima utilizando el oscilador interno del pic 16f877 y el valor ms grande de preescalador es: TempTMR1.Max = [(65536 - 0)*8]*1uS = 524288uS

Ejemplo

Se desea complementar el valor del puerto B cada 250mS. Se estar revisando que se haya cumplido el tiempo de la temporizacin chequeando la bandera TMR1IF. Utilizando la expresin de la precarga y utilizando el preescalador ms grande. precarga = -[([50mS/(4/fosc)])/4]+65536 = 3036 = 0x0BDC As que para obtener una temporizacin de 50mS mediante el Timer 1 se debe cargar 0x0B al registro TMR1h y 0 al registro TMR1L. El cdigo del programa sera el siguiente:

Ejemplo

Se desea complementar el valor del puerto B cada 250mS. Se estar revisando que se haya cumplido el tiempo de la temporizacin chequeando la bandera TMR1IF. Utilizando la expresin de la precarga y utilizando el preescalador ms grande. precarga = -[([50mS/(4/fosc)])/4]+65536 = 3036 = 0x0BDC As que para obtener una temporizacin de 50mS mediante el Timer 1 se debe cargar 0x0B al registro TMR1h y 0DC al registro TMR1L. El cdigo del programa sera el siguiente:

#include <htc.h> __CONFIG(0x3f71); void init(void) { // port directions: 1=input, 0=output TRISB = 0b00000000; } void main(void) { init(); TMR1CS=0; // Con valor de cero actua como temporizador // bits configuracion prescaler como indica la tabla 11 = 8 T1CKPS0=1; T1CKPS1=1; //T1CON=0b00111100; se puede declarar utilizando el registro completo TMR1IF=0; TMR1H=60; TMR1L=60; TMR1ON=1; while (1){ if (TMR1IF==1) { TMR1IF=0; PORTB=~PORTB; TMR1H=60; TMR1L=60; } } }

También podría gustarte