SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Los Temporizadores/Contadores
Los Temporizadores/Contadores
Los Temporizadores/Contadores
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Los
Los Timers
Timers/Contadores
/Contadores
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
9
9El 80C51 tiene dos registros de
El 80C51 tiene dos registros de Timers
Timers/
/Contadore
Contadore de 16 bits :
de 16 bits :
El Timer0 y el Timer 1.
El Timer0 y el Timer 1.
9
9Se pueden configurar para operar ya sea como
Se pueden configurar para operar ya sea como Timers
Timers o como contadores de
o como contadores de
eventos.
eventos.
TIMER PUEDE CONTAR EVENTOS O TEMPORIZAR
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Modelo de la operaci
Modelo de la operació
ón de los
n de los Timers
Timers 0 y 1 del 80C51
0 y 1 del 80C51
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Oscilador
interno
Oscilador
interno
fxtal
: 12
: 12
CONTADOR
CONTADOR
fxtal / 12
fosc= fxtal
Conteo inicial
Conteo inicial
TF0
TF0
C/T=1
contador
C/T=0
timer
C / T
C / T
TRx
TRx
GATE
GATE
CLK OVF
Genera
Interrupción
Genera
Interrupción
Xtal1
Xtal1
Xtal2
Xtal2
Tx
Tx
INTx
INTx
Configuraci
Configuració
ón de Timer
n de Timer
Oscilador
interno
Oscilador
interno
fxtal = 12 MHz
: 12
: 12
Contador
programable
Contador
programable
fxtal / 12= 1 MHhz
fosc= fxtal = 12 MHz
Conteo inicial
Conteo inicial
1µseg
TF0
TF0
Microcontroladores
M.I. Carlos Canto Quintal
Facultad de Ciencias/UASLP
EL TIMER
Funcionando como Timer, el registro es incrementado cada ciclo d
Funcionando como Timer, el registro es incrementado cada ciclo de
e
m
má
áquina, por lo tanto se puede pensar que opera como un contador
quina, por lo tanto se puede pensar que opera como un contador de
de
ciclos de m
ciclos de má
áquina .
quina .
Ya que un ciclo de m
Ya que un ciclo de má
áquina consta de 12 periodos del oscilador, la rapidez
quina consta de 12 periodos del oscilador, la rapidez
de conteo es de 1/12 la frecuencia del oscilador.
de conteo es de 1/12 la frecuencia del oscilador.
Modelo de los Timer 0 y 1
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer 0-1, Registro de control TMOD
GATE
GATE=1, el TIMER x está habilitado solamente cuando su patilla de entrada INTx está
a ‘1’ y el bit TRx del registro TCON está a ‘1’
GATE = 0, el TIMER x está habilitado si TRx está a 1.
C/T
Permite la selección de la función TIMER:
C/T = 0, el TIMER actúa como TEMPORIZADOR
C/T = 1, el TIMER actúa como CONTADOR de los eventos presentes en la
patilla de entrada Tx.
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer 0-1,TMOD – Modos de funcionamiento
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer 0-1, Registro de control TCON
TF1: Indicador de desbordamiento del TIMER 1. Puesto a 1
automáticamente cuando el contador llega a 0. Si la interrupción
correspondiente está permitida, este indicador automáticamente se vuelve
a poner a 0 cuando se ejecuta la subrutina de interrupción Si se utiliza por
sondeo hay que borrar el flag manualmente
TR1: Bit de arranque del TIMER 1. Se debe poner a 1 por software para
permitir la cuenta en el TIMER y a 0 para detenerla
TF0: Indicador de desbordamiento del TIMER 0 . Mismo funcionamiento
que TF1
TR0: Bit de arranque del TIMER 0. Mismo funcionamiento que TR1
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer 0-1,Modo 0: Contador de 13 bits
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer 0-1,Modo 1: Contador de 16 bits
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Ejemplo del uso del Timer en modo 1
Ejemplo del uso del Timer en modo 1 :
:
Se desea conseguir un retardo de 50
Se desea conseguir un retardo de 50 msegs
msegs con un Timer del
con un Timer del
80C51
80C51
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Tmax=65,536
65,536-50,000=15,536
65,536-50,000=15,536
Tx=15,536 T=50,000
Reset
Para generar un retardo de 50
msegs con un cristal de 12 Mhz
se requiere contar 50,000
pulsos de reloj (ciclos de
máquina)
Para generar un retardo de 50
msegs con un cristal de 12 Mhz
se requiere contar 50,000
pulsos de reloj (ciclos de
máquina)
Inicio de conteo
Inicio de conteo
Cada ciclo de máquina es igual a 1µsegundo tal que:
50 msegs=1µsegundo X 50,000
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
0
0 0
0 1
1 1
1 1
1 1
1 0
0 0
0 1
1 0
0 1
1 1
1 0
0 0
0 0
0 0
0
Timer T0=15,536
TH0=60 TH0=176
15, 536/256=60.6875
60*256=15360
15536-15360=176
15, 536/256=60.6875
60*256=15360
15536-15360=176
Obtenci
Obtenció
ón del Valor Inicial del timer para conseguir el
n del Valor Inicial del timer para conseguir el
conteo de 50,000 pulsos (ciclos de m
conteo de 50,000 pulsos (ciclos de má
áquina)
quina)
Timer 0-1,Modo 2: Contador de 8 bits con
recarga
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
FUNCIONALIDAD MODO 2
Generar interrupciones periódicas de periodo:
– Frecuencia Máxima. Cargando en THx=0xFF
– Frecuencia Mínima. Cargando en THx=0x00
Generar la frecuencia de reloj para las comunicaciones serie asíncronas
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer 1, Generador de frecuencia de comunicaci
Timer 1, Generador de frecuencia de comunicació
ón
n
serie
serie
Configuración TMOD
Frecuencias comunicación normalizadas
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer 0 y 1. Modo 3
Timer 0 y 1. Modo 3
Si se configura el timer 1 en modo 3 este contador detiene su cuenta; tiene
un efecto equivalente a poner TR1= 0 en los modos 0, 1 o
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
FUNCIONAMIENTO DEL MODO 3
FUNCIONAMIENTO DEL MODO 3
FUNCIONAMIENTO DEL MODO 3
Al configurar el timer 0 en modo 3, se convierte en dos timers:
– TL0: temporizador o contador de eventos de 8 bits, se pone en
funcionamiento con TR0. Cuando se produce el desbordamiento activa TF0
– TH0: temporizador de 8 bits, se pone en funcionamiento con TR1. Cuando
se produce el desbordamiento se activa TF1. Estos bits (TR1 y TF1) dejan de
estar asociados al Timer 1
Cuando el timer 0 funciona en modo 3, el Timer 1 puede configurarse
como temporizador o contador en uno de los modos: 0, 1 o 2, estando
siempre funcionando y sin indicador de desbordamiento; para pararlo
hay que configurarlo también en modo 3. El timer 1 se puede emplear,
por ejemplo, para generar la frecuencia de funcionamiento del
dispositivo de comunicaciones serie (UART)
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
+5 V
8031
8031
P1.0
P1.0
(1/8) 74LS244
1ms
1ms
fxtal = 12 MHz
2ms
Frecuencia = 500Hz
Microcontroladores
M.I. Carlos Canto Quintal
Facultad de Ciencias/UASLP
EL TIMER
Ejemplo: programa el timer0 para que genere
una onda cuadrada de aproximadamente
500hz
Microcontroladores
M.I. Carlos Canto Quintal
Facultad de Ciencias/UASLP
EL TIMER
Carga de
Conteo
inicial
Carga de
Conteo
inicial
Alcanzó
Conteo
final
Alcanzó
Conteo
final
FC18H
FFFFh
0000h
SI TF0=1
llama a RSI
1000 pulsos contados
Se desea que cuando el
contador rebase su
conteo final FFFFh, no
regrese a ceros sino que
se recargue con el valor
de conteo inicial FC18h
Para timer
TR0=0
Para timer
TR0=0 Arranca timer
TR0=1
Arranca timer
TR0=1
CONTEO INICIAL=FFFFH-CONTEO DESEADO+1
CONTEO DESEADO=1000=03E8H
POR LO TANTO EL CONTEO INICIAL
SERÁ:
FFFFH-03E8H=FC17H+1=FC18H
TF0=0
Conteo inicial
Diagrama de flujo para el programa del ejemplo del Timer
Apagar LED en P1.0
Apagar LED en P1.0
Habilita interrupción
de Timer0
Habilita interrupción
de Timer0
Selección Modo
De operación del Timer0
Selección Modo
De operación del Timer0
Cargar conteo inicial
en TH0 y TL0
Cargar conteo inicial
en TH0 y TL0
Arranca Timer0
Arranca Timer0
Espera fin de conteo
Espera fin de conteo
Es TF0=1
?
Es TF0=1
?
Call Rutina de servicio
del Timer 0
Call Rutina de servicio
del Timer 0
No
El Micro realiza
esta parte
automáticamente
El Micro realiza
esta parte
automáticamente
Rutina de servicio
del Timer0
Rutina de servicio
del Timer0
Parar conteo
Parar conteo
Complementa P1.0
Complementa P1.0
Cargar conteo inicial
en TH0 y TL0
Cargar conteo inicial
en TH0 y TL0
Arranca Timer0
Arranca Timer0
Retorna
Retorna
Microcontroladores
M.I. Carlos Canto Quintal
Facultad de Ciencias/UASLP
EL TIMER
TF0 se hace 0
automáticamente
TF0 se hace 0
automáticamente
Configuraci
Configuració
ón como Contador de eventos
n como Contador de eventos
externos
externos
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
CONTADOR
CONTADOR
Conteo inicial
Conteo inicial
TF0
TF0
contador
C / T=1
C / T=1
TRx
TRx
GATE
GATE
CLK OVF
Genera
Interrupción
Genera
Interrupción
Tx
Tx
INTx
INTx
La señal de
reloj
proviene de
algún sensor
del evento
La señal de
reloj
proviene de
algún sensor
del evento
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
En esta función , la entrada externa T0 ó T1, es monitoreada durante S5P2 de cada ciclo de
máquina. Cuando la muestra presenta un alto en un ciclo y bajo en el siguiente el conteo es
incrementado. El valor de la nueva cuenta aparece en el registro durante S3P1 del ciclo
siguiente en donde fue detectada la transición.
Ya que se requieren 2 ciclos de máquina (24 periodos del oscilador) para detectar una
transición de 1 a 0 , la velocidad máxima de conteo es de 1/24 la frecuencia del oscilador . No
hay restricciones en el ciclo de trabajo de la señal de entrada externa , pero se debe asegurar
que un nivel dado se debe muestrear al menos una vez en antes de que cambie , deberá
sostenerse por al menos un ciclo completo
Configuraci
Configuració
ón como Contador de eventos externos
n como Contador de eventos externos
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6
CLK
2 ciclos de máquina= 24 ciclos de reloj
T0
¿
¿ Qu
Qué
é es exactamente un evento ?
es exactamente un evento ?
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Es importante notar que el 80C51 checa la línea P3.4 en cada ciclo
de máquina (12 ciclos de reloj). Esto significa que si P3.4 es bajo, va
a alto y regresa a bajo en 6 ciclos de reloj es probable que no sea
detectado por el 80C51.
Esto también significa que el Contador de eventos del 80C51
solamente es capaz de contar eventos que ocurren a una velocidad
máxima de 1/24 avo la velocidad de la frecuencia del cristal.
Tal que , si la frecuencia del cristal es 12 Mhz se podría contar un
máximo de 500,000 eventos por segundo (12Mhz*1/24=500,000).
Si el evento a contar ocurre a más de 500,000 veces por segundo el
80C51 no será capaz de contarlo con exactitud.
Ejemplo
Ejemplo: Determinaci
: Determinació
ón de
n de vol
volú
úmen
men de
de t
tá
áfico
fico vehicular
vehicular
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
JNB P1.0,$
;si un carro no ha levantado la señal, se
queda esperando
JB P1.0,$
;La línea es alta lo cual significa que el carro
está sobre el sensor justo ahora
INC COUNTER
;El carro ha pasado completamente, entoces
lo contamos
Supongamos que tenemos un sensor colocado en el camino, que enviará un
pulso cada vez que un carro pasa por encima de él. Ésto podría ser usado para
determinar el voúmen de tráfico del camino. Podríamos conectar este sensor a
una de las líneas de E/S del 80C51 y monitorearla constantemente, detectando
cuando el pulso es alto y entonces incrementar nuestro contador cuando regresa
al estado bajo. Esta técnica de sondeo no es complicada pero si ineficiente,
supongamos que el sensor está en P1.0 nuestro programa podría ser:
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Lo que el Timer realmente cuenta, hablando a nivel
eléctrico, son las transiciones de 1 a 0 de la línea P3.4.
Esto significa que cuando un carro primero pasa por
encima del sensor, ésto pondrá la entrada a una
condición alta (“1”).
En este momento el 80C51 no contará nada ya que la
transición fue de 0 a 1, pero cuando el carro ya haya
pasado el sensor regresará a su estado bajo (“0“) .
Ésta ya es una transición de 1 a 0 y en ese instante el
contador será incrementado en 1.
PROBLEMA DE TAREA:
PROBLEMA DE TAREA:
Implemente un programa para contar el n
Implemente un programa para contar el nú
úmero de autos que
mero de autos que
pasan en un minuto por encima de un sensor de volumen de
pasan en un minuto por encima de un sensor de volumen de
tr
trá
ánsito
nsito
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Ejemplo:
Ejemplo: Medici
Medició
ón de la duraci
n de la duració
ón de un Pulso
n de un Pulso
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Con un sistema basado en el 80C51, se desea medir la duraci
Con un sistema basado en el 80C51, se desea medir la duració
ón de un
n de un
pulso a nivel alto que se produce en la se
pulso a nivel alto que se produce en la señ
ñal
al “
“pulso
pulso”
” tal y como se
tal y como se
muestra en la figura. Supondremos que el microcontrolador tiene
muestra en la figura. Supondremos que el microcontrolador tiene una
una
se
señ
ñal de reloj de 12MHz. Indique qu
al de reloj de 12MHz. Indique qué
é recursos del 80C51 utilizar
recursos del 80C51 utilizarí
ía para
a para
realizar esta aplicaci
realizar esta aplicació
ón y c
n y có
ómo conectar
mo conectarí
ía las se
a las señ
ñales del sistema.
ales del sistema.
Tiempo a medir
Pulso
Ejemplo:
Ejemplo: Medici
Medició
ón de la duraci
n de la duració
ón de un Pulso
n de un Pulso
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Tiempo a medir
Pulso
Oscilador
interno
Oscilador
interno
Fxtal=12Mhz
: 12
: 12
CONTADOR
CONTADOR
fxtal / 12
fosc= fxtal
Conteo inicial
Conteo inicial
TF0
TF0
C/T=0
timer
C / T=0
C / T=0
TRx=1
TRx=1
GATE=1
GATE=1
CLK OVF
Genera
Interrupción
Genera
Interrupción
Xtal1
Xtal1
Xtal2
Xtal2
INTx
INTx
Configuarci
Configuarció
ón
n del Timer para arrancarse por hardware ,al inicio del pulso y p
del Timer para arrancarse por hardware ,al inicio del pulso y pararse al final del mismo
ararse al final del mismo
Controlling the Brightness of an LED
Pulse Width Modulation
TIMER_0_INTERRUPT:
• JB F0, HIGH_DONE ; If F0 is set then we just finished the high section of the
LOW_DONE: ; cycle so Jump to HIGH_DONE
• SETB F0 ; Make F0=1 to indicate start of high section
• SETB P1.0 ; Turn off LED
• MOV TH0, R7 ; Load high byte of timer with R7 (our pulse width control value)
• CLR TF0 ; Clear the Timer 0 interrupt flag
• RETI ; Return from Interrupt to where the program came from
HIGH_DONE:
• CLR F0 ; Make F0=0 to indicate start of low section
• CLR P1.0 ; Turn on LED
• MOV A, #FFH ; Move FFH (255) to A
• CLR C ; Clear C (the carry bit) so it does not affect the subtraction
• SUBB A, R7 ; Subtract R7 from A. A = 255 - R7.
• MOV TH0, A ; so the value loaded into TH0 + R7 = 255
• CLR TF0 ; Clear the Timer 0 interrupt flag
• RETI ; Return from Interrupt to where the program came from
• The basic idea of the routine is fairly simple. First it checks to see if it just finished thigh or tlow.
• If it was thigh then it jumps to HIGH_DONE and prepares for the tlow period. We set F0 to 0 to indicate we are
timing tlow. Then we turn on the LED. Next we find the value to load into the 8 bit timer register TH0. Timer 0 will
count up from there. If it was tlow then we continue through LOW_DONE and set F0 to 1 to indicate we are timing
thigh. Then we turn off the LED. Next we load R7 into the 8 bit timer register TH0 and Timer 0 will count up from
there.
• Main Code
• The main part of the code does not have to do anything. In this
example we just move 01 to R7 for the minimum brightness and
then make an infinite loop with
• MOV R7, #001H ; set pulse width control to dim
LOOP:
• AJMP LOOP ;go to LOOP
• The processor just sits there in an endless loop until the Timer 0
interrupt occurs. Then it goes off and goes through the Timer 0
interrupt routine and returns to the endless loop to wait for the next
interrupt. If we had some other processing to do we could put that
code in here in place of the endless loop and the processor could
actually do something useful while it is waiting for the next interrupt.
• Using the Timer
• Now we can load a value into the 8 bit timer register, TH0, and it will run
freely until it "overflows". The overflow occurs when it is at its maximum
value of 255 and on the next count goes back to 0. This is the same as what
would happen to the mileage meter in your car when it reaches all 9s and
"flips over" to all 0s. The overflow triggers the Timer 0 interrupt and the
processor stops whatever it is doing and goes to the point 0BH in its
program. (0BH is the hex value 0B which is the 11th memory location) You
can see in the program pwmled2.asm that we have used the ORG
command to put a command in the 0BH location that jumps to our Interrupt
Service Routine (ISR) for Timer 0. This just means that when the interrupt
occurs the processor will go and process some code and then return to
what is was doing before.
• Below is the code that the processor goes through each time the Timer 0
interrupt occurs. Since we are using Timer 0 to time both tlow and thigh, we
use a Flag (which is just a bit) to indicate whether we are currently timing
tlow or thigh. We set the bit to 1 for thigh and 0 for tlow.
El Timer 2
El Timer 2
El Timer 2
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Timer/Contadores
Timer/Contadores
Timer/Contadores
MICROCONTROLADORES
MICROCONTROLADORES
Carlos E. Canto Quintal
Microcontroladores
Microcontroladores
TIMER 2
Carlos Canto Quintal
T2EX
T2EX
T2
T2
osc
osc
TL2
(8bits)
TL2
(8bits)
TH2
(8bits)
TH2
(8bits) TF2
TF2
EXF2
EXF2
RCAP2L
RCAP2L RCAP2H
RCAP2H
: 12
: 12
_
TR2
C/T2=0
C/T2=1
control
captura
control
Interrupción
del Timer2
Interrupción
del Timer2
TIMER 2 EN MODO CAPTURA
Detector de
transición
EXEN2
Microcontroladores
Microcontroladores
TIMER 2
Carlos Canto Quintal
T2EX
T2EX
T2
T2
osc
osc
TF2
TF2
EXF2
EXF2
: 12
: 12
_
TR2
C/T2=0
C/T2=1
control
Recarga
control
Interrupción
del Timer2
Interrupción
del Timer2
TIMER 2 EN MODO AUTO-RECARGA (cuando DCEN=0)
Con la habilidad de conteo Up/Down desactivada
TL2
(8bits)
TL2
(8bits)
TH2
(8bits)
TH2
(8bits)
RCAP2L
RCAP2L RCAP2H
RCAP2H
Detector de
transición
EXEN2
T2EX
T2EX
Microcontroladores
Microcontroladores
TIMER 2
Carlos Canto Quintal
T2
T2
osc
osc
TF2
TF2
EXF2
EXF2
: 12
: 12
_
TR2
C/T2=0
C/T2=1
Valor de recarga en
conteo ascendente
Valor de recarga en
conteo ascendente
control
Interrupción
del Timer2
Interrupción
del Timer2
TIMER 2 EN MODO AUTO-RECARGA (cuando DCEN=1)
Con la habilidad de conteo Up/Down activada
RCAP2L
RCAP2L RCAP2H
RCAP2H
TL2
(8bits)
TL2
(8bits)
TH2
(8bits)
TH2
(8bits)
0FFh
0FFh 0FFh
0FFh
Dirección de conteo
1= Up
0=Down
Valor de recarga en
conteo descendente
Valor de recarga en
conteo descendente
conmuta
Microcontroladores
Microcontroladores
TIMER 2
Carlos Canto Quintal
TIMER 2 EN MODO GENERADOR DE BAUDAJE
T2EX
T2EX
T2
T2
osc
osc : 2
: 2
_
TR2
C/T2=0
C/T2=1
control
control
TL2
(8bits)
TL2
(8bits)
TH2
(8bits)
TH2
(8bits)
RCAP2L
RCAP2L RCAP2H
RCAP2H
Detector de
transición
EXF2
EXF2
Interrupción
del
Timer 2
: 16
: 16
: 16
: 16
_
_
RX Clock
TX Clock
TCLK
RCLK
SMOD
1 0
1 0
1 0
Sobre flujo delTimer 1
: 2
: 2
_
EXEN2
Nota: la frecuencia del
oscilador es dividida entre 2
no entre12
Microcontroladores
Microcontroladores
TIMER 2
Carlos Canto Quintal
TIMER 2 EN MODO RELOJ DE SALIDA
T2EX
T2EX
T2
T2
osc
osc : 2
: 2
_
TR2
T2OE (T2MOD.1)
Bit C/T2
TL2
(8bits)
TL2
(8bits)
TH2
(8bits)
TH2
(8bits)
RCAP2L
RCAP2L RCAP2H
RCAP2H
Detector de
transición
EXF2
EXF2
Interrupción
del
Timer 2
EXEN2
Nota: la frecuencia del
oscilador es dividida entre 2
no entre12
P1.1
P1.0
: 2
: 2
_
Salida
de reloj
Microcontroladores
Microcontroladores
TIMER 2
Carlos Canto Quintal
T2CON: REGISTRO DE CONTROL DELTIMER/CONTADOR2
TF2
TF2 EXF2
EXF2 RCLK
RCLK TCLK
TCLK EXEN2
EXEN2 TR2
TR2 C/T2
C/T2 CP/RL2
CP/RL2
(LSB)
(MSB)
Bandera de Captura/Recarga. Cuando está en 1, ocurrirá una captura con una transición negativa en T2EX si EXEN2=1. Cuando está
en cero, ocurirá una auto recarga ya sea cuando el Timer 2 rebase o una transición negativa en T2EX y que EXEN=1. Cuando ya sea
que RCLK=1 o TCLK=1, este bit es ignorado y el timer es forzado a una auto recarga en el rebase del Timer 2.
T2CON.0
CP/RL2
Selección de Timer o contador (Timer2)
0=Timer interno (OSC/12)
1=Contador de eventos externos (disparado en la transición de bajada)
T2CON.1
C/T2
Control de Arranque /Paro del Timer2. Un 1 lógico arranca el Timer2
T2CON.2
TR2
Bandera de habilitación externa, Cuanda está habilitada permite que ocuura una captura o una recarga como resultado de una
transición negativa en T2EX si el Timer 2 no está siendo usado para temporizar el puerto serial. EXEN2=0 hace que el Timer2 ignore
los eventos en T2EX
T2CON.3
EXEN2
Bandera de reloj del transmisor. Cuando está en 1, hace que el puerto serial use los pulsos del sobre flujo del timer 2 para el reloj de su
transmisor en los Modos 1 , 3 y el timer 1 proporcionará el baudaje del receptor. TCLK=0 hará que el sobre flujo del Timer 1 sea usado
para el reloj del transmisor.
T2CON.4
TCLK
Bandera del reloj de recepción. Cuando se hace 1, hace que el puerto serie use los pulsos del sobre flujo del timer 2 para el reloj de su
receptor en los Modos 1 , 3 y el timer 1 proporcionará el baudaje del transmisor. RCLK=0 hará que el sobre flujo del Timer 1 sea usado
para el reloj del receptor
T2CON.5
RCLK
Bandera externa del Timer2, se hace 1 cuando ya sea una captura o una recarga sea producida desde el exterior, al ocurrir una
transición negativa en T2EX y además que EXEN2=1. Siempre la interrupción del timer 2 esté habilitada, EXF2=1 hará que la CPU
vectorice a la rutina de servicio del timer 2. EXF2 debe deshabilitarse por software. EXF2 no produce una interrupción en modo
contador Up//Down (DCEN=!)
T2CON.6
EXF2
Bandera de sobre flujo del Timer2 se hace 1 con el rebase del Timer y debe hacerse 0 por software.TF2 no se hace 1 cuando RCLK=1
o cuando RCLK=1
T2CON.7
TF2
NOMBRE Y SIGNIFICADO
POSICIÓN
SIMBOLO
Microcontroladores
Microcontroladores
TIMER 2
Carlos Canto Quintal
Auto-recarga (contador Ascendente o Descendente)
El timer 2 puede ser programado para conteo ascendente descendente cuando es
configurado en su modo de recarga de 16 bits. Esta habilidad es invocada con el bit
DCEN (Down Counter Enable ), localizado en el SFR T2MOD: Al resetear el DCEN
está en cero tal que el Timer 2 por default cuenta hacia arriba (Up). Cuando el DCEN
se pone a uno, elk Timer 2 puede contar hacia arriba o hacia abajo, dependiendo del
valor de

