Laboratorio 5 (Interrupciones)
Laboratorio 5 (Interrupciones)
Laboratorio 5 (Interrupciones)
FACULTAD DE ELECTROTECNIA Y
COMPUTACIN
ELECTRNICA DIGITAL II
DEPARTAMENTO SISTEMAS DIGITALES Y
TELECOMUNICACIONES
Laboratorio 5: Interrupciones
1. Objetivos
o Comprender el uso de las interrupciones con que dispone
el microcontrolador.
o Usar las interrupciones RB e EXT
2. Introduccin
Las interrupciones permiten a cualquier suceso interior o exterior al
interrumpir la ejecucin del programa principal ( main ) en cualquier
momento. En el momento de producirse la interrupcin, el PIC
ejecuta un salto a la rutina de atencin a la interrupcin ( ISR ,
Interrupt Service Routine), previamente definida, donde se atender
a la demanda de la interrupcin. Cuando se termina de ejecutar
dicha rutina, el PIC retorna a la ejecucin del programa principal en
la misma posicin de la memoria de programa donde se ejecut la
interrupcin1. Mirar Figura 1.
OPTION REG
INTCON
PIE 1
PIR 1
PIE 2
PIR 2
INTCON .
INTCON <1>
INTF
es puesto a
1 ,
indicando
Figura 6. Interrupcin RB
16 F 877 A . h
programa
DEBE
nivel
llamar
xxxx
enable interrupts
enable interrupt (GLOBAL)
interrupcin, junto a
interrupciones previamente habilitadas.
para
para
habilitar
activar
la
las
L
H :
ext
H
L :
ext
edge
edge
10.
#include <16F877A.h>
#fuses HS, NOWDT
#use delay (clock=4M)
#byte trisb=0x86 //Locacin en la memoria del registro de direccin de datos del
puerto B
#INT_EXT //Directiva Interrupcin Externa (INTF (INTCON<1>) est en 1)
void cambio() //ISR
{
output_toggle(PIN_B7); // Complementa el estado del Pin B7
}
void main()
{
trisb=0x01;
//B0 como entrada, el resto de pines como
salida
output_high(PIN_B7);
enable_interrupts(INT_EXT); //Habilitacin interrupcin RB0 (Pone INTE
(INTCON<4>) a 1)
ext_int_edge(L_TO_H);
//Activado por flanco de subida (Pone INTEDG
(OPTION_REG<6>) a 1)
enable_interrupts(GLOBAL); //Habilitacin general
while(TRUE)
//Bucle infinito
{
Tabla 1