Vous êtes sur la page 1sur 47

Interrupciones

Fuentes de Interrupciones para el PIC16F874/877

Interrupcin externa a travs del pin RB0/INT

Interrupcin por cambio de nivel en IOC

Interrupcin por escritura en la EEPROM

Interrupcin por desbordamiento del TMR0

Interrupcin por desbordamiento del TMR1

Interrupcin por desbordamiento del TMR2

Interrupcin por el modulo CCP1

Interrupcin por el modulo CCP2

Interrupcin por disparo de puerta del TMR1

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
Fuentes de Interrupciones para el PIC16F874/877

Interrupcin por transferencia en el modulo MSSP

Interrupcin por colisin en el bus del modulo MSSP

Interrupcin por Tx en el modulo USART

Interrupcin por Rx en el modulo USART

Interrupcin por fin de conversin en el ADC

Interrupcin por Falla en el oscilador

Interrupcin por Comparador 1

Interrupcin por Comparador 2

UNEXPO Pto. Ordaz.

Prof. Antonio Pateti

MICROPROCESADORES

Interrupciones
Fuentes de Interrupciones para el PIC16F874/877

Interrupcin por Comparador 3

Interrupcin por Comparador 4

Interrupcin por Base de Tiempo PSMC1

Interrupcin por Base de Tiempo PSMC2

Interrupcin por Base de Tiempo PSMC3

Interrupcin por Auto-Shutdown PSMC1

Interrupcin por Auto-Shutdown PSMC2

Interrupcin por Auto-Shutdown PSMC3

Interrupcin por el modulo CCP3

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
Como se atiende una Interrupcin

PILA
Dir_04

Programa
Principal
Dir_01
Dir_02
Dir_03
Dir_04
Dir_05
Dir_SUMA
Dir_07
Dir_08
Dir_09

UNEXPO Pto. Ordaz.

BSF
03,5
BCF
03,6
MOVF 3F,0
CALL SUMA
GOTO 000h
BCF
03,5
BSF
03,6
ADDWF 5A,1
RETURN

Sub-Rut
Interrupcin

RETFIE

MICROPROCESADORES

Interrupciones
Fuentes de Interrupciones a estudiar

UNEXPO Pto. Ordaz.

Interrupcin externa a
travs del pin RB0/INT

MICROPROCESADORES

Interrupciones
IOCEP
IOCEN
IOCEF

Fuentes de Interrupciones a estudiar

IOCAP
IOCAN
IOCAF

IOCBP
IOCBN
IOCBF

Interrupcin por
cambio de nivel

IOCCP
IOCCN
IOCCF

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
Registros del rea SFR que se utilizan con las Interrupciones

INTCON

OPTION_REG

PIE1

PIR1

PIE2

PIR2

PIE3

PIR3

PIE4
PIR4

ICOxx

UNEXPO Pto. Ordaz.

Solo para INT/RB0

Solo para Cambio de Nivel


MICROPROCESADORES

Interrupciones
Banco 0
000h

Banco 1
080h

Registros de Nucleo

00Bh

08Bh

Registros de Nucleo

Banco 7
380h
38Bh

Registros de Ncleo

00Ch

PORTA

08Ch

TRISA

38Ch

00Dh

PORTB

08Dh

TRISB

38Dh

INLVLB

00Eh

PORTC

08Eh

TRISC

38Eh

INLVLC

00Fh

PORTD

08Fh

TRISD

38Fh

INLVLD

010h

PORTE

090h

TRISE

390h

INLVLE

011h

PIR1

091h

PIE1

391h

IOCAP

012h

PIR2

092h

PIE2

392h

IOCAN

013h

PIR3

093h

PIE3

393h

IOCAF

014h

PIR4

094h

PIE4

394h

IOCBP

015h

TMR0

095h

OPTION_REG

395h

IOCBN

016h

TMR1L

096h

PCON

396h

IOCBF

017h

TMR1H

097h

WDTCON

397h

IOCCP

018h

T1CON

098h

OSCTUNE

