Professional Documents
Culture Documents
Temporizador Timer 0
El Timer 0 es un modulo temporizador/contador de 8 bits que cuenta con un preescalador
programable tambin de 8 bits. Puede funcionar como temporizador o como contador. En modo
temporizador el valor del registro TMR0 se incrementa con cada ciclo de instruccin (o cada X
ciclos dependiendo del preescalador). En modo contador el valor del registro TMR0 se
incrementa en cada flanco (ascendente o descendente) del pin RA4/T0CKI. En ambos casos al
desbordarse (pasar de 0xFF a 0x0) el registro TMR0 la bandera de interrupcin del timer 0 (bit
T0IF del registro INTCON) se pone a 1.
El modo temporizador se selecciona poniendo a cero el bit T0CS del registro OPTION.
Poniendo a uno ese bit el modulo trabaja en modo contador, en este modo de operacin adems
se debe seleccionar si el incremento se producir en cada filo ascendente o descendente, al
poner a cero el bit T0SE del registro OPTION se selecciona el filo ascendente.
El preescalador es compartido por el Timer 0 y por el Watchdog. Se asigna a un mdulo o a otro
mediante el bit PSA del registro OPTION. Poniendo el bit a 1 el preescalador se asigna al
Watchdog y poniendolo a 0 el preescalador se asigna al Timer 0. El valor del preescalador se
selecciona con los bits PS2:PS0 de la siguiente manera:
P
S2
:P
20
0
00
0
01
0
10
0
11
1
00
T
M
R
0
1
:
2
1
:
4
1
:
8
1
:
1
6
1
:
3
2
W
D
T
1:
1
1:
2
1:
4
1:
8
1:
16
1
01
1
10
1
11
1
:
6
4
1
:
1
2
8
1
:
2
5
6
1:
32
1:
64
1:
12
8
Carga y temporizacin
En modo temporizador el Timer 0 incrementa su cuenta en cada ciclo de instruccin. Este modo
sirve para generar temporizaciones y bases de tiempo de la misma forma que los retardos por
software, sin embargo las temporizaciones con el Timer 0 pueden ser ms exactas y adems se
cuenta con la ventaja de que el mdulo puede trabajar mediante interrupciones as que el
programa puede ejecutar otras isntrucciones mientras se realiza la temporizacin.
La temporizacin que se puede obtener con este mdulo se obtiene de la siguiente relacin:
Temporizacin=[(256 precarga)PS+2]Tinstruccion
Donde:
La temporizacin est dada en segundos hallando la mxima utilizando el oscilador interno del
pic 16f628 es:
Temp.max. = [(256 - 0)*256+2]*1uS = 65528uS
De modo que la temporizacion mxima que se puede tener con el es solamente de 65.538mS. Si
se desea obtener una temporizacion distinta solo se debe escribir en el registro TMR0 el valor de
la precarga necesaria.
Temporizador Timer 1
La temporizacin mxima utilizando el oscilador interno del pic 16f628 y el valor ms grande
de preescalador es:
Temporizador Timer 2
El Timer 2 es un temporizador de 8 bits que tiene la particularidad de tener un
preescalador y un post-escalador. Adems este mdulo cuenta con un registro de
periodo PR2 que marca el valor mximo que puede alcanzar la cuenta del registro
TMR2. A diferencia de los otros temporizadores, el temporizador Timer 2 no incrementa
su cuenta hasta llegar a 0xFF y despus al desborde sino que incrementa su cuenta
desde 0x00 con cada ciclo de instruccin hasta que el valor del registro TMR2 coincide
con el del registro PR2 y despus, en el siguiente ciclo reinicia la cuenta desde 0x00.
Este mdulo cuenta con un preescalador y un post-escalador. El preescalador tiene la
misma funcin que en los otros dos timers y sirve como divisor de frecuencia antes de
cada incremento. El post-escalador funciona como un divisor de frecuencia despus de
Post-escalador
00 = 1:1
0000 = 1:1
01 = 1:4
0001 = 1:2
1x = 1:16
0010 = 1:3
.
.
.
1111 = 1:16
Carga y Temporizacin
La temporizacin del Timer 2 est dada por la siguiente expresin:
TempTMR 2=[Preescaler(PR 2+1)Postscaler ]Tinstr
Donde
Preescaler = Valor del preescalador
PR2 = Valor cargado al registro PR2
Postscaler = Valor del post-escalador
Tinstr = 4/frecuencia de oscilacin
TempTMR2 = Temporizacin dada en segundos
La temporizacin mxima que puede alcanzar el Timer 2 es la misma que alcanza el
Timer 0. Utilizando el oscilador interno del pic 16f628 la temporizacin mxima sera
de65536uS. Si se desea otra temporizacin se puede lograr cargando el valor necesario
al registro PR2.
PR2=[([TempTMR 2/(4/ fosc)])/( PreescalerPostscaler )]1
Referencias
Cdigo ascii. (s.f.). Obtenido de El Cdigo ascii Sitio Web: http://www.elcodigoascii.com.ar/