Más contenido relacionado

La actualidad más candente

embedded systems ppt 3
embedded systems ppt 3embedded systems ppt 3
embedded systems ppt 3pavan kumar
 
Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520Vũ Anh
 
Microcontroller 8051
Microcontroller 8051Microcontroller 8051
Microcontroller 8051Rashmi
 
PLC y Electroneumatica: Esquemas prácticos de automatismos eléctricos cableados
PLC y Electroneumatica: Esquemas prácticos de automatismos eléctricos cableadosPLC y Electroneumatica: Esquemas prácticos de automatismos eléctricos cableados
PLC y Electroneumatica: Esquemas prácticos de automatismos eléctricos cableadosSANTIAGO PABLO ALBERTO
 
Design of Microwave oven using 8051 micro controller
Design of Microwave oven using 8051 micro controllerDesign of Microwave oven using 8051 micro controller
Design of Microwave oven using 8051 micro controllerGautham Reddy
 
Hobetuz domotica 1 - Logo Siemens
Hobetuz   domotica 1 - Logo SiemensHobetuz   domotica 1 - Logo Siemens
Hobetuz domotica 1 - Logo Siemensxendika2
 
8051 microcontroller lecture ppt by Tarun Khaneja ( 9034406598 )
8051 microcontroller lecture ppt by Tarun Khaneja ( 9034406598 )8051 microcontroller lecture ppt by Tarun Khaneja ( 9034406598 )
8051 microcontroller lecture ppt by Tarun Khaneja ( 9034406598 )Tarun Khaneja
 