398h

IOCCN

019h

T1GCON

099h

OSCCON

399h

IOCCF

01Ah

TMR2

09Ah

OSCSTAT

39Ah

01Bh

PR2

09Bh

ADRESL

39Bh

01Ch

T2CON

09Ch

ADRESH

39Ch

01Dh

09Dh

ADCON0

39Dh

IOCEP

01Eh

09Eh

ADCON1

39Eh

IOCEN

01Fh

09Fh

ADCON2

39Fh

IOCEF

020h

0A0h
Registros de proposito general
80 Bytes

3A0h
Registros de proposito
general 80 bytes

Registros de proposito
general 80 Bytes

06Fh

0EFh

3EFh

070h

0F0h

3F0h

RAM COMUN 70h 7Fh


07Fh

RAM COMUN 70h - 7fH

RAM COMUN 70h 7Fh


07Fh

INLVLA

3FFh

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
00H
0BH

Registros de Ncleo 12 bytes

0CH

1FH

Registros de funciones
especiales 20 bytes mximo

20H

RAM de propsito general (80


bytes mximo)

INDF0
INDF1
PCL
STATUS
FSR0L
FSR0H
FSR1L
FSR1H
BSR
WREG
PCLATH
INTCON

6FH
70H
RAM comn (16 bytes)
7FH

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE CONTROL DE INTERRUPCION: INTCON
Bit 7

GIE

Bit 0

PEIE

TMR0IE

INTE

IOCIE

TMR0IF

INTF

IOCIF

GIE: Bit de habilitacin global de interrupcin


1 = Habilita todas las interrupciones para activadas de forma individual
0 = Desactiva todas las interrupciones
PEIE: Bit de habilitacin de interrupciones no controlador por INTCON
1 = Habilita todas las interrupciones perifricas para activadas de forma individual
0 = Desactiva todas las interrupciones perifricas
TMR0IE: Bit de habilitacin del Timer0 por desbordamiento

1 = Habilita la interrupcin Timer0


0 = Deshabilita la interrupcin Timer0
INTE: Bit de habilitacin de la interrupcin externa INT
1 = Habilita la interrupcin externa INT
0 = Deshabilita la interrupcin externa INT
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE CONTROL DE INTERRUPCION: INTCON
Bit 7

GIE

Bit 0

PEIE

TMR0IE

INTE

IOCIE

TMR0IF

INTF

IOCIF

IOCIE: Bit de habilitacin de interrupcin por cambio de nivel


1 = Habilita interrupcin por cambio de nivel
0 = Desactiva interrupcin por cambio de nivel
TMR0IF: Bandera de sealizacin de interrupcin por desbordamiento del Timer0
1 = TMR0 se ha desbordado
0 = TMR0 no se ha desbordado
INTF: Bandera de sealizacin de interrupcin por INT externa

1 = Se produjo la interrupcin externa INT


0 = No se produjo la interrupcin externa INT
IOCIF: Bandera de sealizacin de interrupcin por cambio de nivel (1)
1 = Uno de los pines de interrupcin por cambio de nivel ha cambiado de estado
0 = Ninguno de los pines de interrupcin por cambio de nivel han cambiado de estado
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO OPCION : OPTION_REG
Bit 7

WPUEN

Bit 0

INTEDG

TMR0CS

TMR0SE

PSA

PS<2,0>

INTEDG: Flanco activo de la Interrupcin Externa.


0: Flanco Descendente.

1: Flanco Ascendente.

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE HABILITACION DE INTERRUPCION DE PERIFERICOS 1: PIE1
Bit 7

TMR1GIE

Bit 0

ADIE

RCIE

TXIE

SSP1IE

CCP1IE

TMR2IE

TMR1IE

TMR1GIE: Bit de habilitacin de interrupcin por disparo de puerta del Timer1


