Universidad Antonio Nariño
Aplicación Industrial de Micros
Código: 444405
CAPITULO
4
Experimentos introductorios
4.3 Servicio
de interrupción
Objetivos:
-
Encender y apagar un LED como respuesta a un estímulo de interrupción
-
Determinar la forma en que debe colocarse el código en el programa
fuente para aceptar y atender una rutina de interrupción
Procedimiento:
Para ejemplificar el uso de un servicio de interrupción se ha
dispuesto el hardware de la figura 4.3.1 en el cual se decide utilizar
la interrupción externa INT (RB0) en un PIC16F84,
esta interrupción está vectorizada a la dirección
de memoria de programa 004h, dentro de la atención a esta interrupción
se opta por complementar el estado del LED colocado al puerto RA0 cada
vez que esta sea atendida.
Diagrama eléctrico:
FIG. 4.3.1 Hardware para ejemplo de interrupción
Diagrama de flujo:
FIG. 4.3.2 Diagrama de flujo para acción de interrupción
Listado del programa en assembler:
;Programa para realizar el apagado y encendido
de un LED colocado en el ;Puerto A0 basado en la interrupción externa
INT (RB0)
;
list p=16F84
status equ 0x03
porta equ 0x05
portb equ 0x06
intcon equ 0x0B
optionr equ 0x81
trisa equ 0x85
trisb equ 0x86
#define LED porta,0
#define BANK1 bsf status,5
#define BANK0 bcf status,5
org
000h ;Indica al ensamblador la
dirección de memoria de
;la sig. instrucción
goto Inicio
org
004h ;Indica al ensamblador la
dirección de memoria de
;la sig. instrucción
Interrupcion
btfss intcon,1 ;es
interrupción INT?
retfie
;retorna de interrupción y GIE=1
btfsc porta,0
;probar estado actual del LED
goto Prender
;va a encender el LED
Apagar
bsf porta,0
;apaga el LED
goto Espera
Prender
bcf porta,0
;enciende el LED
Espera
btfss portb,0
;espera a que se suelte el pulsador
goto Espera
bcf intcon,1
;borra bandera INT
retfie
;retorna de interrupción y GIE=1
;Programa principal
Inicio
BANK1
;selección del banco 1
bcf trisa,0
;selecciona porta,0 como salida
BANK0
;selección de banco 0
bsf porta,0
;apagar LED
;programación de interrupción
bsf intcon,4
;activar interrupción INT
BANK1
;selección banco 1
bcf optionr,6
;selección del flanco de bajada en el pin
INT
BANK0
bsf intcon,7
;Habilitar interrupciones globales
goto $
;queda a la espera de interrupción
end
El símbolo $ significa la dirección
de memoria de programa en donde se encuentra éste (ciclo infinito
de espera)
Debe notarse la ubicación de la rutina de interrupción
a partir de la posición de memoria de programa 004h.
índice de capítulo