Interrupciones Mplab
* Cada vez que se presione un pulsador conectado a RB0, se incrementará un contador (0 al 9) que se visualizará en un display. SI se mantiene pulsado se incrementa cada 200ms. Lalectura del pulsador se hará mediante interrupciones.
Mapa de Puertos:
Puerto | Pines | Modo |
Puerto C | RC0-RC7 | Salida |
Puerto B | RB0 | Interrupción por flanco |
DiagramaElectrónico:
Diagrama de Flujo:
Código:
list p=16f877a
include "p16f877a.inc"
CONT EQU 20H
UNO EQU 21H
DOS EQU 22H
VAR EQU 23H
ORG 00H
GOTO INICIO
ORG 004H
GOTO SUB_INT
RETARDOMOVLW .200
MOVWF UNO
VOLVER2
MOVLW .250
MOVWF DOS
VOLVER1
NOP
DECFSZ DOS,1
GOTO VOLVER1
DECFSZ UNO,1
GOTO VOLVER2
RETURN
SUB_INT
CLRF VAR
MOVF CONT,0
CALL TABLAMOVWF PORTC
INCF CONT,1
MOVLW .10
XORWF CONT,0
BTFSS STATUS,Z
GOTO PULSADO
CLRF CONT
PULSADO
CALL RETARDO ;Retardo de 200ms
BTFSS PORTB,0 ;Sigue Pulsado?
GOTO SALIR ;No,sale de la interrupción
GOTO SUB_INT ;Sí, incrementa otro digito
SALIR
BCF INTCON,INTF;
RETFIE
TABLA
ADDWF PCL,1
DT 0X9F,0X25,0X0D,0X99,0X49,0X41,0X1F,0X01,0X09,0x03
INICIOBANKSEL TRISA
CLRF TRISC
BCF INTCON, INTF
BSF INTCON,INTE
BSF INTCON,GIE
BSF OPTION_REG,INTEDG
BANKSEL PORTA
CLRF CONT
MOVLW B'00000001'
MOVWF VAR
MAIN
BTFSS VAR,0GOTO MAIN
MOVLW 03H
MOVWF PORTC
GOTO MAIN
END
Simulaciones:
Ejercicio 2:
* Cada vez que se presione un pulsador conectado a RB0, se conmutará el estado de 4 leds conectados al puertoA. La lectura del pulsador se hará mediante interrupciones.
Mapa de Puertos:
Puerto | Pines | Modo |
Puerto A | RA0-RA4 | Salida |
Puerto B | RB0 | Interrupción por flanco |
DiagramaElectrónico:
Diagrama de Flujo:
Código:
list p=16f877a
include "p16f877a.inc"
PULSA EQU 20H
ORG 00H
GOTO INICIO
ORG 004H
GOTO SUB_INT
SUB_INT
BTFSC PULSA,0
GOTO APAGAR...
Regístrate para leer el documento completo.