1 = Habilita la interrupcin por disparo de puerta del Timer1
0 = Deshabilita la interrupcin por disparo de puerta del Timer1
ADIE: Bit de habilitacin de interrupcin por conversin analgico a digital
1 = Habilita la interrupcin por conversin analgico a digital
0 = Deshabilita la interrupcin por conversin analgico a digital
RCIE: Bit de habilitacin de interrupcin por recepcin en el USART

1 = Habilita la interrupcin por recepcin en el USART


0 = Deshabilita la interrupcin por recepcin en el USART
TXIE: Bit de habilitacin de interrupcin por transmisin en el USART
1 = Habilita la interrupcin por transmisin en el USART
0 = Deshabilita la interrupcin por transmisin en el USART
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE HABILITACION DE INTERRUPCION DE PERIFERICOS 1: PIE1
Bit 7

TMR1GIE

Bit 0

ADIE

RCIE

TXIE

SSP1IE

CCP1IE

TMR2IE

TMR1IE

SSP1IE: Bit de habilitacin de interrupcin por transferencia en el puerto serial sncrono (MSSP)
1 = Habilita la interrupcin por transferencia en el puerto serial sncrono (MSSP)
0 = Deshabilita la interrupcin por transferencia en el puerto serial sncrono (MSSP)
CCP1IE: Bit de habilitacin de interrupcin del CCP1
1 = Habilita la interrupcin del CCP1
0 = Deshabilita la interrupcin del CCP1
TMR2IE: Bit de habilitacin de interrupcin al igualarse TMR2 con PR2

1 = Habilita la interrupcin al igualarse TMR2 con PR2


0 = Dehabilita la interrupcin al igualarse TMR2 con PR2
TMR1IE: Bit de habilitacin de interrupcin al desbordarse el Timer1
1 = Habilita la interrupcin de desbordamiento Timer1
0 = Deshabilita la interrupcin de desbordamiento Timer1
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE HABILITACION DE INTERRUPCION DE PERIFERICOS 2: PIE2
Bit 7

OSFIE

Bit 0

C2IE

C1IE

EEIE

BCL1IE

C4IE

C3IE

CCP2IE

OSFIE: Bit de habilitacin de interrupcin por fallo en el Oscilador


1 = Habilita la interrupcin por fallo en el Oscilador
0 = Deshabilita la interrupcin por fallo en el Oscilador
C2IE: Bit de habilitacin de interrupcin del Comparador C2
1 = Habilita la interrupcin del Comparador C2
0 = Deshabilita la interrupcin del Comparador C2
C1IE: Bit de habilitacin de interrupcin del Comparador C1

1 = Habilita la interrupcin del comparador C1


0 = Deshabilita la interrupcin del comparador C1
EEIE: Bit de habilitacin de interrupcin por escritura completa en la EEPROM
1 = Habilita la interrupcin por escritura completa en la EEPROM
0 = Deshabilita la interrupcin por escritura completa en la EEPROM
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE HABILITACION DE INTERRUPCION DE PERIFERICOS 2: PIE2
Bit 7

OSFIE

Bit 0

C2IE

C1IE

EEIE

BCL1IE

C4IE

C3IE

CCP2IE

BCL1IE: Bit de habilitacin de interrupcin por colisin en el bus MSSP


1 = Habilita la interrupcin por colisin en el bus MSSP
0 = Deshabilita la interrupcin por colisin en el bus MSSP
C4IE: Bit de habilitacin de interrupcin del Comparador C4
1 = Habilita la interrupcin del Comparador C4
0 = Deshabilita la interrupcin del Comparador C4
C3IE: Bit de habilitacin de interrupcin del Comparador C3

1 = Habilita la interrupcin del comparador C3


0 = Deshabilita la interrupcin del comparador C3
CCP2IE: Bit de habilitacin de interrupcin del CCP2
1 = Habilita la interrupcin del CCP2
0 = Deshabilita la interrupcin del CCP2
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE HABILITACION DE INTERRUPCION DE PERIFERICOS 3: PIE3
Bit 7

Bit 0

CCP3IE

CCP3IE: Bit de habilitacin de interrupcin del CCP3


