TMR0 - 16f877a
TMR0 - 16f877a
TMR0 - 16f877a
TEMA 4. TIMER 0
TEMPORIZADOR TMR0
00H
FFH
El TMR0 cuenta exclusivamente de
forma ascendente, nunca descendente.
00H
(28 – N10)
00H
Si el TMR0 se carga con un valor, FFH
éste comenzará a contar desde el
valor cargado hasta que se
desborda (cuando pasa a 00H) Valor cargado
En el TMR0
00H
Pasos:
1. Escoger un valor para el prescaler.
Un posible criterio es calcular todas las frecuencias de prescaler que
podemos obtener con cada divisor posible. Las frecuencias sin decimales
son interesantes al poder encontrar múltiplos de ellas a la salida del
TMR0 con mayor facilidad. En general, la elección del valor del prescaler
es empírica: depende del problema, la experiencia y sobre todo de la
práctica.
2. Determinar el valor del Registro Auxiliar, a partir del valor dado por
el TMR0.
Normalmente viene dado por un múltiplo de la frecuencia, asociada al
tiempo calculado. Con un ejemplo entenderemos mejor lo que se desea
plantear:
Ejemplo: Determine los valores del TMR0 y del Registro Auxiliar para
conseguir una temporización de 1 segundo. Utilice un oscilador XT.
Solución: XT= Frecuencia = 4 MHz ; Tosc= 250 ns
• Paso 1. Como no se nos ha impuesto que prescaler utilizar ni que
temporización, podemos aleatoria mente escogerlas, como en el ejemplo
6. Evaluando cualquiera, cuya temporización del TMR0 se basó en 5 ms,
escojamos el prescaler 128 y sustituyamos los valores en la ecuación
principal:
– Temporización= 4*250 ns*(256 - 217)*128 = 4.992 ms
IUT Cumaná
Paso 2. Debemos de
estructurar el programa
para que vigile e informe
cuando el TMR0 se ha
desbordado, y el bit que nos
da esta información es el
TOIF, del Registro
INTCON. Adicional a esto
debemos configurar el
registro OPTION para que
este trabaje con el
prescaler que hemos
seleccionado para nuestros
cálculos, así como de
asignarlo al TMR0. Así como
la rutinaria configuración de
los puertos.
LIST P=16F84A
INCLUDE P16F84A.INC IUT Cumaná
ORG 00H
GOTO INICIO
INICIO BSF STATUS,5
Paso 3. Programa CLRF TRISA
MOVLW B’11010110’
MOVWF OPTION_REG
BCF STATUS,5
CLRF INTCON
LEDON BSF PORTA,0
CALL RETARDO
LEDOFF BCF PORTA,0
CALL RETARDO
GOTO LEDON
;***RUTINA DE RETARDO***
RETARDO MOVLW D’139’
MOVWF TMR0
ESPERA BTFSS INTCON,TOIF
GOTO ESPERA
BCF INTCON,TOIF
RETURN
END
Prof. Luis Zurita
Ejercicio. Realice un programa que permita encender y apagar un
led cada un segundo. Mediante Timer0 y con un oscilador XT. IUT Cumaná
Subrutina
Programa Principal