Está en la página 1de 4

B.1. ¿Qué es el Timer 0 (TMR0) del PIC16F84A? ¿Cómo funciona?

Es un temporizador formado por 8 bits, el registro TMR0 es el temporizador contador timer0 en su


totalidad, es decir, es donde se guardan los valores cuando es utilizado como temporizador, sus
valores se incrementan de uno en uno en un rango entre 0 y 255 por cada 4 ciclos de reloj,
sabiendo que cada instrucción del PIC se realiza cada 4 ciclos de reloj.

Este se implementa por medio de un contador el cual calcula el tiempo exacto en que el valor se
carga y el instante en que se produce su desbordamiento. Funciona como contador y
temporizador.

Como contador:

Funciona como contador al momento en que se le introducen impulsos desde el exterior por el pin
RA4/T0CKI. Su objetivo es contabilizar todos los acontecimientos externos representados por los
impulsos aplicados al pin T0CKI.

Como Temporizador:

Funciona como temporizador cuando este cuento los impulsos e Fosc/4. Tiene aplicación para
determinar intervalos de tiempo concreto. La duración de los impulsos es de un ciclo de máquina.
Trabajando a una frecuencia de reloj igual a 4 MHz el TMR0 se incrementa cada 1 us.

B.2. Analice los bits del registro de configuración OPTION_REG. ¿Cuáles bits se utilizan para
modificar el comportamiento del TMR0?

El registro OPTION tiene como objetivo manejar el comportamiento del TMR0. El fichero de
definición de etiquetas P16F84A.INC lo nombra como OPTION_REG y utiliza ciertos bits para
manejar este comportamiento:

PS2:PS0. (Prescaler Rate Slect bits) Estos bits son utilizados para la selección de valores Prescaler
o el rango con el que actúa el divisor de frecuencia.

PSA. (Prescaler Assignment bits) Pone en 1 o 0 el divisor de frecuencia:

PSA = 0. El divisor de frecuencia se asigna al TMR0.

PSA = 1. El divisor de frecuencia se asigna al Watchdog.

T0SE. (TMR0 Souerce Edge Select bit) Selecciona el flanco del a señal de entrada del TMR0.

T0SE = 0. TMR0 se incrementa en cada flanco ascendente de la señal aplicada al pin RA4/T0CKI.

T0SE = 1. TMR0 se incrementa en cada flanco descendente de la señal aplicada al pin RA4/T0CKI.

T0CS. (TMR0 Clock Source Select bit) Selecciona la Fuente señal del TMR0.

T0CS = 0. Pulsos de reloj interno Fosc/4 (TMR0 como temporizador).

T0CS = 1. Pulsos introducidos a través del pin RA4/T0CKI (TMR0 como contador).
B.4. ¿Cuántos tipos de interrupciones posee el PIC16F84A? ¿Cómo funciona cada una?

En el PIC16F84 hay 4 fuentes de interrupciones:

Interrupción INT. Por activación del pin RB0/INT, que regresa al PIC del modo SLEEP (interrupción
externa).

Interrupción RBI. Por los pines RB4 a RB7, configurados como entrada y en caso de que alguno de
ellos cambie de estado (interrupción externa).

Interrupción T01. Por desbordamiento del registro del Timer 0 (TMR0), cuando este registro pasa
de 255 a 0 en decimal ó 0xFF a 0x00 en hexadecimal (interrupción interna).

Interrupción EEI. Al completar la escritura de la EEPROM de datos (interrupción interna).

Al momento en que se produzca alguna de las interrupciones mencionadas, se origina una petición
de interrupción, que der ser aceptada, produce el siguiente mecanismo hardware:

1. Guarda el valor actual del contador de programa (PC) almacenando su contenido en la pila.

2. El bit GIE (Global Interrupt Enable) del registro INTCON es puesto a cero, lo que prohíbe que se
genere otra interrupción.

3. El contador de programa (PC) se carga con el valor 004h, que es la posición del vector de
interrupción.