Prueba y operación básica del triac(practica)
Prueba y operación básica del triac(practica)Prueba y operación básica del triac(practica)
Prueba y operación básica del triac(practica)Miguel Angel Peña
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucionJair BG
 
24 sensores inductivos_ok
24 sensores inductivos_ok24 sensores inductivos_ok
24 sensores inductivos_okLuii Rivas
 
Microcontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMELMicrocontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMELSANTIAGO PABLO ALBERTO
 

La actualidad más candente (20)

embedded systems ppt 3
embedded systems ppt 3embedded systems ppt 3
embedded systems ppt 3
 
Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520
 
Microcontroller 8051
Microcontroller 8051Microcontroller 8051
Microcontroller 8051
 
Curso etap
Curso etapCurso etap
Curso etap
 
Medicion de potencia. med elec
Medicion de potencia. med elecMedicion de potencia. med elec
Medicion de potencia. med elec
 
PLC y Electroneumatica: Esquemas prácticos de automatismos eléctricos cableados
PLC y Electroneumatica: Esquemas prácticos de automatismos eléctricos cableadosPLC y Electroneumatica: Esquemas prácticos de automatismos eléctricos cableados
PLC y Electroneumatica: Esquemas prácticos de automatismos eléctricos cableados
 
Design of Microwave oven using 8051 micro controller
Design of Microwave oven using 8051 micro controllerDesign of Microwave oven using 8051 micro controller
Design of Microwave oven using 8051 micro controller
 
Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887
 
