¿Alguien sabe como se utiliza el Timer0 en el PIC16F877A?
¿Alguien sabe como se utiliza el Timer0 en el PIC16F877A? Quiero hacer oscilar un led a una frecuencia de 1 Hz.
¿Alguien sabe como se utiliza el Timer0 en el PIC16F877A? Quiero hacer oscilar un led a una frecuencia de 1 Hz.
En resumen
Hola, el TMR0 no es más que un contador de 8 bits, que puede utilizarse como contador de impulsos por RA4 o temporizador. En este caso lo utilizaremos como un temporizador.
Winnyu
Hola, el TMR0 no es más que un contador de 8 bits, que puede utilizarse como contador de impulsos por RA4 o temporizador.
En este caso lo utilizaremos como un temporizador.
Para calcular los tiempos de temporizacion, se tiene la siguiente formula :
t = tcm * prescaler * (256 - Vinicial) * OBS :
tcm es el valor de un ciclo máquina.
Si utilizas un cristal de 4MHZ , tendremos que :
tcm = 4(1 / 4MHZ) = 1us
para otro valor "X" MHZ → tcm = 4(1 / XMHZ)
Sin embargo el máximo tiempo que se puede alcanzar (con un cristal de 4MHZ) es de 65.
536ms por lo que debemos hacer uso de una variable ( registro de proposito general) para extender el tiempo a 500ms (Generaremos una onda cuadrada, de 500ms en estado alto y 500ms en estado alto, con esto logramos que el led oscile a una frecuencia de 1HZ)
Los datos que utilizaremos serán los siguientes :
Prescaler = 256
Valor inicial de TMR0 aproximadamente igual a 61
( eso quiere decir que produciremos una interrupcion aproximadamente cada 50ms)
Variable "contador" : Inicia en 0 y cada vez que llega a 10 (cuenta el nº de interrupciones generadas por desbordamiento del TMR0), encendemos o apagamos el led y reiniciamos su valor nuevamente a 0.
Adicional a esto, se utilizaran algunos bits de los registros OPTION_REG y INTCON * de OPTION_REG :
bit 4 : si es 0 → el divisor se asigna al TMR0 (claro que haremos esto) si es 1 → el divisor se asigna al watchdog
bit2, bit1 y bit0 : Con esto se asigna el valor del prescaler
Para prescaler = 256 → bit2 = 1 , bit1 = 1 , bit0 = 1
El resto de bits, no vienen al caso, y conviene dejarlos en 0 para esta aplicacion.
* de INTCON :
bit7 : Se pone a 1 para activar las interrupciones.
Bit2 : Se pone a 1 para activar la interrupcion por desbordamiento del TMR0
El resto de bits, los dejamos en cero, pues asi conviene para esta aplicacion
Y por ultimo, adjunto el programa hecho en ensamblador!
Saludos!
La adulación o lisonja es una alabanza baja e interesada, hecha con estudio de lo que se cree que puede halagar al otro, con propósito de ganarse su voluntad para fines interesados. Alabanza : es el producto de enunciar…
Que deseas hacer en la interfaz?
Se denominan perifericos a los aparatos o dispositivos auxiliares e independientes conectados a la unidad central de procesamiento de una computadora pero tambien ahi q tener en cuenta q se consideran perifericos tanto…