Вы находитесь на странице: 1из 4

Laboratorio de Microcontroladores F.I.M.E.E.

UNIVERSIDAD DE GUANAJUATO

F. I. M. E. E.

Laboratorio de Microcontroladores
Práctica de Laboratorio No. 2:

Manejo de interrupción externa

Gustavo Cerda Villafaña, Sergio Ledesma Orozco, Miguel Torres Cisneros


Laboratorio de Microcontroladores F.I.M.E.E.

Práctica de Laboratorio No. 2

MANEJO DE INTERRUPCIÓN EXTERNA

Objetivo:
Programar el microcontrolador para que acepte una interrupción externa analizando el uso de la pila.

Componentes:
1 Microcontrolador PIC 16f873 o 16F877
8 LEDS
8 resistores de 220Ω
1 resistor menor a 40KΩ
1 resistor mayor a 1KΩ
1 capacitor electrolítico de cualquier valor
1 cristal 4MHz
2 Capacitores cerámicos 15-68pF

Equipo:
1 Fuente de +5V
1 Punta lógica
1 Multímetro
1 Plantilla

1.1 Introducción.
El microcontrolador PIC16F87X tiene un máximo de 15 interrupciones. Las interrupciones son llamadas
asíncronas a subrutinas que desvían el flujo del control del programa. Pueden ser externas como el cambio de
estado de un pin de entrada o internas como el desbordamiento de un temporizador. Al ejecutarse una
interrupción se detiene la ejecución del programa en curso, se guarda la dirección actual del contador de
programa en la pila y se carga el contador con la dirección reservada 0004H, donde comienza la rutina de servicio
a la interrupción (RSI).

La interrupción que se utilizará en esta práctica es una externa a través del pin 0 del puerto B. Consulte en la hoja
de datos del PIC la configuración de las interrupciones mediante el registro INTCON.

1.2 Desarrollo.

A. Se programa el PIC con el siguiente código en ensamblador (en caso de duda de cómo hacerlo consulte la
Práctica No. 1)

; Programa interrupción por pin 0 de puerto B

LIST P = 16f873
#include <p16f873.inc> ; Archivo que define configuraciones,
; registros, etc. para el PIC 16F873
AUX1 EQU 0x20
AUX2 EQU 0x21
AUX3 EQU 0x22
AUX4 EQU 0x23

goto startup ; Va al inicio del programa

Gustavo Cerda Villafaña, Sergio Ledesma Orozco, Miguel Torres Cisneros


Laboratorio de Microcontroladores F.I.M.E.E.

ORG 0X04 ; Define la sig. línea en la dirección 0004H


goto inter ; Va a inter después de una interrupción

startup
movlw 0x90
movwf INTCON ; Habilita la interrupción del pin RB0
bsf STATUS,RP0 ; Establece a 1 el bit 5
clrf TRISC ; Puerto C como salidas
movlw 0xFF
movwf TRISB ; Puerto B como entradas
bcf STATUS,RP0 ; Establece a 1 el bit 5

ciclo
btfsc PORTB,1 ; Si bit 1 = 1 entonces resetea el contador
clrf AUX1
incf AUX1,1 ; Incrementa el contador
movf AUX1,W ; W <= AUX1
movwf PORTC ; W => PORTC. El valor de W sale por las líneas
; de Puerto C a los LEDs
call retardo ; Llama subrutina de retardo
goto ciclo ; Se salta a la instrucción precedida por la
; etiqueta ciclo

;********* SUBRUTINA DE INTERRUPCIÓN *******************


inter
movlw 0x0A
movwf AUX4
iciclo
decfsz AUX4,F
goto twinkle
bcf INTCON,1 ; Limpia la bandera de interrupción externa
retfie ; Esta instrucción regresa la última dirección
; de la pila al contador de programa
twinkle
movlw 0xFF ; Esta subrutina hace que los LEDs conectados
movwf PORTC ; al puerto C prendan y apaguen 10 veces
call retardo
clrf PORTC
call retardo
goto iciclo

;********* SUBRUTINA DE RETARDO ************************


;Esta rutina se utiliza como un divisor de frecuencia
retardo
movlw 0xff
movwf AUX2
one
call retardo2
decfsz AUX2,1
goto one
return

retardo2
movlw 0xff
movwf AUX3

Gustavo Cerda Villafaña, Sergio Ledesma Orozco, Miguel Torres Cisneros


Laboratorio de Microcontroladores F.I.M.E.E.

two
decfsz AUX3,1
goto two
return
END

B. Ya que se haya programado el PIC, este se coloca en la plantilla de trabajo y se conectará de acuerdo con el
siguiente diagrama que es para el PIC16F873. Si utiliza el PIC16F877 cambie los pines de acuerdo al diagrama
correspondiente en la hoja de datos. Tenga cuidado al manejar el PIC de no dañarlo con electricidad estática
(utilizar pinzas para su manejo). El voltaje que se utilizará es de 5V para VDD y 0V para VSS.

DD

R1
R2
1 28
C1 2 27

3 26
4 25
5 24
6 23
7 22
C2
8 21
9 20
XTAL
10 19

PUERTO C
SALIDAS

11 18
C3 17
12
13 16
14 15

Los valores para los componentes descritos en la figura se dan en la siguiente tabla:

Símbolo Valor Min Valor Max


VDD 5V 5V
R1 - 40KΩ
R2 1KΩ -
C1 ND ND
C2 15pF 68pF
C3 15pF 68pF

Las resistencias R1, R2 y el capacitor C1 son recomendados por el fabricante para evitar que voltajes fuera de
rango lleven el dispositivo a reinicios o consumos de energía más allá de los especificados para el dispositivo.

1.3 Ejercicios
1. Determine en que flanco se realiza la interrupción ¿es de 0 a 1 o de 1 a 0? Consulte en la hoja de datos el
registro OPTION y modifique su código para que la interrupción se lleve a cabo en el flanco contrario al que se
realiza por default. Reporte el código necesario para realizar este cambio.

2. Exprese con sus propias palabras el funcionamiento del bit 1 del registro INTCON ¿Cuál será su utilidad?

3. Enumere al menos otras 5 interrupciones con que cuenta el PIC16F87X.

Gustavo Cerda Villafaña, Sergio Ledesma Orozco, Miguel Torres Cisneros

Вам также может понравиться