El MPLAB II - IES Antonio Machado

Anuncio
TEMA 19
INTERRUPCIÓN
POR CAMBIO DE
NIVEL EN RB4:RB7
INTRODUCCIÓN
Seguidamente comenzamos el estudio de la interrupción por
cambio de nivel en cualquiera de los pines RB4-RB7.
Para ello, realizaremos un sencillo ejercicio, en el cual
detectaremos esta interrupción y además comprobaremos
cual es el bit que ha modificado su nivel.
El circuito que deberemos construir es:
CCFF D.P.E. MÓDULO DE PROYECTOS
2
C1
27pF
X1
16
15
4
OS C1/CLKIN
OS C2/CLKOUT
MCLR
27pF
17
18
1
2
3
RA 0
RA 1
RA 2
RA 3
RA4/T 0CKI
6
7
8
9
10
11
12
13
RB0/INT
RB 1
RB 2
RB 3
RB 4
RB 5
RB 6
RB 7
10k
390R
B4
B5
B6
B7
PIC16F84A
B4
B5
100
R3
B4
B5
RESET
B6
B7
10k
10k
B6
C2
4MHz
B7
CCFF D.P.E. MÓDULO DE PROYECTOS
3
El programa (principal) que se ejecutará en modo
continuo será presentar un barrido sobre los 4 leds
conectados al PUERTO A, y con una cadencia de 0,3
segundos.
Cuando se active cualquiera de los pulsadores
conectados desde RB4 a RB7, se debe producir una
interrupción, por cambio de nivel.
Las acciones que se ejecutarán dentro de la rutina de
atención a esta interrupción serán:
Encendemos el led conectado al pin B0 (puertoB).
Mostramos 0 en los leds conectados al puerto A ,
Esperamos 2 segundos en esta situación
Apagamos el bit indicador de interupción activada.
Retornamos al programa principal.
CCFF D.P.E. MÓDULO DE PROYECTOS
4
Mediante PIC Wizar comenzamos a definir nuestro
proyecto: Tipo de procesador, perro guardián
desactivado, frecuencia de funcionamiento, etc..
posteriormente picamos sobre Interrupts
CCFF D.P.E. MÓDULO DE PROYECTOS
5
En esta nueva pantalla habilitamos la interrupción por
cambio de nivel en RB4:RB7 y visualizamos el código
que se genera:
CCFF D.P.E. MÓDULO DE PROYECTOS
6
Una vez que validamos mediante OK, vemos en la zona
de edición el código ya generado por el propio
compilador:
Esta línea la eliminaremos
CCFF D.P.E. MÓDULO DE PROYECTOS
7
CCFF D.P.E. MÓDULO DE PROYECTOS
8
CCFF D.P.E. MÓDULO DE PROYECTOS
9
Simulación mediante MPLAB
CCFF D.P.E. MÓDULO DE PROYECTOS
10
Simulación mediante MPLAB
CCFF D.P.E. MÓDULO DE PROYECTOS
11
Simulación mediante MPLAB, generamos una interrupción: el puerto A pasa a
valer 0h y RB0 pasa a valer 1
CCFF D.P.E. MÓDULO DE PROYECTOS
12
Simulación mediante PROTEUS: ejecución del programa principal:
CCFF D.P.E. MÓDULO DE PROYECTOS
13
Simulación mediante PROTEUS: ejecución del programa principal:
CCFF D.P.E. MÓDULO DE PROYECTOS
14
Simulación mediante PROTEUS: Rutina de atención a la interrupción RB0
activado (1) y puerto A a 0h:
CCFF D.P.E. MÓDULO DE PROYECTOS
15
Simulación mediante PROTEUS:
desplazamientos a izquierdas
ejecución
del
programa
CCFF D.P.E. MÓDULO DE PROYECTOS
principal,
16
Simulación mediante PROTEUS:
desplazamientos a derechas
ejecución
del
programa
CCFF D.P.E. MÓDULO DE PROYECTOS
principal,
17
Simulación mediante PROTEUS, ejecución de la subrutina de interrupciones:
CCFF D.P.E. MÓDULO DE PROYECTOS
18
Simulación mediante PROTEUS, ejecución de la subrutina de interrupciones:
CCFF D.P.E. MÓDULO DE PROYECTOS
19
En el ejercicio que acabamos de realizar, cada vez que
accionamos el pulsador solo se produce una interrupción,
esto es debido a que el tiempo que lo mantenemos
pulsado es inferior a los 2 segundos de retardo que
hemos introducido el la rutina de atención a las
interrupciones.
Sobre el circuito de Proteus, si hacemos que el pulsador
esté presionado dure mas de 2 segundos, y cuando se
haya retornado al programa principal soltamos el
button, comprobaremos que se salta otra vez a la rutina
de interrupciones, esto es debido a que realmente se
producen dos cambios de nivel, uno cuando pulsamos (el
pin lo forzamos a valer 0) y otra al soltarlo, en que pasa a
valer 1 (estado de reposo). Tenga esto en cuenta para
posibles aplicaciones.
CCFF D.P.E. MÓDULO DE PROYECTOS
20
Descargar