Vous êtes sur la page 1sur 11

REPÚBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA DEFENSA


UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA
DE LA FUERZA ARMADA NACIONAL
UNEFA
NÚCLEO ARAGUA – SEDE MARACAY

PROGRAMACIÓN. (CLASE 6)
TIMER 0 Y 1

Facilitador: Luis Eduardo Plata Briñez

Agosto 2018
Uno de los recursos que más se necesitan a la hora de desarrollar
cualquier aplicación es el manejo de tiempos o retardos. Los retardos
se pueden realizar de dos formas: la primera consiste en valerse del
retardo presente durante la ejecución de una instrucción, la cual
depende del número de ciclos que requiere para su ejecución y de la
frecuencia del oscilador encargado del funcionamiento del
microcontrolador; teniendo en cuenta estos dos factores es posible
generar un retardo a base de instrucciones, forma que en la mayoría
de los casos es poco práctica su atención a este proceso y descuide
otros procesos que en un momento dado representa mayor
importancia. La segunda forma y, de paso, la más adecuada y
utilizada, es valerse de un poderoso recursos presente en la mayoría
de microcontroladores existentes, que es utilizar el timer. El timer se
puede considerar como un registro contador que incrementa su valor a
medida que transcurre el tiempo, donde el incremento depende de
varios factores como son la frecuencia del oscilador y la configuración
del prescalador.
TIMER 1

El módulo TIMER1 así como el TIMER0 es un


temporizador/contador con las siguientes características.

Trabaja con 16 bits (con 2 registros de 8 bits:TMR1H y


TMR1L).
Ambos registros se pueden leer y escribir.
Interrupción por desbordamiento de FFFFh a 0000h
Reset por disparo del modulo CCP
Controlado por el registro T1CON. Con el bit TMR1ON
(T1CON<0>) se puede habilitar o deshabilitar.
T1CON: REGISTRO DE CONTROL TIMER1

Bit 7:RD16: Bit de habilitación del modo Lectura/Escritura de 16 bits.


1 = Habilita los registros lectura/escritura del TIMER1 en una operación de 16 bits.
0 = Habilita los registros lectura/escritura del TIMER1 en 2 operaciones de 8 bits.

Bit 6:T1RUN: Bit de estado del sistema de reloj TIMER1


1 = El dispositivo de reloj es derivado del TIMER1.
0 = El dispositivo de reloj es derivado de otra fuente.

Bit 5-4: T1CKPS1:T1CKPS0: Selección del valor del prescaler del reloj del TMR1.
11=Prescaler a 1:8
10=Prescaler a 1:4
01=Prescaler a 1:2
00=Prescaler a 1:1
Bit 3:T1OSCEN: Bit de habilitación del oscilador del TMR1.
1 = Oscilador habilitado.
0 = Oscilador parado

Bit 2:T1SYNC: Sincronización de la entrada del reloj externa.


Si TMR1CS=1;
1 = No sincronizado cola entrada del reloj interno
0 = Sincronización de la entrada del reloj externo.
Si TMR1CS=0;
Este bit es ignorado. TMR1 utiliza el reloj interno.

Bit 1:TMR1CS: Bit de selección de la fuente de reloj para el TMR0.


1 = Reloj externo desde el pin RC0/t1OSO/T1CK1 (flanco de subida)
0 = Reloj interno (FOSC/4)

Bit 0:TMR1ON: Bit de habilitación del TMR1


1 = TMR1 habilitado.
0 = TMR1 parado.
Diagrama de Bloques del TIMER1
Diagrama de bloques del TIMER1 (Modo lectura/escritura de 16 bits.)
Prescaler

A diferencia del TIMER0 donde el prescaler llegaba a 256, en


el TIMER1 solo se tiene un prescaler de 8, el cual se configura
a través de los bit 5 y 4 del registro T1CON.
El TIMER1 Pude operar de la forma siguiente:

Como temporizador.
Como contador síncrono.
Como contador asíncrono.
El modo de operación se establece mediante el bit TMR1CS
(T1CON<1>). En modo temporizador, el TIMER1 se incrementa en
cada ciclo de instrucción. En modo contador se incrementa por flanco
de subida de la señal externa. Cuando se habilita el oscilador interno
del TIMER1 mediante el bit T1OSCEN, los pines RC1/T1OS1 y
RC0/T1OSO/T1CK1 se configuran como entradas ignorando el valor
de TRISC<1:0>. El TIMER1 tienen un reset interno que puede ser
generado por el modulo CCP. Las interrupciones del TIMER1 se
controlan a través de los registros PIE1 y PIR1.
El tiempo de desbordamiento del TIMER1 se calcula según la
siguiente ecuacion:

T=TCM.Prescaler.(65536-Carga TMR1)

Donde TCM es el ciclo máquina que se puede calcular mediante


la ecuación:

TCM=4/FOSC

set_timer (valor); valor: entero de 8 bits

valor=get_timer0 (); leer el valor actual del registro

enable_interrupts(INT_TIMER1);
enable_interrupts(global);

Vous aimerez peut-être aussi