Está en la página 1de 3

Cálculo del valor de precarga en timer 0

• Para los PICS, podemos usar una expresión para calcular el valor de precarga
necesario:
Temporización=4.Tosc.valor_prescaler.valor_del_timer (1)

En donde Tosc es el valor del periodo del oscilador principal del


microcontrolador
De tal manera que:
Valor_del_timer=Temporización/(4.Tosc.valor_prescaler) (2)

Debemos de tomar en cuenta, que este valor obtenido en la expresión 2,


tenemos que restarlo del máximo valor del timer).
De tal manera que:
Valor_precarga=máximo valor del timer-valor_del_timer (3)
Cálculo del valor de precarga en timer 0

O equivalentemente:

Valor_precarga= máximo valor del timer-Temporización/(4.Tosc.valor_prescaler) (4)

El máximo valor para un timer de 8 bits es 0xFF +1, ya que se desborda al iniciar
nuevamente en cero, en decimal este valor es 256.

Para un timer de 16 bits el máximo valor al que puede llegar es 0xFFFF y se desborda en
0xFFFF+1, es decir 65536 en decimal.
Cálculo del valor de precarga en timer 0
Se quiere generar un tiempo de 500 ms, considerando que el oscilador principal funciona a una frecuencia de 4
MHz y un prescaler de 64, sustituyendo estos valores en la ecuación 3 tenemos:

Valor_del_timer=500 ms/(4*0.25 μs*64)


=500 ms/64 μs
=7812.5

Debido a que solo podemos usar valores enteros, el valor del timer es 7812, y notamos también que debemos de
usar el timer de 16 bits, pero recordemos que este valor tenemos que restarlo del valor máximo. Por lo que:

Valor_precarga=65536-7812=57724
Este valor tenemos que cargarlo en los registros TMR0H y TMR0L, por lo que debemos de convertir el valor a
hexadecimal, que es 0xE17C. Esto se hará con las instrucciones:
movlw 0xE1
movwf TMR0H,0
movlw 0x7c
movwf TMR0L,0 ;valor de precarga para 500ms a 4MHz

También podría gustarte