Hobetuz domotica 1 - Logo Siemens
Hobetuz   domotica 1 - Logo SiemensHobetuz   domotica 1 - Logo Siemens
Hobetuz domotica 1 - Logo Siemens
 
8051 microcontroller lecture ppt by Tarun Khaneja ( 9034406598 )
8051 microcontroller lecture ppt by Tarun Khaneja ( 9034406598 )8051 microcontroller lecture ppt by Tarun Khaneja ( 9034406598 )
8051 microcontroller lecture ppt by Tarun Khaneja ( 9034406598 )
 
Prueba y operación básica del triac(practica)
Prueba y operación básica del triac(practica)Prueba y operación básica del triac(practica)
Prueba y operación básica del triac(practica)
 
Sensores de Presión
Sensores de PresiónSensores de Presión
Sensores de Presión
 
RELE DE ESTADO SOLIDO
RELE DE ESTADO SOLIDORELE DE ESTADO SOLIDO
RELE DE ESTADO SOLIDO
 
Avr microcontroller
Avr microcontrollerAvr microcontroller
Avr microcontroller
 
Avr introduction
Avr introductionAvr introduction
Avr introduction
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucion
 
24 sensores inductivos_ok
24 sensores inductivos_ok24 sensores inductivos_ok
24 sensores inductivos_ok
 