1 = Habilita la interrupcin del CCP3
0 = Deshabilita la interrupcin del CCP3

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE HABILITACION DE INTERRUPCION DE PERIFERICOS 4: PIE4
Bit 7

Bit 0
PSMC3TIE

PSMC2TIE

PSMC1TIE

PSMC3SIE

PSMC2SIE

PSMC1SIE

PSMC3TIE: Bit de habilitacin de interrupcin generada por la base de tiempo en PSMC3


1 = Habilita la interrupcin generada por la base de tiempo en PSMC3
0 = Deshabilita la interrupcin generada por la base de tiempo en PSMC3
PSMC2TIE: Bit de habilitacin de interrupcin generada por la base de tiempo en PSMC2
1 = Habilita la interrupcin generada por la base de tiempo en PSMC2
0 = Deshabilita la interrupcin generada por la base de tiempo en PSMC2
PSMC1TIE: Bit de habilitacin de interrupcin generada por la base de tiempo en PSMC1

1 = Habilita la interrupcin generada por la base de tiempo en PSMC1


0 = Deshabilita la interrupcin generada por la base de tiempo en PSMC1

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE HABILITACION DE INTERRUPCION DE PERIFERICOS 4: PIE4
Bit 7

Bit 0
PSMC3TIE

PSMC2TIE

PSMC1TIE

PSMC3SIE

PSMC2SIE

PSMC1SIE

PSMC3SIE: Bit de habilitacin de interrupcin generada por el Auto-Shutdown del PSMC3


1 = Habilita la interrupcin generada por el Auto-Shutdown del PSMC3
0 = Deshabilita la interrupcin generada por el Auto-Shutdown del PSMC3
PSMC2SIE: Bit de habilitacin de interrupcin generada por el Auto-Shutdown del PSMC2
1 = Habilita la interrupcin generada por el Auto-Shutdown del PSMC2
0 = Deshabilita la interrupcin generada por el Auto-Shutdown del PSMC2
PSMC1SIE: Bit de habilitacin de interrupcin generada por el Auto-Shutdown del PSMC1

1 = Habilita la interrupcin generada por el Auto-Shutdown del PSMC1


0 = Deshabilita la interrupcin generada por el Auto-Shutdown del PSMC1

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE SOLICITUD DE INTERRUPCION DE PERIFERICOS 1: PIR1
Bit 7

TMR1GIF

Bit 0

ADIF

RCIF

TXIF

SSP1IF

CCP1IF

TMR2IF

TMR1IF

TMR1GIF: Bandera de interrupcin de disparo por puerta del Timer1


1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
ADIF: Bandera de interrupcin por conversin analgico a digital (ADC)
1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
RCIF: Bandera de interrupcin por recepcin en el USART

1 = interrupcin est pendiente


0 = interrupcin no se encuentra pendiente
TXIF: Bandera de interrupcin de por transmisin en el USART
1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE SOLICITUD DE INTERRUPCION DE PERIFERICOS 1: PIR1
Bit 7

TMR1GIF

Bit 0

ADIF

RCIF

TXIF

SSP1IF

CCP1IF

TMR2IF

TMR1IF

SSP1IF: Bandera de interrupcin por transferencia en el puerto serial sncrono (MSSP)


1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
CCP1IF: Bandera de interrupcin del CCP1
1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
TMR2IF: Bandera de interrupcin al igualarse el TMR2 con PR2

1 = interrupcin est pendiente


0 = interrupcin no se encuentra pendiente
TMR1IF: Bandera de interrupcin por desbordamiento del Timer1
1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE SOLICITUD DE INTERRUPCION DE PERIFERICOS 2: PIR2
Bit 7

OSFIF

Bit 0

C2IF

C1IF

EEIF

BCL1IF

C4IF

C3IF

CCP2IF

OSFIF: Bandera de interrupcin por falla en el Oscilador


1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
C2IF: Bandera de interrupcin del Comparador C2
1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
C1IF: Bandera de interrupcin del Comparador C1

1 = interrupcin est pendiente


