Practica Numero 9. PIC Interrupciones.

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

UNIVERSIDAD CATOLICA ANDRES BELLO

FACULTAD DE INGENIERIA
ESCUELA INFORMATICA
CATEDRA DE ARQUITECTURA DEL COMPUTADOR
Ing. Biagio Cante Mata

PRACTICA #9

Microcontroladores PIC 16F84 (Manejo las interrupciones del microcontrolador).


Objetivos:

1.- Realizar un programa donde se configure la interrupción externa.

2.- Manejo de los vectores de interrupción y de las banderas (flags) del


microcontrolador.
Materiales:
1 Protoboard.
1 Fuente de poder
1 Multimetro Digital
1 PIC16F84
2 Resistencia de 150Ω, ¼ W
3 Resistencias de 1K
2 diodos LED (colores verdes y rojo)
2 Pulsador

DESARROLLO

En el PIC 16f84 hay 4 fuentes de interrupciones, veamos cuales son...

• Por el pin RB0/INT, que regresa al PIC del modo SLEEP (interrupción externa).
• Por los pines RB4 a RB7, configurados como entrada y en caso de que alguno de
ellos cambie de estado (interrupción externa).
• Por desbordamiento del registro TMR0, cuando este registro pasa de 255 a 0 en
decimal ó 0xFF a 0x00 en hexa (interrupción interna).
• Al completar la escritura de la EEPROM de datos (interrupción interna).

Debe haber algo que nos indique la fuente de interrupción que se ha producido, y estas
son las banderas de interrupciones, cada interrupción tiene su propia bandera y es un bit
del registro INTCON, que cambia de estado de 0 a 1 cuando se produce la interrupción,
salvo la última que se encuentra en el registro EECON1

Ahora veamos cuales son esas banderas...

• Para PB0/INT la bandera es INTF (Bit1)


• Parar los pines PB4 a PB7, es PBIF (Bit0)
• Para TMR0, es T0IF (Bit2)
• Para la EEPROM, es EEIF (Bit4) en el registro EECON1.

Si prestas atención, todas estas banderas terminan en F es decir FLAG's,


Bien, ahora veremos todo esto en el registro INTCON:
REGISTRO INTCON

GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

El Bit GIE habilita todas las interrupciones, Los Bit's de fondo gris son las banderas,
y los BIT's que se corresponden con cada flag son la habilitación de la fuente de
interrupción para que esta cambie, recuerda que el flag de EEIE se encuentra en el
registro EECON1.

Y ahora los detalles de cada Bit del registro INTCON.

BIT's LóE Reset Descripción

Bit 7: GIE 1 = Todas las Interrupciones activadas


L/E 0
Habilitación General. 0 = Todas las Interrupciones desactivadas

Bit 6: EEIE 1 = Activada


L/E 0
Int. de Periféricos 0 = Desactivada

Bit 5: T0IE 1 = Activada


L/E 0
Int. del TMR0 0 = Desactivada

Bit 4: INTE 1 = Activada


L/E 0
Int. Externa 0 = Desactivada

Bit 3: RBIE 1 = Activada


L/E 0
Int. por PORTB 0 = Desactivada

Bit 2: T0IF 1 = TMR0 desbordado.


L/E 0
Bandera del TMR0. 0 = No se ha desbordado

Bit 1: INTF 1 = Ocurrió una interrupción externa


L/E 0
Bandera - RB0/INT 0 = No ha ocurrido interrupción externa

Bit 0: RBIF 1 = Al menos un pin cambio de estado


L/E x
Bandera - RB4:RB7 0 = Ningún pin ha cambiado de estado.

En la tabla, los valores de L ó E son para que sepas si el bit es de lectura o


escritura, los valores de Reset son el estado de cada Bit después de producirse un reset o
cuando se inicia el micro.

Por cierto y antes de que lo olvide, si bien cada flag cambia o se pone a 1 al
producirse una interrupción, es tarea de usted borrarlo o ponerlo a cero nuevamente, ya
que si no lo haces el micro estará siempre interrumpido o lo que es lo mismo, creerá que
la interrupción se está produciendo continuamente.

Lo primero que debes saber, es que cuando una interrupción se produce, sea cual
fuere la fuente de interrupción, el micro deja todo y salta a la dirección 04H, éste es el
vector de interrupción, en esta dirección es donde escribiremos la rutina que dé servicio a
todas las interrupciones, o bien haremos un salto a donde se encuentre ese trozo de
código, el cual se conoce como ISR (Rutina de Servicio de Interrupción)

El Tiempo de Procesamiento de la ISR debe ser lo más breve posible, para dar
lugar a que se ejecuten las otras interrupciones, ya que puedes haber habilitado más de
una de ellas.
Lo más crítico de una interrupción es tener que guardar todos los registros
importantes con sus respectivos valores, para luego restaurarlos, y así el micro pueda
continuar con la tarea que estaba realizando cuando fue interrumpido.

Vamos a realizar un programa que una vez generado una interrupción no lo indicara
con el encendido de un diodo led, mientras no se ejecute esta interrupción el programa se
encontrara realizando una rutina en la cual haremos que se muestre en un display una
letra (La letra P), pero cuando llegue la interrupción mostrara otra letra (La letra H). Para
que salgamos de la interrupción debemos de presionar otro pulsador el cual será el
apagara el flag y dará fin a la interrupción. Utilizaremos la interrupción del puerto PB0.

Únicamente del registro OPTION, tomaremos el Bit 6 (INTEDG) el cual nos indicara
de que forma se activara la interrupción externa:

Si el valor es 1 entonces será por flanco de subida

Si el valor es 0 entonces será por flanco de bajada

A continuación tenemos el programa propuesto para esta práctica


Una vez terminado el programa deberá de simularlo (puede usar la herramienta de sim84)
y luego construir el siguiente circuito:

+5V

R4 R3
v erde R1 1K 1K

LED 150 ohm


SW1
rojo R2 U1

17 6 Interrupcion
18 RA0 RB0/INT 7
LED 150 ohm 1 RA1 RB1 8
2 RA2 RB2 9 SW2
C1 3 RA3 RB3 10
RA4/TOCKI RB4 11
16 RB5 12
15 OSC1/CLKIN RB6 13 salir de interrupcion
22pF 4MHz OSC2/CLKOUT RB7
4
C2 MCLR
14
VDD

22pF PIC16F84

SW3

reset 1K

+5V

Una vez construido ensamble el programa y descárguelo al microcontrolador con el uso


del programador, luego pruébelo y emita sus conclusiones.

Simulación de la Práctica con la Utilización del software Proteus. Primeramente


busquemos en la librería de componentes los necesarios:
Una vez construido el circuito a simular:

Procedemos a cargar el programa en el PIC, haciendo doble clic sobre el microcontrolador y se


desplegara la siguiente ventana:

Haciendo clic en program file, se despliega una ventana donde vamos a buscar en la carpeta
donde tenemos nuestro archivo .HEX y procedemos luego con la opción de abrir y luego sin
modificar ninguna de la opciones de la ventana anterior presionamos aceptar.
Por ultimo iniciamos la simulación y probamos nuestro circuito:

También podría gustarte