13
O SC1/C LKIN 16 RB0/INT 6 RB1 7 RB2 8 RB3 9 RB4 10 RB5 11 RB6 12 RB7 13 RA0 17 RA1 18 RA2 1 RA3 2 R A4/T0C KI 3 O S C 2/C LKO U T 15 M C LR 4 U1 PIC 16F84A R1 10K R3 330 D1 LE D -RED R2 10K R0 10K R4 330 D2 LED -RED IN TER R U PC IO N indicadorde pulsador IN TER R U PC IO N 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.

Interrupciones

  • Upload
    xeleta

  • View
    1.477

  • Download
    1

Embed Size (px)

DESCRIPTION

Interrupciones

Citation preview

Page 1: Interrupciones

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.

Page 2: Interrupciones

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.

Page 3: Interrupciones

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

Page 4: Interrupciones

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

Page 5: Interrupciones

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

Page 6: Interrupciones

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

Page 7: Interrupciones

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.

Page 8: Interrupciones

LIST P=PIC16F84A

Page 9: Interrupciones

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

Page 10: Interrupciones

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

Page 11: Interrupciones

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