La pota corresponent a l'entrada RA2 pot fer interrupcions si es configura convenientment. Cal, però, que la pota RA2 no estigui definida com a entrada analògica.
Per provar aquest exemple ens caldrà tenir un polsador convenientment connectat a l'entrada RA2. Si fem servir la placa de la matriu de vuit per vuit LED podem emprar els polsadors BTN1 o BTN2 per a aquesta aplicació.
Normalment es procura que les funcions d'interrupció siguin de ràpida execució. En aquest cas, però, hi posarem un retard per evitar que el microcontrolador detecti els rebots del polsador.
#pragma config FOSC = INTRCIO, WDTE = OFF, PWRTE = OFF, MCLRE = OFF, CP = OFF #pragma config CPD = OFF, BOREN = OFF, IESO = OFF, FCMEN = OFF #include <xc.h> // Carrega el fitxer de funcions necessari per al compilador XC8
unsigned char Visualit; // Variable de 8 bits sense signe (0 a 255)
void main (void) {
// Inicialització de variables
Visualit = 0; // Posa Visualit a 0
// Configuració d'entrades i sortides
TRISA = 0b11111111; // Posa el port A com a entrada
TRISC = 0b00000000; // Posa el port C com a sortida
OPTION_REG = 0b11000000; // Interrupció a l'activació
// I resistències de pull-up desactivades (valor per defecte)
INTCON = 0b00010000; // Habilitem la interrupció externa
// i deshabilitem les altres
ANSEL = 0; // Desactiva totes les entrades analògiques
ANSELH = 0;
INTCONbits.GIE = 1; // Habilitem les interrupcions a nivell general
while (1){ // Inici del bucle de programa
PORTC = Visualit; // Copiem el valor al port (als LED)
}
}
void __interrupt() externa(void){ // funció d'interrupcions
// void interrupt() externa(void){ // Línia alternativa
if (INTCONbits.INTF){ // Comprovem que hi ha interrupció externa
Visualit++; // Incrementa Compta
if (Visualit >= 16) { // Si ha acabat setze vegades
Visualit = 0; // Posa Visualit a 0
}
_delay(2000);
INTCONbits.INTF = 0; // Tornem a posar el bit a zero
}
}
Quan provem el programa veurem que inicialment els LED estan apagats i van comptant cada cop que s'activa el polsador. Si posem a 0 el bit marcat en taronja el comptatge es farà quan es desactivi el polsador.

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.