Documentos de Académico
Documentos de Profesional
Documentos de Cultura
rodrigoxbg
Administrador
En esta sesión 15 vamos a hablar del Timer 1. Que en sí, hace lo mismo que el TMR0
Como lo dicho anteriormente. Este módulo es similar al Timer 0 en sus funciones. Y a su misma manera se tiene que
configurar para hacerlo trabajar como contador o temporizador. Sin embargo esté Timer trabaja con 16 bits ; pero,
si nuestras instrucciones y registros solo nos permiten manipular 8 bits...
El Timer 1
Es un módulo del microcontrolador que es semejante al TMR0, que a diferencia con este último este nuevo es un
registro de 16 bits.
Pero si nuestros códigos solamente nos permiten manipulación de 8 bits, como funciona con 16?
La respuesta es que este registro se divide en 2 subregistros, donde en uno de ellos se almacenan los 8 bits menos
significativos (LSB) y en el otro los 8 más significativos (MSB).
Modos de trabajo
COMO TEMPORIZADOR : El incremento del timer se da por los pulsos brindados del oscilador de cristal. Para
nuestro pic es de 20MHZ. Se usa esta forma para generación de retardos y tiempos de utilidad.
COMO CONTADOR : Es un contador de 16 bits, El cual su fuente de incremento de cuenta son los pines RC0 y
RC1. Sin embargo esta configuración presenta una característica adicional.
• Contador Síncrono : Es el modo normal del timer 1, por cada pulso de entrada en el puerto RC0 o RC1 el valor
del registro TMR1L incrementará en una unidad. Se dice que es síncrono; debido a que, el pulso es detectado en
un proceso perteneciente a la oscilación del cristal de nuestro microcontrolador. Por lo que si mandamos nuestro
microcontrolador al modo de bajo consumo ("sleep") ya no podremos incrementar la cuenta hasta que
despertemos al pic.
• Contador Asíncrono: Es un modo del timer 1, que tiene la ventaja de funcionar aún cuando el
microcontrolador haya entrado al modo de bajo consumo ("sleep"). Estando en ese modo por cada pulso que se le
brinde a los pines de entrada el registro TMR1L seguirá incrementando su cuenta. Podremos ver el valor actual o
realizar acciones si despertamos al pic mediante una interrupción. Entrando en este modo existe una aplicación
muy usada cuando se requiere trabajar con tiempos precisos y relojes digitales. Pues basta con conectar en los
pines RC0 y RC1 un cristal de 32.768KHz con algunas configuraciones para generar un retardo exacto de 1
segundo.
Para realizar las configuraciones con los registros involucrados, es necesario observar el diagrama de bloques.
En caso se haya desbordado el Timer1 (el objetivo es ese) se activará la bandera TMR1IF
El circuito es muy sencillo. Los bits de configuración pertenecen al registro T1CON mostrado a continuación:
• T1CKPS1 : T1CKPS1 -> Son bits de selección del preescalador de los pulsos de incrementos del TIMER. Hay
que seleccionar uno dando valores binarios. Lo que significa que máximo tendremos 4 escalas.
Existen más registros involucrados con el TMR1, que en esta sesión por el momento no las tocaremos. Sin
embargo el faltante en nuestra lista es el.
• TMR1IF-> Es la bandera del timer1 que indica cuando se haya desbordado. Lo que significa que ha pasado del
valor TMR1H d'255' TMR1L d'255' = 65535 a 0. Si ha ocurrido es necesario borrar el valor por software.
1= Se ha desbordado el Timer1
0= No se ha desbordado el Timer1
https://www.rodrigocarita.com/foro.html 4/13
26/4/2020 El TMR1 (Contador o Temporizador de 16 bits) - Foro
El código
Mostramos la fórmula para realizar una temporización en el TMR1. Como se da cuenta es tan similar al TMR0
https://www.rodrigocarita.com/foro.html 6/13
26/4/2020 El TMR1 (Contador o Temporizador de 16 bits) - Foro
6: Se Testea el bit TMR1IF del registro PIR1 para averiguar si hubo desbordamiento.
7: No olvidar limpiar el bit para realizar el proceso repetidamente.
https://www.rodrigocarita.com/foro.html 7/13
26/4/2020 El TMR1 (Contador o Temporizador de 16 bits) - Foro
Ahora con todos los valores, vamos a cargar la configuración al registro T1CON perteneciente al TMR1
El código
CÓDIGO: SELECCIONAR TODO
La simulación
El videotutorial
▼ OCULTAR SPOILER: YOUTUBE
Desafio
Realizar un contador regresivo programable sin tecla de interrupción. Con dos
pulsadores uno para subir la cuenta y otro para iniciarla. Cuando la cuenta
llegue a "0" Encender un Led durante 5 segundos.
Como la función de un cronómetro vamos a mostar el valor en un dígito de las milésimas, por lo tanto podremos
generar un retardo de 100ms con el Timer 1.
Los cálculos
El Código
https://www.rodrigocarita.com/foro.html 10/13
26/4/2020 El TMR1 (Contador o Temporizador de 16 bits) - Foro
l Cód go
CÓDIGO: SELECCIONAR TODO
;...........................................................................
;Con..
;
; Pre = 8
; TMR1= 3036 --> Convertido a hexadecimal "0BDC"
;============================================================================
INCLUDE <P16F877A.INC>
LIST P=16F877A
INCLUDE <mimacro.INC> ;Incluimos la macro
__config 0x3f32 ; Este es un comando de fusibles, lo estudiaremos más adelante.
ORG 0;
CBLOCK 0x20 ;Como las librerías usan direcciones de memoria es necesario adjuntar
La simulación
https://www.rodrigocarita.com/foro.html 11/13
26/4/2020 El TMR1 (Contador o Temporizador de 16 bits) - Foro
ADJUNTOS
Tmr1-Cronom.X.rar
(90.7 KiB) Descargado 139 veces
tmr1-ejemplo1.X.rar
(52.4 KiB) Descargado 124 veces
No cobramos por el material, no te llenamos de publicidad, los archivos tienen enlaces directos.
Ponemos mucho esfuerzo en cada tema publicado, ¿Te gustaría apoyarnos y seguir motivándonos con una pequeña donación?
1 mensaje • Página 1 de 1
RESPONDER
IR A
Índice general Contáctenos Borrar todas las cookies del Sitio • Todos los horarios son UTC-05:00
IDENTIFICARSE • REGISTRARSE
NOMBRE DE USUARIO:
CONTRASEÑA:
Olvidé mi contraseña
Recordar
Ocultar mi estado de conexión en esta sesión
Identificarse
https://www.rodrigocarita.com/foro.html 12/13
26/4/2020 El TMR1 (Contador o Temporizador de 16 bits) - Foro
https://www.rodrigocarita.com/foro.html 13/13