Documentos de Académico
Documentos de Profesional
Documentos de Cultura
•La interrupción externa se habilita activando el bit “INTE” y el “GIE” del registro
INTCON.
•Se puede configurar para que se genere por flanco de subida o por flanco de
bajada.
LÓGICA DE INTERRUPCIONES
TIEMPO DE LATENCIA
Es el tiempo que transcurre desde que se produce un evento de
interrupción hasta que se ejecuta la instrucción de la dirección 04H.
• Interrupciones síncronas (normalmente internas) tiempo de
latencia= 3 Tcy.
• Interrupciones asíncronas (normalmente externas) tiempo de
latencia= 3-3,75 Tcy.
Respuesta a un evento en el pin INT.
1. PC->Pila y GIE=0
2. PC=0004H
3. Se salvan los registros cuyo contenido se desee conservar
(W, STATUS, etc.) ≡ PUSH
4. Se determina la fuente de interrupción (interrogando los
flags correspondientes)
5. Se ejecuta la rutina de servicio a la interrupción
6. Se borra el flag relacionado con la interrupción atendida.
7. Se restauran los registros ≡ POP
8. Se ejecuta RETFIE
9. Pila->PC y GIE=1
Salvaguarda de W y el registro STATUS, en un rutina de servicio
a una interrupción:
Salvaguarda de W y el registro STATUS, y PCLATH en un rutina
de servicio a una interrupción:
MOVWF W_TEMP ;Copy W to TEMP register
SWAPF STATUS,W ;Swap status to be saved into W
CLRF STATUS ;bank 0, regardless of current bank, Clears
IRP,RP1,RP0
MOVWF STATUS_TEMP ;Save status to bank zero STATUS_TEMP register
MOVF PCLATH, W ;Only required if using pages 1, 2 and/or 3
MOVWF PCLATH_TEMP ;Save PCLATH into W
CLRF PCLATH ;Page zero, regardless of current page
:
:(ISR) ;(Insert user code here)
:
MOVF PCLATH_TEMP, ;Restore PCLATH
W
MOVWF PCLATH ;Move W into PCLATH
SWAPF STATUS_TEMP,W ;Swap STATUS_TEMP register into W
;(sets bank to original state)
MOVWF STATUS ;Move W into STATUS register
SWAPF W_TEMP,F ;Swap W_TEMP
SWAPF W_TEMP,W ;Swap W_TEMP into W
REGISTRO INTCON
Bit 3 RBIE: (RB Port Change Interrupt Enable) bit de habilitación de interrupción con el cambio de
RB7:RB4
1 = Habilita la interrupción.
0 = Inhibe las interrupción.
(2) Algunas MCU no
disponen de esta
característica
(1) También se
puede encontrar
con el nombre
GPIE.
Bit 2 T0IF: (Timer 0 Overflow
Interrupt Flag).
1 = Interrupción producida por el desbordamiento del Timer 0 (debe ser puesto a cero por SW).
0 = El Timer 0 no se ha desbordado.
Bit 1 INTF: (INT External Interrupt Flag).
1 = Interrupción producida por INT (debe ser puesto a cero por SW).
0 = INT no ha interrumpido la MCU.
(2) Algunas MCU no disponen de esta característica
Bit 0 RBIF: (RB Port Change Interrupt Flag).
1 = Interrupción producida por el cambio en alguno de los bits RB7:RB4 (debe ser puesto a cero
REGISTRO INTCON
EJEMPLO:
*
*
INICIO BSF STATUS,RP0 ; Configurando puertos
MOVLW 0x01 ; Carga W con 0000 0001
MOVWF TRISB ; RB0/INT es entrada
BCF OPTION_REG,6 ; Seleccionamos flanco descendente
BCF STATUS,RPO ;Habilitación de interrupciones–
BSF INTCON,GIE ; Habilitamos todas las interrupciones
BSF INTCON,INTE ; Que sean interrupciones externas
*
*
INTERRUPCION RB4…RB7
La interrupción por cambio del estado lógico en alguna de las 4 líneas de más peso
de la puerta B (RB7-RB4) del PIC. Para ello dichas líneas tienen que estar
Previamente configuradas como entradas. Este recurso hardware es muy utilizado
para el control de teclados.
RUT_INT
BTFSS INTCON,RBIF ;SI, ENTONCES, INTERRUPCION POR
;RB4:RB7?
RETURN
*
*
*
*
*
*
*
RETURN
.
OPTION: los bits que están en color verde son los que están implicados en la
configuración del TIMER0
• PSA: Bit de asignación de prescaler. Si está a "1" el prescaler se asigna a WDT
(Wachtdog), si está a "0" se asigna al TMR0.
• TOSE: Bit de selección del tipo de flanco para el TMR0. A "1" se incrementa TMR0
Que significa cada uno de los bits que están implicados en
la interrupción por el TMR0
TOIF:
Solo se puede leer su valor, es un Flag o bandera que se pone a “1” cuando se
produce un desbordamiento del TMR0, (este o no este configurado para
producir una interrupción). Cuando se trabaja en Ensamblador, este bit hay que
ponerlo a "0" por programa.
Este bit permite que cualquier interrupción sea posible. Para poder usar
cualquier interrupción hay que habilitarla globalmente e individualmente.
CBLOCK 0X20
ENDC
ORG 0X00
GOTO CONFIGURA
ORG 0X04
GOTO INTERRUPCION
ORG 0X05
INTERRUPCION COMF PORTB,F
MOVLW .7
MOVWF TMR0
BCF INTCON,T0IF
RETFIE
CONFIGURA *
*
BANKSEL OPTION_REG
MOVLW B'00000000'
MOVWF OPTION_REG
MOVLW B'10100000'
MOVWF INTCON
*
*
El OPTION_REG:
BANKSEL OPTION_REG
MOVLW B'00000000‘
MOVWF OPTION_REG
El INTCON:
MOVLW B'10100000'
MOVWF OPTION_REG
;----------------PROGRAMA PRINCIPAL-----------------------------
PRINCIPAL
CLRF PORTC ; LIMPIO EL PUETO C
CLRF PORTB ; LIMPIA LOS BITS DEL PUERTO B
BSF STATUS,RP0 ; SELECCIONA EL BANCO 1
BSF PIE1,TMR1IE ; HABILITO LA INTERRUPCIÓN POR TIMER1
MOVLW 0X00 ; PARA CONFIGURAR EL PUERTO B
MOVWF TRISB ; CONFIGURA PUERTO B COMO SALIDA
MOVLW 0XFF ; PARA CONFIGURAR LOS PUERTOS
; COMO ENTRADAS
MOVWF TRISC ; CONFIGURA EL PUERTO C COMO
;ENTRADA
CLRF STATUS ; REGRESA AL BANCO 0
;-------------------CONFIGURACIÓN DEL TIMER 1---------------------
BSF T1CON,0 ; HABILITAMOS EL TIMER 1 (TMR1ON=1)
BSF T1CON,1 ; SEÑAL DEL RELOJ DEL TIMER 1 EXTERNA
;(TMR1CS=1)
BSF T1CON,2 ; NO SE SINCRONIZA LA SEÑAL DE RELOJ DEL TMR1
;CON LA SEÑAL EXTERNA (T1SYNC=1)
BCF T1CON,3 ; NO HABILITA EL OSCILADOR DEL TIMER 1
;(T1OSCEN=0)
BCF T1CON,4 ; PRE DIVISOR DE FRECUENCIA EN 1 (T1CKPS0=0)
BCF T1CON,5 ; PRE DIVISOR DE FRECUENCIA EN 1 (T1CKPS1=0)
;-------------------HABILITACION DE INTERRUPCIONES----------------
BSF INTCON, PEIE ; Habilitamos interrupción por periféricos
BSF INTCON,GIE ; HABILITAMOS TODAS LAS INTERRUPCIONES
SUEÑO NOP
GOTO SUEÑO ; A DORMIR!!!!
GOTO SUEÑO ; A DORMIR!!!!
;-------------------RUTINA DE SERVICIO DE INTERRUPCIÓN------------
INTERRUM
BTFSC PORTB,1 ; PREGUNTO COMO ESTÁ EL LED, ENCENDIDO
;O APAGADO?
GOTO OFF_LED ; ESTA PRENDIDO, VOY A APAGARLO
BSF PORTB,1 ; ESTA APAGADO, VOY Y LO ENCIENDO
BCF PIR1,TMR1IF ; BORRO LA BANDERA DE
;INTERRUPCIÓNPOR TMR1
RETFIE ;REGRESO DE INTERRUPCION
OFF_LED
BCF PORTB,1 ; APAGO EL LED
BCF PIR1,TMR1IF ; BORRO LA BANDERA DE
;INTERRUPCIÓN POR TMR1
RETFIE ; REGRESO DE
;INTERRUPCION