Académique Documents
Professionnel Documents
Culture Documents
L8.- TIMER
Introduccion.Que es un Timer?
Un timer es un es un contador que genera una seal de
salida cuando se alcanza un recuento programado. La
seal de salida provoca una interrupcin, (las
interrupciones que estudiamos la anterior clace).
Haciendo una analogia, si tenemos un programa
dormir corriendo y al mismo tiempo que este programa
dormir esta en ejecucion tenemos un timer un reloj que
al llegar a la cuenta programada ejecutara una
interrupcion al programa dormir (suena la alarma),
despertando a la persona. De igual manera el timer en un
microcontrolador se programa y se activa para que
incrementando su cuenta al llegar al valor programado
interrumpa al programa principal para ejecutar una
accion y luego de ejecutada esa accion retorne
nuevamente al programa principal.
Direccin
Reset
Interrupcin Externa 0
Timer 0
Interrupcin Externa 1
Timer 1
Puerto Serial Tx y Rx
0000
0003
000B
0013
001B
0023
002B
El microcontrolador , como se ha indicado posee deacuerdo al modelo, cierta cantidad de timers, basicamente traera
minimamente uno, denominado timer 0 y si tiene 2, el segundo se llamara timer 1.
Cada uno de estos timer puede generar en el microcontrolador una interrupcion, y para activar dicha interrupcion se
requiere primero de habilitar las interrupciones para el timer en el registro IE. En este registro se requiere activar el timer
que vamos a utilizar es decir habilitar o ET0 o ET1, pero tambien se debe activar las interrupciones generalmente es decir
habilitar globalmente las interrupciones , esto se hace con el bit EA del mismo registro IE, en la parte de abajo encuentra
la descripcion de cada uno de los pines de este registro.
El bloque de seleccin de temporizador/contador, mediante el bit /T C del registro TMOD, Timer Mode, selecciona la
fuente de entrada de pulsos del Timer, que puede provenir directamente de la seal de reloj del microcontrolador dividida
por 12, para /T C a 0 lgico, o de una entrada de pulsos externa a travs del terminal Tx del microcontrolador, para /T C a
1 lgico.
El bloque de lgica de control utiliza una puerta de transmisin para dejar pasar, o no, los pulsos de reloj hacia el contador
(figura 7.1). En este bloque intervienen el bit TRx, Timer Run, del registro TCON, el bit GATE del registro TMOD y el
terminal de entrada /INTx, con el propsito de controlar el paso de pulsos de reloj hacia el contador, lo que a partir de
este momento se definir como puesta en marcha o parada del contador. Con los bits TRx y GATE se puede poner en
marcha o parar el Timer de forma directa, por software, o bien, por medio del estado lgico del terminal /INTx, por
hardware
Observando el circuito de la lgica de control, se deduce que si el bit GATE se pone a 0 lgico, en la entrada de la puerta
OR, habr un 1 lgico y, por tanto, un 0 lgico en la entrada de la puerta AND; en esta situacin queda claro que la puerta
est gobernada por el estado lgico del bit TRx. Entonces, si TRx vale 0 lgico, la puerta queda abierta y el Timer parado,
y si TRx vale 1 lgico, la puerta queda cerrada y el Timer en marcha, y se incrementa a cada pulso de entrada. En esta
situacin, con el bit GATE a 0 lgico, la puesta en marcha o la parada del Timer dependen del estado del bit TRx, y queda,
en consecuencia, gobernado por software.
Si GATE se pone a 1 lgico, a la entrada de la puerta OR, tras la puerta inversora, habr un 0 lgico; luego, el estado lgico
de la puerta OR depender directamente del estado lgico del terminal /INTx. Si al mismo tiempo, el bit TRx se pone a 1
lgico, queda claro que el gobierno de la puerta de transmisin depender del terminal /INTx, que pondr en marcha el
Timer cuando /INTx est a 1 lgico, y parar el Timer cuando /INTx est a 0 lgico, lo que se mencionar, a partir de ahora,
como puesta en marcha o parada del contador por hardware, es decir, por el estado lgico de /INTx.
La determinacin del modo de funcionamiento del Timer 0 y del Timer 1 se realiza con los bits M0 y M1 del registro TMOD:
existen, en efecto, en este registro un par de bits para cada Timer. El contenido del registro TCON se muestra en la
siguiente figura:
En el programa realizado se habilita la interrupcin del Timer 0 (ET0=1, EA=1), y se configura el Timer 0 en el modo 2 de
8 bits con autorrecarga (M1=1 y M0=0, registro TMOD). La puesta en marcha del Timer 0 es por software (GATE=0,
registro TMOD), el Timer 0 cuenta pulsos procedentes del reloj del microcontrolador (C/T=0, registro TMOD), y, al final
de la rutina Inicio, se pone en marcha el Timer (TR0=1).
El Timer 0 est gestionado completamente por interrupciones, de manera que cada vez que llega a desbordamiento se
activa el bit TF0, TF0=1, se produce una interrupcin a la CPU y se recarga el valor del registro TH0 en el registro TL0.
En la rutina de atencin a la interrupcin del Timer 0, RSI_Timer0, basta con complementar el estado lgico de la patilla
P1.0, para generar la frecuencia requerida. Con esta instruccin el microcontrolador lee el estado de la patilla, lo
complementa (pasa de 0 lgico a 1 lgico, y viceversa) y escribe el nuevo estado en la patilla.
El bit de rebasamiento se activa con la peticin de interrupcin y se borra, de forma automtica, cuando la CPU atiende
a la interrupcin ejecutando la rutina RSI_Timer0.
Calculo de Timer
Para determinar el valor de recarga del registro TH0, se debe considerar que el perodo necesario para generar frecuencia
de 5 kHz es de 200 s, por lo que la patilla P1.0 se debe complementar cada 100s, es decir, la mitad del perodo. Adems,
desde que se produce la interrupcin hasta que se vectoriza la interrupcin del Timer 0, transcurren tres ciclos mquina
en el mejor de los casos, y la instruccin CPL P1.0 se ejecuta en un ciclo mquina. Por tanto, el estado lgico de la patilla
P1.0 cambiar, al menos, cuatro ciclos mquina despus de que se halla activado el bit TF0.
La frmula para este caso ser la siguiente:
TH0 = 1*valor 256
Donde 1 se dar en caso de que el cristal sea nicamente 12Mhz.
Para lo que valor ser el tiempo en el cual el timer interrumpe al microcontrolador, es decir para un tiempo de 100s se
tendr:
TH0 = 1*100s 256
TH0 = 156
HARDWARE:
SOFTWARE:
ORG 0000H
AJMP
Principal
;---- Interrupcion Externa 0
ORG 0003H
RETI
;---- Timer 0
ORG 000BH
call
int_timer0
reti
Laboratorio:
Generar una onda cuadrada en el pin p2.7, con una frecuencia de 10 Khz con el Timer 1.
Generar con el timer el parpadeo en un led, cada segundo, imitando el pulso de un reloj digital : .
Cuestionario.1.- Cual es la direccion de interrupcion del timer cero y el timer 1 en el vector de interrupciones.
2.- Enumere y describa los modos de trabajo del timer.
3.- Describa la funcion del registro IE y TMOD, y como se utilizan para configurar el timer.
4.- Realice un programa para simular un reloj con horas y minutos de 00:00 a 23:59, en displays de 7 segmentos, utilizando
el timer.