0 = interrupcin no se encuentra pendiente
EEIF: Bandera de interrupcin por escritura completa en la EEPROM
1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE SOLICITUD DE INTERRUPCION DE PERIFERICOS 2: PIR2
Bit 7

OSFIF

Bit 0

C2IF

C1IF

EEIF

BCL1IF

C4IF

C3IF

CCP2IF

BCL1IF: Bandera de interrupcin por colisin en el bus MSSP


1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
C4IF: Bandera de interrupcin del Comparador C4
1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
C3IF: Bandera de interrupcin del Comparador C3

1 = interrupcin est pendiente


0 = interrupcin no se encuentra pendiente
CCP2IF: Bandera de interrupcin del CCP2
1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE SOLICITUD DE INTERRUPCION DE PERIFERICOS 3: PIR3
Bit 7

Bit 0

CCP3IF

CCP3IF: Bandera de interrupcin del CCP3


1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE SOLICITUD DE INTERRUPCION DE PERIFERICOS 4: PIR4
Bit 7

Bit 0
PSMC3TIF

PSMC2TIF

PSMC1TIF

PSMC3SIF

PSMC2SIF

PSMC1SIF

PSMC3TIF: Bandera de interrupcin por base de tiempo del PSMC3


1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
PSMC2TIF: Bandera de interrupcin por base de tiempo del PSMC2
1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
PSMC1TIF: Bandera de interrupcin por base de tiempo del PSMC1

1 = interrupcin est pendiente


0 = interrupcin no se encuentra pendiente

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE SOLICITUD DE INTERRUPCION DE PERIFERICOS 4: PIR4
Bit 7

Bit 0
PSMC3TIF

PSMC2TIF

PSMC1TIF

PSMC3SIF

PSMC2SIF

PSMC1SIF

PSMC3SIF: Bandera de interrupcin por Auto-Shutdown del PSMC3


1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
PSMC2SIF: Bandera de interrupcin por Auto-Shutdown del PSMC2
1 = interrupcin est pendiente
0 = interrupcin no se encuentra pendiente
PSMC1SIF: Bandera de interrupcin por Auto-Shutdown del PSMC1

1 = interrupcin est pendiente


0 = interrupcin no se encuentra pendiente

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO DE INTERRUPCION POR CAMBIO, FLANCO DE SUBIDA: IOCxP
Bit 7

IOCxP7

Bit 0

IOCxP6

IOCxP5

IOCxP4

IOCxP3

IOCxP2

IOCxP1

IOCxP0

IOCxP <7:0>: Bits de habilitacin individual para interrupcin por cambio de nivel por flanco de subida (1)
1 = interrupcin por cambio de nivel por flanco de subida es habilitado en el pin asociado y el indicador de
interrupcin respectivo se seteara tras la deteccin de un flanco positivo
0 = interrupcin por cambio de nivel por flanco de subida es deshabilitado para el pin asociado.

REGISTRO DE INTERRUPCION POR CAMBIO, FLANCO DE BAJADA: IOCxN


Bit 7

IOCxN7

Bit 0

IOCxN6

IOCxN5

IOCxN4

IOCxN3

IOCxN2

IOCxN1

IOCxN0

IOCxN <7:0>: Bits de habilitacin individual para interrupcin por cambio de nivel por flanco de bajada (1)
1 = interrupcin por cambio de nivel por flanco de bajada es habilitado en el pin asociado y el indicador de
interrupcin arespectivo se seteara tras la deteccin de un flanco negativo
0 = interrupcin por cambio de nivel por flanco de bajada es deshabilitado para el pin asociado.
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
REGISTRO BANDERA DE INTERRUPCION POR CAMBIO: IOCxF
Bit 7

IOCxF7

Bit 0

IOCxF6

IOCxF5

IOCxF4

IOCxF3

IOCxF2

IOCxF1

IOCxF0

IOCxF <7:0>: Bits de sealizacin de interrupcin por cambio en el pin (1)


