Vous êtes sur la page 1sur 8

MICROPROCESADOR 8051

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.

Interrupciones del Timer


En el microcontrolador la direccion de la interrupcion por el timer sera:
Interrupcin

Direccin

Reset
Interrupcin Externa 0
Timer 0
Interrupcin Externa 1
Timer 1
Puerto Serial Tx y Rx

0000
0003
000B
0013
001B
0023

Timer 2 (Solo At89c52 y superiores)

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.

CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

Configuracin del Timer


El Timer 0 y el Timer 1 son contadores de 16 bits, el valor de estos contadores se refleja en los registros TH0 y TL0, para
el Timer 0, y en los registros TH1 y TL1, para el Timer 1. El registro THx constituye el byte alto del contador y el registro
TLx el byte bajo.
El Timer 0 y el Timer 1 pueden funcionar con cuatro modos de trabajo distintos, seleccionables mediante el registro
TMOD, (Timer Mode). Los modos de trabajo son:
Modo 0, temporizador/contador de 13 bits
Modo 1, temporizador/contador de 16 bits
Modo 2, temporizador/contador de 8 bits con autorrecarga
Modo 3, varios contadores.
En la siguiente figura se muestra el esquema funcional del Timer 0 y del Timer 1, para los modos 0 y 1 de funcionamiento,
con temporizador de 13 y 16 bits, respectivamente. En esta figura se resaltan, con un cuadro de puntos, dos bloques: el
bloque de seleccin de temporizador/contador y el bloque de la lgica de control. Estos bloques son comunes al Timer 0
y al Timer 1 y a los modos de funcionamiento 0, 1 y 2 de los Timers.

CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

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:

CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

Generacin de una seal peridica


Es habitual en un sistema tener que generar seales peridicas: en el caso de la MCS-51 se pueden llevar a cabo
empleando uno o varios de sus temporizadores. En este ejemplo se usa el Timer 0 en el modo 2 de 8 bits con autorrecarga,
para generar una seal binaria de 5kHz de frecuencia. Para determinar el perodo de la seal se emplear el registro TH0
del Timer 0. La seal generada se extraer a travs de la patilla P1.0 del microcontrolador.

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.

CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

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

CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

HARDWARE:

SOFTWARE:
ORG 0000H
AJMP
Principal
;---- Interrupcion Externa 0
ORG 0003H
RETI
;---- Timer 0
ORG 000BH
call
int_timer0
reti

CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

;---- Interrupcion Externa 1


ORG 0013H
reti
;---- Timer 1
ORG 001BH
reti
;---- Puerto Serial Tx y Rx
ORG 0023H
reti
;---- Timer 2
ORG 002BH
reti
ORG 0050h
int_timer0:
CPL P2.0
;Complementa P1.0. Pasa de 1 a 0, y de 0 a 1
RET
;Fin de rutina. El bit TF0 se borra automticamente
;------Programa principal
Principal:
setb ET0
;habilitar interrupcion del timer 0
setb EA
;habilitar la interrupcion general
mov
TMOD,#02H
;M1=1 y M0=0 (Modo 2), GATE=0 y C/T=0 del Timer 0
MOV
TL0, #156
;Pone valor 156 en TL0 (256-100)
MOV
TH0, #156
;Pone valor de recarga en TH0 (256-100)
SETB TR0
;Pone marcha el contador
;***************************************************************
; Rutina de Principal
;***************************************************************
bucle:
SJMP bucle
;Bucle infinito sin una tarea concreta
end

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 : .

CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

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.

Puede descargar los dems laboratorios y guas de la siguiente pagina web


https://sites.google.com/site/cursodemicrocontroladores8051/

CURSO DE MICROCONTROLADORES 8051 | Raul Alejandro Quispe Larico

Vous aimerez peut-être aussi