Timer 0 - Pic16F877A
Timer 0 - Pic16F877ATimer 0 - Pic16F877A
Timer 0 - Pic16F877A
 
Microcontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMELMicrocontroladores: Entendiendo los AVR de ATMEL
Microcontroladores: Entendiendo los AVR de ATMEL
 
Entradas de plc
Entradas de plcEntradas de plc
Entradas de plc
 

Similar a TEMPORIZADORES Y CONTADORES.PDF (20)

UNIDAD IV
UNIDAD IVUNIDAD IV
UNIDAD IV
 
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHOPRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
 
Timers
TimersTimers
Timers
 
Timers
TimersTimers
Timers
 
Clase Timer 1
Clase Timer 1Clase Timer 1
Clase Timer 1
 
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05
 
Curso Micro Tema 4
Curso Micro Tema 4Curso Micro Tema 4
Curso Micro Tema 4
 
Temporizador timer0
Temporizador timer0Temporizador timer0
Temporizador timer0
 
Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0 Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0
 
Lab# 2 - Temporizador.pdf
Lab# 2 - Temporizador.pdfLab# 2 - Temporizador.pdf
Lab# 2 - Temporizador.pdf
 
Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887Modulo Timer 0 del PIC16F887
Modulo Timer 0 del PIC16F887
 
Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)
 
Funcionamiento del Timer 0
Funcionamiento del Timer 0Funcionamiento del Timer 0
Funcionamiento del Timer 0
 
Ccp2009170309
Ccp2009170309Ccp2009170309
Ccp2009170309
 
Timer0
Timer0Timer0
Timer0
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
 
18 Timers
18 Timers18 Timers
18 Timers
 
Clase - Temporizadores
Clase - TemporizadoresClase - Temporizadores
Clase - Temporizadores
 
Introduccionpwm
IntroduccionpwmIntroduccionpwm
Introduccionpwm
 
Interrupciones y Temporizadores
Interrupciones y TemporizadoresInterrupciones y Temporizadores
Interrupciones y Temporizadores
 