1 = Se detecto un cambio habilitado en el pin asociado. Se setea cuando IOCxPx = 1 y un flanco ascendente
se detect en el pin, o cuando IOCxNx = 1 y un flanco descendente se detecta en el pin.
0 = Ningn cambio se detect, o el usuario borr el cambio detectado.

Nota 1: Para el registro IOCEF , el bit 3 (IOCEF3) es el nico bit implementado en el Registro

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
Lgica de interrupcin

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
Vector de Interrupcin
Es la direccin donde debe colocarse la primera
instruccin de la Sub-Rutina de atencin de
interrupcin
El vector de Interrupcin para el PIC16F87X es:
Dir. 0004

UNEXPO Pto. Ordaz.

Prof. Antonio Pateti

MICROPROCESADORES

Interrupciones
Como se atiende una Interrupcin con el PIC

PILA
Dir_SUMA

Programa
Principal
Dir_01
Dir_02
Dir_03
Dir_04
Dir_05
Dir_SUMA
Dir_07
Dir_08
Dir_09

UNEXPO Pto. Ordaz.

BSF
03,5
BCF
03,6
MOVF 3F,0
CALL SUMA
GOTO 000h
BCF
03,5
BSF
03,6
ADDWF 5A,1
RETURN

Prof. Antonio Pateti

Sub-Rut
Interrupcin
0004

RETFIE

MICROPROCESADORES

Interrupciones
Prioridades en la interrupciones

Ejemplo: Que pasa si se activan al mismo tiempo la


Interrupcin externa INT y cualquiera de cambio de
nivel

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
1er Caso: se atiende primero INT

Dir 0004

INTF=1

SI

INTF0

ORG
BTFSC
GOTO
BTFSC
GOTO
RETFIE

0004
INTCON,INTF
Sub_Rut_INT
INTCON,IOCIF
Sub_Rut_RB

Sub_Rut_INT

NO

IOCIF=1

SI

IOCIF0

Sub_Rut_RB

NO

RETFIE

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
2do Caso: se atiende primero IOCIF

Dir 0004

IOCIF=1

SI

IOCIF0

ORG
BTFSC
GOTO
BTFSC
GOTO
RETFIE

0004
INTCON,IOCIF
Sub_Rut_RB
INTCON,INTF
Sub_Rut_INT

Sub_Rut_RB

NO

INTF=1

SI

INTF0

Sub_Rut_INT

NO

RETFIE

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
OPERACIN GENERAL DE INTERRUPCION
Las interrupciones estn deshabilitadas despus de cualquier reset del
dispositivo. Ellos se habilitan mediante la configuracin de los siguientes bits:
Bit de habilitacin general GIE del registro INTCON
Bit de habilitacin individual en los registros PIE1, PIE2, PIE3, PIE4 o
INTCON.
Bit de habilitacin de perifricos PEIE en el registro INTCON (si la interrupcin
del evento est contenido en el Registros PIE1, PIE2, PIE3 o PIE4 ) Los
registros INTCON, PIR1, PIR2, PIR3 o PIR4 graban la solicitud de interrupcin.
El bit de la bandera de interrupcin se setea, sin importar el estado de la GIE,
PEIE y la habilitacin individual de la interrupcin.
Los siguientes eventos ocurren cuando un evento de interrupcin ocurre
mientras el bit GIE esta seteado:
Pre-busqueda de instruccin se vaca
Bit GIE se borra
Contador de Programa actual (PC) con la direccin de retorno se graba en la
pila
Registros crticos se guardan automticamente en los registros de sombra
PC se carga con el vector de interrupcin 0004h
UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
El firmware dentro de la rutina de servicio de interrupcin (ISR) debe
determinar el origen de la interrupcin encuestando los bits de las banderas
de interrupcin individuales. Los bits de la bandera de interrupcin deben ser
limpiado antes de salir del ISR para evitar repetir la interrupcin. Debido a que
el bit GIE est desactivado, cualquier interrupcin que se produce durante la
ejecucin de la ISR se grabar a travs de su indicador de interrupcin, pero
no har que el procesador redirija al vector de interrupcin.
La instruccin RETFIE hace salir del ISR y recupera de la pila la direccin
anterior, restaura los registros crticos de los registros sombra y restaura el bit
GIE.

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
Al entrar en una interrupcin, la direccin de retorno PC es guardado en la
pila. Adems, los siguientes registros se guardan automticamente en los
registros de la sombra:
Registro W
Registro STATUS (a excepcin de TO y PD)
Registro BSR
Registros FSR
Registro PCLATH
Al salir de la rutina de servicio de interrupcin, estas registros se restauran
automticamente. Cualquier modificacin en estos registros durante el ISR se
perdern. Si modificaciones a cualquiera de estos registros se desean, el
correspondiente registro sombra debe ser modificado y el valor se restablece
al salir de la ISR. La registros de sombra estn disponibles en el Banco 31
son lectura y escritura. Dependiendo de la aplicacin del usuario, tambin
pueden ser salvado otros registros.

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
Registros Sombra
Banco 31
F80h