4. Comienza a ejecutarse el programa de atención a la interrupción que se encuentra a partir de la


dirección 004h.
B.5. Analice los bits del registro de configuración INTCON. ¿Cómo se utiliza cada bit de este
registro al configurar las interrupciones? ¿Cuáles bits de OPTION_REG se utilizan también para
esto?

El registro INTCON contiene varios bits de habilitación y de bandera para el desbordamiento en el


registro TMR0, e interrupciones por el cambio del estado en el puerto PORTB y las interrupciones
externas en el pin INT.

GIE - Global Interrupt Enable bit - (bit de habilitación de interrupciones globales) controla
simultáneamente todas las fuentes de interrupciones posibles.

1 - Habilita las interrupciones no enmascaradas.


0 - Deshabilita las interrupciones no enmascaradas.

PEIE - Peripheral Interrupt Enable bit (bit de habilitación de interrupciones periféricas) es similar al
bit GIE, sin embargo controla interrupciones habilitadas por los periféricos. Eso significa que no
influye en interrupciones causadas por el temporizador Timer0 o por el cambio del estado en el
puerto PORTB o por el cambio en el pin RB0/INT.

1 - Habilita las interrupciones periféricas no enmascaradas.

0 - Deshabilita las interrupciones periféricas no enmascaradas.

T0IE - TMR0 Overflow Interrupt Enable bit (bit de habilitación de interrupciones por el
desbordamiento del temporizador Timer0) controla interrupciones causadas por el
desbordamiento del Timer0.

1 - Habilita interrupciones por Timer0.

0 - Deshabilita interrupciones por Timer0.

INTE - RB0/INT External Interrupt Enable bit (bit de habilitación de la interrupción externa en RB0)
controla interrupciones causadas por el cambio del estado lógico en el pin de entrada RB0/INT
(interrupción externa).

1 - Habilita interrupciones externas INT.

0 - Deshabilita interrupciones externas INT.

RBIE - RB Port Change Interrupt Enable bit (bit de habilitación de interrupciones por cambios en el
puerto PORTB). Cuando se configuran como entradas, los pines en el puerto PORTB pueden causar
una interrupción al cambiar el estado lógico (no importa si se produce bajada o subida de tensión,
lo que importa es que se produce un cambio). Este bit determina si una interrupción va a ocurrir.

1 - Habilita interrupciones por cambio en el puerto PORTB.

0 - Deshabilita interrupciones por cambio en el puerto PORTB.

T0IF - TMR0 Overflow Interrupt Flag bit (bit de bandera de interrupción por el desbor damiento del
Timer0) detecta el desbordamiento en el registro del temporizador Timer0, o sea el contador se
pone a cero.

1 - En el registro del Timer0 ha ocurrido desbordamiento (esta bandera debe volverse a 0 por
software).

0 - En el registro del Timer0 no ha ocurrido desbordamiento.

INTF - RB0/INT External Interrupt Flag bit (bit de bandera de interrupción externa en INT) detecta
el cambio en el estado lógico en el pin INT.

1 - Ha ocurrido una interrupción externa por INT (esta bandera debe volverse a 0 por software)

0 - No ha ocurrido una interrupción externa por INT.


RBIF - RB Port Change Interrupt Flag bit (bit de bandera de interrupción por cambio en el puerto
RB) detecta cualquier cambio del estado lógico de alguno de los pines de entrada en el puerto
PORTB.

1 - Al menos uno de los pines de E/S de propósito general en el puerto PORTB ha cambido de
valor. Después de leer el puerto PORTB, el bit RBIF debe volverse a 0 por software).

0 - Ninguno de los pines de E/S de propósito general en el puerto PORTB ha cambiado de valor.

¿Cuáles bits de OPTION_REG se utilizan también para esto?

La interrupción T01 del registro OPTION_REG: Por desbordamiento del registro del Timer 0
(TMR0), cuando este registro pasa de 255 a 0 en decimal ó 0xFF a 0x00 en hexadecimal
(interrupción interna).

También podría gustarte