Upload
xeleta
View
1.477
Download
1
Embed Size (px)
DESCRIPTION
Interrupciones
Citation preview
OSC1/CLKIN16
RB0/INT6
RB17
RB28
RB39
RB410
RB511
RB612
RB713
RA017
RA118
RA21
RA32
RA4/T0CKI3
OSC2/CLKOUT15
MCLR4
U1
PIC16F84A
R110K
R3330
D1LED-RED
R210K
R010K
R4330
D2LED-RED
INTERRUPCIONindicador de pulsador
INTERRUPCION
PULSADOR
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.
OS
C1
/CL
KIN
16
RB
0/IN
T6
RB
17
RB
28
RB
39
RB
410
RB
511
RB
612
RB
713
RA
017
RA
118
RA
21
RA
32
RA
4/T
0C
KI
3
OS
C2
/CL
KO
UT
15
MC
LR4
U1
PIC
16
F8
4A
R1
10K
R2
10K
R0
10K
R4
330 D
2L
ED
-RE
D
R5
10K
R6
10K
R7
10K
R8
330 D
3L
ED
-RE
D
R9
330 D
4L
ED
-RE
D
R10
330 D
5L
ED
-RE
D
R11
330 D
6L
ED
-RE
D
PU
ER
TA
1P
UE
RT
A2
PU
ER
TA
3P
UE
RT
A4
AL
AR
MA
IND
ICA
DO
R P
UE
RT
A 1
IND
ICA
DO
R P
UE
RT
A 2
IND
ICA
DO
R P
UE
RT
A 3
IND
ICA
DO
R P
UE
RT
A 4C
ON
TR
OL
EN
CE
ND
IDO
AL
AR
MA
Programa
LIST P = PIC16F84AINCLUDE "P16F84A.INC"INCLUDE "MACRO.INC"
ORG 0X00GOTOINICIOORG 0X04GOTORUTSERVORG 0X05
INICIO
Programas adicionales:1.-Diseñar un circuito que active una alarma cuando se abre la puerta de un carro.
LIST P = PIC16F84AINCLUDE "P16F84A.INC"INCLUDE "MACRO.INC"
ORG 0X00GOTOINICIOORG 0X04GOTORUTSERVORG 0X05
INICIO BANK1MOVLW B'00000001'MOVWF TRISBMOVLW B'11111111'MOVWF TRISAMOVLW B'10010000'MOVWF INTCONBCF OPTION_REG,INTEDGBANK0
CLRF PORTB OTRO BTFSC PORTA,3
GOTOAPAGABSF PORTB,3
BSF PORTB,7 GOTO OTRO1
APAGA BCF PORTB,3GOTOOTRO1
OTRO1 BTFSC PORTA,2GOTOAPAGA1BSF PORTB,2
BSF PORTB,7GOTOOTRO2
APAGA1 BCF PORTB,2GOTOOTRO2
OTRO2 BTFSC PORTA,4
GOTOAPAGA2BSF PORTB,4
BSF PORTB,7GOTOOTRO3
APAGA2 BCF PORTB,4GOTOOTRO3
RETFIE
END
2.-Diseñar un circuito que active una alarma cuando se abre la puerta de un carro.Adicionalmente diseñar un circuito que active un led el cual simboliza la puerta que se activo antes que se apague la alarma.La duración del encendido del led debe ser de 5 segundosUtilizar memorias EEprom.LIST P=PIC16F84A
include "P16F84.inc"cblock 0X0C LOOPSLOOPS2DATOCUENTADatREG1
REG2REG3reg5reg6 ENDC
ORG 0X00 GOTO INICIO ORG 0X04 REGRE BTFSS INTCON,0 GOTO A GOTO INTER A 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 call lectura call timer clrf PORTA clrf PORTB
DUERME nop GOTO DUERME INTER
CALL RETARDO BCF INTCON,0 MOVF PORTB,0
BUCLE CALL RETARDO BCF PORTB,1
BCF INTCON,1
RETFIE
lectura
bcf PORTB,1movlw .1 ;movwf EEADR bsf STATUS,5 bsf EECON1,0 bcf STATUS,5 movf EEDATA,0 movwf PORTAreturn
escriturabsf INTCON,7 bcf STATUS,5 return
RETARDOMOVLW .100 MOVWF LOOPS
TOP2 MOVLW .110
MOVWF LOOPS2TOP NOP
NOPNOPNOPNOPNOPDECFSZ LOOPS2GOTO TOPDECFSZ LOOPSGOTO TOP2RETLW 0
timer MOVLW 0X100 MOVWF REG1 L3 MOVLW 0X50 MOVWF REG2 L2 MOVLW 0X20 DECFSZ REG1 GOTO L3 RETURN
END
CUESTIONARIO1.-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 push buttom oculto esto desactivara la alarma.
LIST P=PIC16F84A
include "P16F84.inc"cblock 0X0C LOOPSLOOPS2DATOCUENTADatREG1REG2REG3reg5reg6 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
BTFSC STATUS,2 GOTO APAGA btfss PORTB,1 call timer BSF PORTB,1 RETFIEAPAGA 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.ESCRITURABCF STATUS,RP0 ; Selecciona el banco 0
; Establecer EEADR y EEDATAMOVLW MEN1MOVWF EEADR ; Escribe la dirección en EEADRMOVLW DATO1MOVWF EEDATA ; Se escribe el dato en EEDATA BSF STATUS,RP0 ; Selecciona el banco 1BSF 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 una memoria 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
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