F8Ch

Registros de Nucleo
F8Bh
F8Ch
Ver tabla
FEFh
FF0h
FFFh

RAM comun (70h


7Fh)

UNEXPO Pto. Ordaz.

Sin implementar se leen


como '0'
FE3h
FE4h
FE5h
FE6h
FE7h
FE8h
FE9h
FEAh
FEBh
FECh
FEDh
FEEh
FEFh

STATUS_SOMBRA
WREG_SOMBRA
BSR_SOMBRA
PCLATH_SOMBRA
FSR0L_SOMBRA
FSR0H_SOMBRA
FSR1L_SOMBRA
FSR1H_SOMBRA

STKPTR
TOSL
TOSH

MICROPROCESADORES

Interrupciones

El programa consiste en preparar todo para el encendido de un


LED que se conectara en RB1, luego se har dormir al micro
hasta que interrumpamos su sueo para atender un pulsador
conectado a RB0/INT, momento en el cual deber encender el
LED, y regresar a dormir nuevamente, y cuando se vuelva a
presionar el pulsador se apagara y as sucesivamente.

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
ORG 0x00
GOTO inicio

ORG 0x04
GOTO ISR
inicio

sueo

ORG 0X05
BANKSEL TRISB
MOVLW 0x01
MOVWF TRISB
BANKSEL OPTION_REG
BCF OPTION_REG,6
BSF INTCON,GIE
BSF INTCON,INTE
BANKSEL PORTB
CLRF PORTB
SLEEP
GOTO sueo

UNEXPO Pto. Ordaz.

; configurando puertos
; carga w con 0000 0001
; RB0/INT es entrada
; seleccionamos flanco descendente
;-------Habilitacin de interrupciones------; habilitamos todas las interrupciones
; que sean interrupciones externas
; limpio el puerto B
; Lazo principal

MICROPROCESADORES

Interrupciones
Sub-rutina de Interrupcin sencilla
;-------------Rutina de servicio de interrupciones------------ISR

off_led

BTFSC PORTB,0
GOTO ISR
BTFSC PORTB,1
GOTO off_led
BSF PORTB,1
BCF INTCON,INTF
RETFIE
BCF PORTB,1
BCF INTCON,INTF
RETFIE
END

UNEXPO Pto. Ordaz.

; verificamos que suelten el pulsador

; y ahora s, si el led est a 1


; ire a off_led para apagarlo
; sino, enciendo el LED
; borro bandera de interrupcin
; apago el LED
; borro bandera de interrupcin

MICROPROCESADORES

Interrupciones

Para el siguiente circuito elabore un programa que funcione de


la siguiente manera: Si se presiona el pulsador P1 encender
en el display el nmero 0 (cero) y mantenerlo hasta tanto se
libere el pulsador. De igual manera ocurre para el pulsador P2
mostrar el numero 4, P3 mostrar 5 y as sucesivamente.
Mientras no se presiona ningn boton el display estar
mostrando
la
letra
P.
Atender
los
pulsadores
utilizando interrupcin externa y por cambio de nivel

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
ORG 0X00
GOTO INICIO
ORG 0X04

