Respuestas

2016-02-05T07:39:19+01:00

Esta es una respuesta certificada

×
Las respuestas certificadas contienen información fiable, avalada por un equipo de expertos cuidadosamente seleccionados. En Brainly hay millones de respuestas de alta calidad, que han sido moderadas por los miembros más destacados de nuestra comunidad. Pero las respuestas certificadas son las mejores de las mejores.
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!