El temporizador Timer0 tiene una amplia gama de aplicaciones en la práctica. Sólo unos pocos programas no lo utilizan de alguna forma. Es muy conveniente y fácil de utilizar en programas o subrutinas para generar pulsos de duración arbitraria, en medir tiempo o en contar los pulsos externos (eventos) casi sin limitaciones.
El módulo del temporizador Timer0 es un temporizador/contador de 8 bits con las siguientes características:
- Temporizador/contador de 8 bits;
- Pre-escalador de 8 bits (lo comparte con el temporizador perro guardián);
- Fuente de reloj interna o externa programable;
- Generación de interrupción por desbordamiento; y
- Selección del flanco de reloj externo programable.
Esquema del Temporizador Timer0
Registro OPTION_REG
·
RBPU – (resistencia Pull Up del puerto PORTB)
·
0 – Resistencias pull-up del puerto PORTB están deshabilitadas.
·
1 – Pines del puerto PORTB pueden estar conectados a las resistencias
pull-up.
·
INTEDG – (bit selector de flanco activo de la
interrupción externa)
·
0 – Interrupción por flanco ascendente en el pin INT (0-1).
·
1 – Interrupción por flanco descendente en el pin INT (1-0).
·
T0CS – (bit selector de tipo de reloj para el
Timer0)
·
0 – Los pulsos se llevan a la entrada del temporizador/contador Timer0
por el pin RA4.
·
1 – El temporizador utiliza los pulsos de reloj internos (Fosc/4).
·
T0SE – (bit selector de tipo de flanco)
·
0 – Incrementa en flanco descendente en el pin TMR0.
·
1 – Incrementa en flanco ascendente en el pin TMR0.
·
PSA – (bit de asignación del pre-escalador)
·
0 – Pre-escalador se le asigna al WDT.
·
1 – Pre-escalador se le asigna al temporizador/contador Timer0.
·
PS2, PS1, PS0 – (bit selector del valor del
divisor de frecuencias)
·
El valor del divisor de frecuencias se ajusta al combinar estos bits.
Como se muestra en la tabla a la derecha, la misma combinación de bits
proporciona los diferentes valores del divisor de frecuencias para el
temporizador/contador y el temporizador perro guardián, respectivamente.
Pre-escalador
El pre-escalador es
compartido por el Timer 0 y por el Watchdog. Se asigna a un
módulo o a otro mediante el bit PSA del
registro OPTION. Poniendo el bit a 1 el pre-escalador se
asigna al Watchdog y poniéndolo a 0 el pre-escalador se
asigna al Timer 0. El valor del pre-escalador se selecciona
con los bits PS2:PS0 de la siguiente manera:
PS2:P20 TMR0 WDT
000 1:2
1:1
001 1:4
1:2
010 1:8
1:4
011 1:16
1:8
100 1:32
1:16
101 1:64
1:32
110 1:128
1:64
111 1:256
1:128
Para utilizar el Timer0 apropiadamente, es necesario:
Paso 1: Seleccionar el modo:
- El modo de temporizador se selecciona por el bit TOSC del registro OPTION_REG (TOSC: 0=temporizador, 1=contador).
- Cuando se asigna el pre-escalador al temporizador/contador se debe poner a cero el bit PSA del registro OPTION_REG. El valor del divisor de frecuencias se configura al utilizar los bits PS2-PS0 del mismo registro.
- Al utilizar una interrupción, los bits GIE y TMR0IE del registro INTCON deben estar a uno.
Paso 2: Medir y contar
Para medir tiempo:
- Reiniciar el registro TMR0 o escribir un valor conocido en él.
- El tiempo transcurrido(en microsegundos al utilizar el oscilador de 4MHz) se mide al leer el registro TMR0.
- El bit de bandera TMR0IF del registro INTCON se pone a uno automáticamente siempre que ocurra el desbordamiento del registro TMR0. Si está habilitada, ocurre una interrupción.
Para contar pulsos:
- La polaridad de pulsos a contar en el pin RA4 se selecciona por el bit TOSE del registro OPTION_REG (T0SE: 0=pulsos positivos, 1=pulsos negativos).
- Varios pulsos se pueden leer del registro TMR0. El pre-escalador y la interrupción se utilizan de la misma forma que en el modo de temporizador.
Ejemplos de timer 2 (Archivos para abrir en MPLAB y Proteus): Descargar Aqui
A la plis plis necesito hacer ese trabajo me pede dar la clave plis plis, para descargarlo plis
ResponderEliminar