;CUANDO HAY UNA INTERRUPCION,

CALL RUT_INT

BCF INTCON,INTF
BCF INTCON,IOCIF
RETFIE
ORG 0X500
RUT_INT
BTFSC INTCON,INTF
CALL SUB_RUT_INT
BTFSC INTCON,IOCIF

CALL SUB_RUT_IOC
RETURN

;INTERRUPCIN POR RB0?


;SI
;NO, ENTONCES, INTERRUPCION POR
; RB4:RB7?
;SI
;NO

SUB_RUT_INT
MOVLW b'11000000' ;
BANKSEL PORTD
MOVWF PORTD
RETURN
UNEXPO Pto. Ordaz.

NUMERO 0

MICROPROCESADORES

Interrupciones
SUB_RUT_IOC
BANKSEL IOCBF
BTFSC IOCBF,IOCBF4
CALL NUM_4
BTFSC IOCBF,IOCBF5
CALL NUM_5
BTFSS IOCBF,IOCBF6
CALL NUM_6
BTFSS IOCBF,IOCBF7
CALL NUM_7
RETURN

;FUE RB4?

;FUE RB7?

NUM_4
BANKSEL PORTD
MOVLW b'10011001'
MOVWF PORTD
RETURN
NUM_5
BANKSEL PORTD
MOVLW b'10010010'
MOVWF PORTD
RETURN

NUM_6
BANKSEL PORTD
MOVLW b'10000010'
MOVWF PORTD
RETURN

UNEXPO Pto. Ordaz.

MICROPROCESADORES

Interrupciones
NUM_7
BANKSEL PORTD
MOVLW b'11111000'
MOVWF PORTD
RETURN
;-------------------------------------------------------------------------ORG 0X09
INICIO
BANKSEL 0
BSF INTCON,GIE
BSF INTCON,INTE

;PERMITO LAS INTERRUPCIONES A NIVEL


; GLOBAL
;HABILITO LAS INTERRUPCIONES POR

RB0/INT
BSF INTCON,IOCIE
BANKSEL OPTION_REG
BCF OPTION_REG,7
BSF OPTION_REG,INTEDG

BANKSEL IOCBP
MOVLW 0xF0
MOVWF IOCBP
BANKSEL WPUB
MOVLW 0xF0
MOVWF WPUB
BANKSEL TRISB
MOVLW 0XF1
MOVWF TRISB
MOVLW 0X00
MOVWF TRISD
BANKSEL 0

UNEXPO Pto. Ordaz.

;HABILITO LAS INTERRUPCIONES POR


; CAMBIO DE NIVEL
;ACTIVO LAS RESISTENCIAS PULL-UP
;INTERRUPCION POR FLANCO
; ASCENDENTE PARA INT

; RB4-RB7 INTERRUPCION POR CON


; FLANCO DE SUBIDA

; ACTIVO PULL-UP DE RB4-RB7

;RB0 Y RB4:RB7 COMO ENTRADAS


;RD0:RD7 COMO SALIDAS

MICROPROCESADORES

Interrupciones
MOVLW 0xF1
MOVWF ANSELB
MOVLW 1
MOVWF ANSELD

LETRA_P

; Pines de los Puertos B y D


; como digitales

MOVLW b'10001100'
MOVWF PORTD

;MUESTRA P EN EL

DISPLAY
CICLO
BTFSC PORTB,RB0
GOTO CICLO
BTFSC PORTB,RB4
GOTO CICLO
BTFSC PORTB,RB5
GOTO CICLO
BTFSC PORTB,RB6
GOTO CICLO
BTFSC PORTB,RB7
GOTO CICLO
GOTO LETRA_P
END

UNEXPO Pto. Ordaz.

;RB0=0?
;RB4=0?
;RB5=0?
;RB6=0?
;RB7=0?

MICROPROCESADORES

Vous aimerez peut-être aussi