TEMPORIZADORES Y CONTADORES.PDF

  • 1. Los Temporizadores/Contadores Los Temporizadores/Contadores Los Temporizadores/Contadores Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Los Los Timers Timers/Contadores /Contadores Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal 9 9El 80C51 tiene dos registros de El 80C51 tiene dos registros de Timers Timers/ /Contadore Contadore de 16 bits : de 16 bits : El Timer0 y el Timer 1. El Timer0 y el Timer 1. 9 9Se pueden configurar para operar ya sea como Se pueden configurar para operar ya sea como Timers Timers o como contadores de o como contadores de eventos. eventos. TIMER PUEDE CONTAR EVENTOS O TEMPORIZAR
  • 2. Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Modelo de la operaci Modelo de la operació ón de los n de los Timers Timers 0 y 1 del 80C51 0 y 1 del 80C51 Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Oscilador interno Oscilador interno fxtal : 12 : 12 CONTADOR CONTADOR fxtal / 12 fosc= fxtal Conteo inicial Conteo inicial TF0 TF0 C/T=1 contador C/T=0 timer C / T C / T TRx TRx GATE GATE CLK OVF Genera Interrupción Genera Interrupción Xtal1 Xtal1 Xtal2 Xtal2 Tx Tx INTx INTx
  • 3. Configuraci Configuració ón de Timer n de Timer Oscilador interno Oscilador interno fxtal = 12 MHz : 12 : 12 Contador programable Contador programable fxtal / 12= 1 MHhz fosc= fxtal = 12 MHz Conteo inicial Conteo inicial 1µseg TF0 TF0 Microcontroladores M.I. Carlos Canto Quintal Facultad de Ciencias/UASLP EL TIMER Funcionando como Timer, el registro es incrementado cada ciclo d Funcionando como Timer, el registro es incrementado cada ciclo de e m má áquina, por lo tanto se puede pensar que opera como un contador quina, por lo tanto se puede pensar que opera como un contador de de ciclos de m ciclos de má áquina . quina . Ya que un ciclo de m Ya que un ciclo de má áquina consta de 12 periodos del oscilador, la rapidez quina consta de 12 periodos del oscilador, la rapidez de conteo es de 1/12 la frecuencia del oscilador. de conteo es de 1/12 la frecuencia del oscilador. Modelo de los Timer 0 y 1 Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal
  • 4. Timer 0-1, Registro de control TMOD GATE GATE=1, el TIMER x está habilitado solamente cuando su patilla de entrada INTx está a ‘1’ y el bit TRx del registro TCON está a ‘1’ GATE = 0, el TIMER x está habilitado si TRx está a 1. C/T Permite la selección de la función TIMER: C/T = 0, el TIMER actúa como TEMPORIZADOR C/T = 1, el TIMER actúa como CONTADOR de los eventos presentes en la patilla de entrada Tx. Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Timer 0-1,TMOD – Modos de funcionamiento Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal
  • 5. Timer 0-1, Registro de control TCON TF1: Indicador de desbordamiento del TIMER 1. Puesto a 1 automáticamente cuando el contador llega a 0. Si la interrupción correspondiente está permitida, este indicador automáticamente se vuelve a poner a 0 cuando se ejecuta la subrutina de interrupción Si se utiliza por sondeo hay que borrar el flag manualmente TR1: Bit de arranque del TIMER 1. Se debe poner a 1 por software para permitir la cuenta en el TIMER y a 0 para detenerla TF0: Indicador de desbordamiento del TIMER 0 . Mismo funcionamiento que TF1 TR0: Bit de arranque del TIMER 0. Mismo funcionamiento que TR1 Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal
  • 6. Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Timer 0-1,Modo 0: Contador de 13 bits Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal
  • 7. Timer 0-1,Modo 1: Contador de 16 bits Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Ejemplo del uso del Timer en modo 1 Ejemplo del uso del Timer en modo 1 : : Se desea conseguir un retardo de 50 Se desea conseguir un retardo de 50 msegs msegs con un Timer del con un Timer del 80C51 80C51 Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Tmax=65,536 65,536-50,000=15,536 65,536-50,000=15,536 Tx=15,536 T=50,000 Reset Para generar un retardo de 50 msegs con un cristal de 12 Mhz se requiere contar 50,000 pulsos de reloj (ciclos de máquina) Para generar un retardo de 50 msegs con un cristal de 12 Mhz se requiere contar 50,000 pulsos de reloj (ciclos de máquina) Inicio de conteo Inicio de conteo Cada ciclo de máquina es igual a 1µsegundo tal que: 50 msegs=1µsegundo X 50,000
  • 8. Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 Timer T0=15,536 TH0=60 TH0=176 15, 536/256=60.6875 60*256=15360 15536-15360=176 15, 536/256=60.6875 60*256=15360 15536-15360=176 Obtenci Obtenció ón del Valor Inicial del timer para conseguir el n del Valor Inicial del timer para conseguir el conteo de 50,000 pulsos (ciclos de m conteo de 50,000 pulsos (ciclos de má áquina) quina) Timer 0-1,Modo 2: Contador de 8 bits con recarga Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal
  • 9. FUNCIONALIDAD MODO 2 Generar interrupciones periódicas de periodo: – Frecuencia Máxima. Cargando en THx=0xFF – Frecuencia Mínima. Cargando en THx=0x00 Generar la frecuencia de reloj para las comunicaciones serie asíncronas Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Timer 1, Generador de frecuencia de comunicaci Timer 1, Generador de frecuencia de comunicació ón n serie serie Configuración TMOD Frecuencias comunicación normalizadas Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal
  • 10. Timer 0 y 1. Modo 3 Timer 0 y 1. Modo 3 Si se configura el timer 1 en modo 3 este contador detiene su cuenta; tiene un efecto equivalente a poner TR1= 0 en los modos 0, 1 o Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal FUNCIONAMIENTO DEL MODO 3 FUNCIONAMIENTO DEL MODO 3 FUNCIONAMIENTO DEL MODO 3 Al configurar el timer 0 en modo 3, se convierte en dos timers: – TL0: temporizador o contador de eventos de 8 bits, se pone en funcionamiento con TR0. Cuando se produce el desbordamiento activa TF0 – TH0: temporizador de 8 bits, se pone en funcionamiento con TR1. Cuando se produce el desbordamiento se activa TF1. Estos bits (TR1 y TF1) dejan de estar asociados al Timer 1 Cuando el timer 0 funciona en modo 3, el Timer 1 puede configurarse como temporizador o contador en uno de los modos: 0, 1 o 2, estando siempre funcionando y sin indicador de desbordamiento; para pararlo hay que configurarlo también en modo 3. El timer 1 se puede emplear, por ejemplo, para generar la frecuencia de funcionamiento del dispositivo de comunicaciones serie (UART) Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal
  • 11. +5 V 8031 8031 P1.0 P1.0 (1/8) 74LS244 1ms 1ms fxtal = 12 MHz 2ms Frecuencia = 500Hz Microcontroladores M.I. Carlos Canto Quintal Facultad de Ciencias/UASLP EL TIMER Ejemplo: programa el timer0 para que genere una onda cuadrada de aproximadamente 500hz Microcontroladores M.I. Carlos Canto Quintal Facultad de Ciencias/UASLP EL TIMER Carga de Conteo inicial Carga de Conteo inicial Alcanzó Conteo final Alcanzó Conteo final FC18H FFFFh 0000h SI TF0=1 llama a RSI 1000 pulsos contados Se desea que cuando el contador rebase su conteo final FFFFh, no regrese a ceros sino que se recargue con el valor de conteo inicial FC18h Para timer TR0=0 Para timer TR0=0 Arranca timer TR0=1 Arranca timer TR0=1 CONTEO INICIAL=FFFFH-CONTEO DESEADO+1 CONTEO DESEADO=1000=03E8H POR LO TANTO EL CONTEO INICIAL SERÁ: FFFFH-03E8H=FC17H+1=FC18H TF0=0 Conteo inicial
  • 12. Diagrama de flujo para el programa del ejemplo del Timer Apagar LED en P1.0 Apagar LED en P1.0 Habilita interrupción de Timer0 Habilita interrupción de Timer0 Selección Modo De operación del Timer0 Selección Modo De operación del Timer0 Cargar conteo inicial en TH0 y TL0 Cargar conteo inicial en TH0 y TL0 Arranca Timer0 Arranca Timer0 Espera fin de conteo Espera fin de conteo Es TF0=1 ? Es TF0=1 ? Call Rutina de servicio del Timer 0 Call Rutina de servicio del Timer 0 No El Micro realiza esta parte automáticamente El Micro realiza esta parte automáticamente Rutina de servicio del Timer0 Rutina de servicio del Timer0 Parar conteo Parar conteo Complementa P1.0 Complementa P1.0 Cargar conteo inicial en TH0 y TL0 Cargar conteo inicial en TH0 y TL0 Arranca Timer0 Arranca Timer0 Retorna Retorna Microcontroladores M.I. Carlos Canto Quintal Facultad de Ciencias/UASLP EL TIMER TF0 se hace 0 automáticamente TF0 se hace 0 automáticamente Configuraci Configuració ón como Contador de eventos n como Contador de eventos externos externos Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal CONTADOR CONTADOR Conteo inicial Conteo inicial TF0 TF0 contador C / T=1 C / T=1 TRx TRx GATE GATE CLK OVF Genera Interrupción Genera Interrupción Tx Tx INTx INTx La señal de reloj proviene de algún sensor del evento La señal de reloj proviene de algún sensor del evento
  • 13. Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal En esta función , la entrada externa T0 ó T1, es monitoreada durante S5P2 de cada ciclo de máquina. Cuando la muestra presenta un alto en un ciclo y bajo en el siguiente el conteo es incrementado. El valor de la nueva cuenta aparece en el registro durante S3P1 del ciclo siguiente en donde fue detectada la transición. Ya que se requieren 2 ciclos de máquina (24 periodos del oscilador) para detectar una transición de 1 a 0 , la velocidad máxima de conteo es de 1/24 la frecuencia del oscilador . No hay restricciones en el ciclo de trabajo de la señal de entrada externa , pero se debe asegurar que un nivel dado se debe muestrear al menos una vez en antes de que cambie , deberá sostenerse por al menos un ciclo completo Configuraci Configuració ón como Contador de eventos externos n como Contador de eventos externos S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 CLK 2 ciclos de máquina= 24 ciclos de reloj T0 ¿ ¿ Qu Qué é es exactamente un evento ? es exactamente un evento ? Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Es importante notar que el 80C51 checa la línea P3.4 en cada ciclo de máquina (12 ciclos de reloj). Esto significa que si P3.4 es bajo, va a alto y regresa a bajo en 6 ciclos de reloj es probable que no sea detectado por el 80C51. Esto también significa que el Contador de eventos del 80C51 solamente es capaz de contar eventos que ocurren a una velocidad máxima de 1/24 avo la velocidad de la frecuencia del cristal. Tal que , si la frecuencia del cristal es 12 Mhz se podría contar un máximo de 500,000 eventos por segundo (12Mhz*1/24=500,000). Si el evento a contar ocurre a más de 500,000 veces por segundo el 80C51 no será capaz de contarlo con exactitud.
  • 14. Ejemplo Ejemplo: Determinaci : Determinació ón de n de vol volú úmen men de de t tá áfico fico vehicular vehicular Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal JNB P1.0,$ ;si un carro no ha levantado la señal, se queda esperando JB P1.0,$ ;La línea es alta lo cual significa que el carro está sobre el sensor justo ahora INC COUNTER ;El carro ha pasado completamente, entoces lo contamos Supongamos que tenemos un sensor colocado en el camino, que enviará un pulso cada vez que un carro pasa por encima de él. Ésto podría ser usado para determinar el voúmen de tráfico del camino. Podríamos conectar este sensor a una de las líneas de E/S del 80C51 y monitorearla constantemente, detectando cuando el pulso es alto y entonces incrementar nuestro contador cuando regresa al estado bajo. Esta técnica de sondeo no es complicada pero si ineficiente, supongamos que el sensor está en P1.0 nuestro programa podría ser: Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Lo que el Timer realmente cuenta, hablando a nivel eléctrico, son las transiciones de 1 a 0 de la línea P3.4. Esto significa que cuando un carro primero pasa por encima del sensor, ésto pondrá la entrada a una condición alta (“1”). En este momento el 80C51 no contará nada ya que la transición fue de 0 a 1, pero cuando el carro ya haya pasado el sensor regresará a su estado bajo (“0“) . Ésta ya es una transición de 1 a 0 y en ese instante el contador será incrementado en 1.
  • 15. PROBLEMA DE TAREA: PROBLEMA DE TAREA: Implemente un programa para contar el n Implemente un programa para contar el nú úmero de autos que mero de autos que pasan en un minuto por encima de un sensor de volumen de pasan en un minuto por encima de un sensor de volumen de tr trá ánsito nsito Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Ejemplo: Ejemplo: Medici Medició ón de la duraci n de la duració ón de un Pulso n de un Pulso Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Con un sistema basado en el 80C51, se desea medir la duraci Con un sistema basado en el 80C51, se desea medir la duració ón de un n de un pulso a nivel alto que se produce en la se pulso a nivel alto que se produce en la señ ñal al “ “pulso pulso” ” tal y como se tal y como se muestra en la figura. Supondremos que el microcontrolador tiene muestra en la figura. Supondremos que el microcontrolador tiene una una se señ ñal de reloj de 12MHz. Indique qu al de reloj de 12MHz. Indique qué é recursos del 80C51 utilizar recursos del 80C51 utilizarí ía para a para realizar esta aplicaci realizar esta aplicació ón y c n y có ómo conectar mo conectarí ía las se a las señ ñales del sistema. ales del sistema. Tiempo a medir Pulso
  • 16. Ejemplo: Ejemplo: Medici Medició ón de la duraci n de la duració ón de un Pulso n de un Pulso Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Tiempo a medir Pulso Oscilador interno Oscilador interno Fxtal=12Mhz : 12 : 12 CONTADOR CONTADOR fxtal / 12 fosc= fxtal Conteo inicial Conteo inicial TF0 TF0 C/T=0 timer C / T=0 C / T=0 TRx=1 TRx=1 GATE=1 GATE=1 CLK OVF Genera Interrupción Genera Interrupción Xtal1 Xtal1 Xtal2 Xtal2 INTx INTx Configuarci Configuarció ón n del Timer para arrancarse por hardware ,al inicio del pulso y p del Timer para arrancarse por hardware ,al inicio del pulso y pararse al final del mismo ararse al final del mismo Controlling the Brightness of an LED Pulse Width Modulation
  • 17. TIMER_0_INTERRUPT: • JB F0, HIGH_DONE ; If F0 is set then we just finished the high section of the LOW_DONE: ; cycle so Jump to HIGH_DONE • SETB F0 ; Make F0=1 to indicate start of high section • SETB P1.0 ; Turn off LED • MOV TH0, R7 ; Load high byte of timer with R7 (our pulse width control value) • CLR TF0 ; Clear the Timer 0 interrupt flag • RETI ; Return from Interrupt to where the program came from HIGH_DONE: • CLR F0 ; Make F0=0 to indicate start of low section • CLR P1.0 ; Turn on LED • MOV A, #FFH ; Move FFH (255) to A • CLR C ; Clear C (the carry bit) so it does not affect the subtraction • SUBB A, R7 ; Subtract R7 from A. A = 255 - R7. • MOV TH0, A ; so the value loaded into TH0 + R7 = 255 • CLR TF0 ; Clear the Timer 0 interrupt flag • RETI ; Return from Interrupt to where the program came from • The basic idea of the routine is fairly simple. First it checks to see if it just finished thigh or tlow. • If it was thigh then it jumps to HIGH_DONE and prepares for the tlow period. We set F0 to 0 to indicate we are timing tlow. Then we turn on the LED. Next we find the value to load into the 8 bit timer register TH0. Timer 0 will count up from there. If it was tlow then we continue through LOW_DONE and set F0 to 1 to indicate we are timing thigh. Then we turn off the LED. Next we load R7 into the 8 bit timer register TH0 and Timer 0 will count up from there. • Main Code • The main part of the code does not have to do anything. In this example we just move 01 to R7 for the minimum brightness and then make an infinite loop with • MOV R7, #001H ; set pulse width control to dim LOOP: • AJMP LOOP ;go to LOOP • The processor just sits there in an endless loop until the Timer 0 interrupt occurs. Then it goes off and goes through the Timer 0 interrupt routine and returns to the endless loop to wait for the next interrupt. If we had some other processing to do we could put that code in here in place of the endless loop and the processor could actually do something useful while it is waiting for the next interrupt.
  • 18. • Using the Timer • Now we can load a value into the 8 bit timer register, TH0, and it will run freely until it "overflows". The overflow occurs when it is at its maximum value of 255 and on the next count goes back to 0. This is the same as what would happen to the mileage meter in your car when it reaches all 9s and "flips over" to all 0s. The overflow triggers the Timer 0 interrupt and the processor stops whatever it is doing and goes to the point 0BH in its program. (0BH is the hex value 0B which is the 11th memory location) You can see in the program pwmled2.asm that we have used the ORG command to put a command in the 0BH location that jumps to our Interrupt Service Routine (ISR) for Timer 0. This just means that when the interrupt occurs the processor will go and process some code and then return to what is was doing before. • Below is the code that the processor goes through each time the Timer 0 interrupt occurs. Since we are using Timer 0 to time both tlow and thigh, we use a Flag (which is just a bit) to indicate whether we are currently timing tlow or thigh. We set the bit to 1 for thigh and 0 for tlow. El Timer 2 El Timer 2 El Timer 2 Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal
  • 19. Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal
  • 20. Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal Timer/Contadores Timer/Contadores Timer/Contadores MICROCONTROLADORES MICROCONTROLADORES Carlos E. Canto Quintal
  • 21. Microcontroladores Microcontroladores TIMER 2 Carlos Canto Quintal T2EX T2EX T2 T2 osc osc TL2 (8bits) TL2 (8bits) TH2 (8bits) TH2 (8bits) TF2 TF2 EXF2 EXF2 RCAP2L RCAP2L RCAP2H RCAP2H : 12 : 12 _ TR2 C/T2=0 C/T2=1 control captura control Interrupción del Timer2 Interrupción del Timer2 TIMER 2 EN MODO CAPTURA Detector de transición EXEN2 Microcontroladores Microcontroladores TIMER 2 Carlos Canto Quintal T2EX T2EX T2 T2 osc osc TF2 TF2 EXF2 EXF2 : 12 : 12 _ TR2 C/T2=0 C/T2=1 control Recarga control Interrupción del Timer2 Interrupción del Timer2 TIMER 2 EN MODO AUTO-RECARGA (cuando DCEN=0) Con la habilidad de conteo Up/Down desactivada TL2 (8bits) TL2 (8bits) TH2 (8bits) TH2 (8bits) RCAP2L RCAP2L RCAP2H RCAP2H Detector de transición EXEN2
  • 22. T2EX T2EX Microcontroladores Microcontroladores TIMER 2 Carlos Canto Quintal T2 T2 osc osc TF2 TF2 EXF2 EXF2 : 12 : 12 _ TR2 C/T2=0 C/T2=1 Valor de recarga en conteo ascendente Valor de recarga en conteo ascendente control Interrupción del Timer2 Interrupción del Timer2 TIMER 2 EN MODO AUTO-RECARGA (cuando DCEN=1) Con la habilidad de conteo Up/Down activada RCAP2L RCAP2L RCAP2H RCAP2H TL2 (8bits) TL2 (8bits) TH2 (8bits) TH2 (8bits) 0FFh 0FFh 0FFh 0FFh Dirección de conteo 1= Up 0=Down Valor de recarga en conteo descendente Valor de recarga en conteo descendente conmuta Microcontroladores Microcontroladores TIMER 2 Carlos Canto Quintal TIMER 2 EN MODO GENERADOR DE BAUDAJE T2EX T2EX T2 T2 osc osc : 2 : 2 _ TR2 C/T2=0 C/T2=1 control control TL2 (8bits) TL2 (8bits) TH2 (8bits) TH2 (8bits) RCAP2L RCAP2L RCAP2H RCAP2H Detector de transición EXF2 EXF2 Interrupción del Timer 2 : 16 : 16 : 16 : 16 _ _ RX Clock TX Clock TCLK RCLK SMOD 1 0 1 0 1 0 Sobre flujo delTimer 1 : 2 : 2 _ EXEN2 Nota: la frecuencia del oscilador es dividida entre 2 no entre12
  • 23. Microcontroladores Microcontroladores TIMER 2 Carlos Canto Quintal TIMER 2 EN MODO RELOJ DE SALIDA T2EX T2EX T2 T2 osc osc : 2 : 2 _ TR2 T2OE (T2MOD.1) Bit C/T2 TL2 (8bits) TL2 (8bits) TH2 (8bits) TH2 (8bits) RCAP2L RCAP2L RCAP2H RCAP2H Detector de transición EXF2 EXF2 Interrupción del Timer 2 EXEN2 Nota: la frecuencia del oscilador es dividida entre 2 no entre12 P1.1 P1.0 : 2 : 2 _ Salida de reloj Microcontroladores Microcontroladores TIMER 2 Carlos Canto Quintal T2CON: REGISTRO DE CONTROL DELTIMER/CONTADOR2 TF2 TF2 EXF2 EXF2 RCLK RCLK TCLK TCLK EXEN2 EXEN2 TR2 TR2 C/T2 C/T2 CP/RL2 CP/RL2 (LSB) (MSB) Bandera de Captura/Recarga. Cuando está en 1, ocurrirá una captura con una transición negativa en T2EX si EXEN2=1. Cuando está en cero, ocurirá una auto recarga ya sea cuando el Timer 2 rebase o una transición negativa en T2EX y que EXEN=1. Cuando ya sea que RCLK=1 o TCLK=1, este bit es ignorado y el timer es forzado a una auto recarga en el rebase del Timer 2. T2CON.0 CP/RL2 Selección de Timer o contador (Timer2) 0=Timer interno (OSC/12) 1=Contador de eventos externos (disparado en la transición de bajada) T2CON.1 C/T2 Control de Arranque /Paro del Timer2. Un 1 lógico arranca el Timer2 T2CON.2 TR2 Bandera de habilitación externa, Cuanda está habilitada permite que ocuura una captura o una recarga como resultado de una transición negativa en T2EX si el Timer 2 no está siendo usado para temporizar el puerto serial. EXEN2=0 hace que el Timer2 ignore los eventos en T2EX T2CON.3 EXEN2 Bandera de reloj del transmisor. Cuando está en 1, hace que el puerto serial use los pulsos del sobre flujo del timer 2 para el reloj de su transmisor en los Modos 1 , 3 y el timer 1 proporcionará el baudaje del receptor. TCLK=0 hará que el sobre flujo del Timer 1 sea usado para el reloj del transmisor. T2CON.4 TCLK Bandera del reloj de recepción. Cuando se hace 1, hace que el puerto serie use los pulsos del sobre flujo del timer 2 para el reloj de su receptor en los Modos 1 , 3 y el timer 1 proporcionará el baudaje del transmisor. RCLK=0 hará que el sobre flujo del Timer 1 sea usado para el reloj del receptor T2CON.5 RCLK Bandera externa del Timer2, se hace 1 cuando ya sea una captura o una recarga sea producida desde el exterior, al ocurrir una transición negativa en T2EX y además que EXEN2=1. Siempre la interrupción del timer 2 esté habilitada, EXF2=1 hará que la CPU vectorice a la rutina de servicio del timer 2. EXF2 debe deshabilitarse por software. EXF2 no produce una interrupción en modo contador Up//Down (DCEN=!) T2CON.6 EXF2 Bandera de sobre flujo del Timer2 se hace 1 con el rebase del Timer y debe hacerse 0 por software.TF2 no se hace 1 cuando RCLK=1 o cuando RCLK=1 T2CON.7 TF2 NOMBRE Y SIGNIFICADO POSICIÓN SIMBOLO
  • 24. Microcontroladores Microcontroladores TIMER 2 Carlos Canto Quintal Auto-recarga (contador Ascendente o Descendente) El timer 2 puede ser programado para conteo ascendente descendente cuando es configurado en su modo de recarga de 16 bits. Esta habilidad es invocada con el bit DCEN (Down Counter Enable ), localizado en el SFR T2MOD: Al resetear el DCEN está en cero tal que el Timer 2 por default cuenta hacia arriba (Up). Cuando el DCEN se pone a uno, elk Timer 2 puede contar hacia arriba o hacia abajo, dependiendo del valor de