El documento describe un programa para enseñar el concepto de interrupciones externas usando un pulsador conectado al pin INT del PIC16F84A. Cuando se presiona el pulsador, se genera una interrupción externa que cambia el estado de un LED conectado a RB7. El programa principal muestra el estado de un interruptor en RA3 a través de un LED en RB3. Adicionalmente, se proponen dos programas: 1) diseñar un circuito para activar una alarma cuando se abre la puerta de un auto y 2) diseñar un circuito para activar una
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
Interrupciones
1. INTERRUPCIONES
OBJETIVOS:
Enseñar el concepto de interrupciones y manejar la interrupción externa cada vez
que se presente en forma totalmente aleatoria.
Parte experimental:
Se requiere usar la interrupción externa a través del pin INT por donde se ingresa
un pulso provocara una interrupción que será indicada por un cambio de RB7
conectado a un led. En el programa principal el estado de un interruptor en RA3
será mostrado pro un led en RB3.
R1
10K
R2
10K
U1
16 17
OSC1/CLKIN RA0
15 18
OSC2/CLKOUT RA1 INTERRUPCION
R0 RA2
1
10K 4 2
MCLR RA3
3
PULSADOR
RA4/T0CKI
6
RB0/INT
7
RB1
8
RB2
9
RB3
10
RB4
11
RB5
12
RB6
13
RB7
PIC16F84A
R3
330 R4
330
D1
LED-RED D2
LED-RED
INTERRUPCION
indicador de pulsador
2. Programa
LIST P = PIC16F84A
INCLUDE "P16F84A.INC"
INCLUDE "MACRO.INC"
ORG 0X00
GOTOINICIO
ORG 0X04
GOTORUTSERV
ORG 0X05
INICIO
Programas adicionales:
1.-Diseñar un circuito que active una alarma cuando se abre lapuerta de un
carro. CONTROL ENCENDIDO ALARMA
INDICADOR PUERTA 4
R2
10K
LED-RED
D5
R10
PUERTA4
330
INDICADOR PUERTA 3
R7
10K
LED-RED
D4
R6
R9
10K
330
PUERTA3
INDICADOR PUERTA 2
R5
10K
LED-RED
D3
PUERTA2
R8
330
INDICADOR PUERTA 1
LED-RED
R1
10K
D2
R4
330
PUERTA 1
4. GOTOAPAGA2
BSF PORTB,4
BSF PORTB,7
GOTOOTRO3
APAGA2 BCF PORTB,4
GOTOOTRO3
RETFIE
END
2.-Diseñar un circuito que active una alarma cuando se abre lapuerta de un
carro.
Adicionalmente diseñar un circuito que active unledel cual simboliza la
puerta que se activo antes que se apague la alarma.
La duración del encendido del led debe ser de 5 segundos
UtilizarmemoriasEEprom.
LIST P=PIC16F84A
include "P16F84.inc"
cblock 0X0C
LOOPS
LOOPS2
DATO
CUENTA
Dat
REG1
7. MOVWF LOOPS2
TOP NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ LOOPS2
GOTO TOP
DECFSZ LOOPS
GOTO TOP2
RETLW 0
timer
MOVLW 0X100
MOVWF REG1
L3 MOVLW 0X50
MOVWF REG2
L2 MOVLW 0X20
DECFSZ REG1
GOTO L3
RETURN
END
CUESTIONARIO
1.-Como realizaría una alarma para automóvil usando interrupciones con
sensores en las 04 puertas, además el tiempo que tiene el chofer después de
ingresar al carro es de 10 segundos para presionar un pushbuttom oculto
esto desactivara la alarma.
9. include "P16F84.inc"
cblock 0X0C
LOOPS
LOOPS2
DATO
CUENTA
Dat
REG1
REG2
REG3
reg5
reg6
ENDC
ORG 0X00
GOTO INICIO
ORG 0X04
REGRE BTFSS INTCON,0
GOTO X
GOTO INTER
X BTFSS INTCON,1
GOTO REGRE
GOTO BUCLE
INICIO BSF STATUS,5
MOVLW b'11110001'
MOVWF TRISB
MOVLW B'00000'
MOVWF TRISA
MOVLW B'11011000'
MOVWF INTCON
BCF OPTION_REG,6
BCF STATUS,5
clrf PORTA
clrf PORTB
XORLW .0
10. BTFSC STATUS,2
GOTO APAGA
btfss PORTB,1
call timer
BSF PORTB,1
RETFIE
APAGA CALL timer
CALL timer
BCF PORTB,1
BCF INTCON,1
RETFIE
2.-Realice un programa que provoque una interrupción por uso de la
memoria EEPROM.
ESCRITURA BCF STATUS,RP0 ; Selecciona el banco 0
; Establecer EEADR y EEDATA
MOVLW MEN1
MOVWF EEADR ; Escribe la dirección en EEADR
MOVLW DATO1
MOVWF EEDATA ; Se escribe el dato en EEDATA
BSF STATUS,RP0 ; Selecciona el banco 1
BSF EECON1,WREN ; Permiso de escritura activado
BCF STATUS,R0 ; Selecciona el banco 0
3.- ¿Es posible guardar datos en la memoria Flash de programa?
Si es posible guardar pero al ser unamemoria considerada volátil la información
se borrara una vez que se reinicie el circuito.
4.-Explique como podría usar mas de una fuente de interrupciones en el
programa
11. La activación de un pin, producido por un flanco de tensión en el pin 6
(RB0/INT)
Cuando se desborda el temporizador TMR1(su contenido pasa de FFh a
00h)
Cuando Cambia el estado lógico de cualquiera de los 04 pines de mas peso
del puerto B (RB7:RB0)
Cuando finaliza el ciclo de escritura de un Byte en una posición de la
EEPROM de datos