Escolar Documentos
Profissional Documentos
Cultura Documentos
MICROCONTROLADORES
ING. GENARO ALFREDO ALCZAR MARN
Programa
Principal
Interrupcin
Fin
Proceso X
(Subrutina de atencin
a la interrupcin).
Por ejemplo, los registros y bits involucrados para configurar la interrupcin externa
INT, se muestran a continuacin:
1. Se salva el valor actual del contador de programa (PC), guardando el valor del mismo,
en un espacio de memoria del microcontrolador destinado para ello.
2. El bit GIE (Global Interrupt Enable, bit 7 registro INTCON) es puesto a 0, lo que
prohbe que ocurra cualquier otra interrupcin.
3. El PC se carga con el valor 0x04, que es la posicin del vector de interrupcin.
4. Comienza a ejecutarse el programa de atencin a la interrupcin que se encuentra a
partir de la direccin 0x04.
Ejemplo 1: Utilizando el PIC16F84A (con un oscilador de cristal de cuarzo de 4MHz),
tratar de encender/apagar un LED conectado en el pin RB1 del microcontrolador; para
ello, habilite la interrupcin externa del pin RB0/INT y mediante un Push-Button N. A.
conectado a RB0, realice la transicin de encendido/apagado y viceversa del LED (la
interrupcin puede ocurrir de 0(H) a 1(L) o viceversa).
A continuacin, se muestra el diagrama electrnico propuesto para el ejemplo 1:
C1
GND
C2
22p
22p
X1
VCC
CRYSTAL
FREQ=4MHz
U1
16
15
4
OSC1/CLKIN
OSC2/CLKOUT
RA0
RA1
RA2
RA3
RA4/T0CKI
MCLR
VCC
RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7
R1
10k
17
18
1
2
3
R2
10k
6
7
8
9
10
11
12
13
R3
220R
PIC16F84A
D1
LED-GREEN
GND
GND
GND
Por otra parte, se muestra el diagrama de flujo propuesto para el ejemplo anterior:
Inicio
Accesar al banco 1.
Subrutina que se
ejecuta cuando ocurre
la interrupcin
externa.
El LED est
encendido?
SI
Apagar LED
NO
Encender el LED
Accesar al banco 0.
Cargar el registro INTCON
con el valor binario 10010000
(Habilita la interrupcin
externa y la declara como
global).
Salir de la subrutina
(instruccin RETFIE)
Fin
F(Oscilador/Cristal)
4,000,000 Hz
Demora de cada instruccin =
=
= 1 s
4
4
El Timer 0 est configurado para incrementarse una unidad cada 1 s, cuenta del 0 al
255 y ocurre la interrupcin TMR0, cada vez que ocurre la interrupcin, la variable
CONTADOR se decrementa en una unidad (previamente ha sido cargada con el valor 2 en
decimal), cuando el contador llega a 0 se enciende o apaga el LED y la variable CONTADOR
vuelve a cargarse con un 2 en decimal.
Duracin del encendido o apagado del LED = 2(255 s)(CONTADOR) = 2(255s)(2) = 1.02ms
El cdigo en lenguaje ensamblador (se compila con el MPLABX) y el diagrama del
ejemplo 1, pueden ser descargados en el siguiente link:
http://www.mediafire.com/download/o3o0rsc4bhho23r/Ejemplo_2.rar
Referencias bibliogrficas:
PALACIOS,
Enrique.,
REMIRO,
Fernando
y
LPEZ,
J.
Lucas.
MICROCONTROLADOR PIC16F84: Desarrollo de proyectos. 3ra. Edicin, Mxico:
Editorial Alfaomega, Junio 2009.
Referencias digitales:
- Data-Sheet PIC16F84A, Microchip Technology Inc. (Ingls, E.U.) [En lnea]
<http://ww1.microchip.com/downloads/en/DeviceDoc/35007b.pdf>
ltimo acceso: 21/Febrero/2015.
- EL REGISTRO TMR0, un registro especial. GARCA, V. (Espaol) [En lnea]
<http://www.hispavila.com/3ds/chipspic/tmr0.html>
ltimo acceso: 21/Febrero/2015.
10