Vous êtes sur la page 1sur 9

USO DEL TIMER

El microntrolador PIC 16f84 posee un timer, que pude ser usado


como temporizador o contador. En este caso nos ocuparemos de
la utilización del timer como temporizador, es decir, para generar
retardo de tiempo.
•El Timer es un registro de 8 bits llamado TMR0
•Una vez que se guarda algún valor en este registro el Timer
comienza a incrementarse en forma cíclcica, es decir llega a
cero(se desborda) y sigue así sucesivamente.
•Por lo anterior el programdor debe controlarlo.
•El timer puede ser configurado para que se incremente por
medio de la ejecución de instruciones o por medio de un pulso
externo a través del pin RA4/TOCKI
•Si se incremnta por cilcos o instruciones, entonces trabaja como
temporizador y si es externo se denomina contador.
•La opción más usada es el incremento por ciclos, la otra opción
es usada para aplicaciones como contador de pulsos, medidores
de frecuencia, entre otras.
•Es importante conocer que el Timer puede generar una
interrupción (si se configura) cada vez que se desborde, además
activa un bit del INTCON cada vez que se desborda.
•El Timer cuenta con un preescalador, el cual sirve para aumentar
el tiempo del incremento, este preescalador es configurable.
•El preescalador puede ser configurado para el timer o para el
wachtdog.
•Para configurar el timer hay que conocer ciertos bits del registro
OPTION y del INTCON
•En en registro OPTION, nos interesa por el momento los bits
5,4,3 y del 0-2.
•El bit cinco sirve para Bits del preescalador (0-2)
Bit 5 Bit 3

El bit cinco sirve para configurar el incremento del timer, ya sea por
instrucción o por medio de un pulso externo.
1=Ciclo externo en RA4/TOCKI
0= Por Instrucciones
•El bit 4 se confugura solo si se trabaja conincremento por pulso externo,
este bit determina si el timer se incrementa por el pulso de
bajada(Cambio de 5v a 0V) o subida (de 0 a 5V).
0=Subida 1= Bajada.
•Los bits del 3 sirve para decir al PIC si el prescalador es para el
timer o el wachtdog.
1= Wachtdog
0=Timer
•Los bit del 0-2 se usan para configurar el preescalador,
deacuerdo a la siguiente tabla.
•En cuanto al registro INTCON se refiere nos interesan los bits 5
y2

•El bits 5 se usa solo cuando se trabaja con interrupciones, y sirve para
habilitar la interrupción del timer (con un 1)
•El bit 2 se coloca en uno cuando el timer termina de contar, y se usa
para verificar cuando el Timer se desbordó. Este bits debe ser puesto
en cero antes que el timer empiece a contar y una vez que termine.
COMO CALCULAR EL TIEMPO
DESEADO
T=(256 – TMR0)*PRES*c

Por ejemplo si se quiere calcular un tiempo de 10mSeg


•Primero hay que ver que valor de preescalador da el tiempo deseado
caundo TMR0=0
•Si el cristal es de 4Mhz, entonces c=1us
T=(256 – TMR0)*PRES*c
T=(256 )*PRES*c , despejando PRES=T /(256c)=10mS/256uS
PRES=39 , se toma un valor por encima, entonces prescalador=64
•Ahora toca buscar el valor que debe tener TMR0 para que el
tiempo sea de 10mS para un preescalador de 64
De la formua del tiempo se deseja entones TMR0

TMR0=256c - T/(PRES*c)
Para nuestro caso TMR0=256 - (10mS/64us) =99.75 ~ 100
Para calcular el verdadero retardo se rempolaza en

T=(256 – TMR0)*PRES*c
T= (256 – 100)*64us = 9.984mS
Se observa que se obtinen una buena resolución, de ahí la
ventaja de utilizar mejor los retardos con el timer cuando la
precisión del retardo es crítica
CONFIGURACIÓN Y USO DEL TIMER
Tomando como ejemplo el anterior retardo, el sotware de
configuración del timer y del retardo queda de la siguiente forma.

•Primero se connfigura el registro OPTION para decirle que el timer


va a trabajar con ciclo de instrucción (bit 5=0), además que el
prescalador lo usará el timer(Bit 3=0) y se cargan los bit 0-2 con el
código del preescalador, en este caso de 64. El código será (101).
•Por todo lo anterior en la sección de configuración del programa se
debe colocar el siguiente código.
MOVLW B’00000101’
MOVWF OPTION_REG
La rutina de retardo debe llevar el siguiente formato.
TDELAYW BCF INTCON,2 ; se balquea la bandera del timer
MOVLW .100
MOVWF TMR0 ; se carga el valor deseado en el timer
NAD BTFSS INTCON,2
GOTO NAD ;no sale hasta que no se active la ba
BCF INTCON,2 ; desactiva la bandera
RETURN ;retorna
Sin embargo muchas veces se necesitan retardos variables, que dependan
del valor de algún registro, en este caso el formato es el siguiente.
TDELAY BCF INTCON,2
MOVF TVALOR,W ;Tvalor contiene el valor deseado
MOVWF TMR0
NADA BTFSS INTCON,2
GOTO NADA
BCF INTCON,2
RETURN

Vous aimerez peut-être aussi