Da qualche giorno sto prendendo dimistichezza con la programmazione dei PIC, già conoscevo il C, quindi ho cominciato da lì. Ho fatto un semplice circuitino con i classici led che si accendono a comando e le prime prove di programmi sono andati benissimo, ora vorrei capire bene come funzionano gli interrupt, ma non capisco perchè questo codice non vada:
codice:
#include <htc.h>
#include "delay.h"             // richiama la routine di ritardo per poter usare le pause

/*Definisce alcune variabili*/
#define OUTPUT 0
#define INPUT 1
#define LED1 0b00000010
#define LED2 0b00001000
#define LED12 0b00001010
#define ASP 1               //definisce il tempo di attesa (ms)
 
unsigned volatile stat; 
 
void main(void)
{
	//Imposta le porte RB come output e RB4 come input (per intercettare l'interrupt)
	TRISB=0;
	TRISB4=1;
	//Abilita gli interrupt dalla port RB4
	RBIF=0;				//Kills all unwanted interrupts
	RBIE=1;				//Enables RB interr
	GIE=1;				//Enables interrupts
	//Imposta alternativamente i led attivi RB0 e RB1
	stat=LED1;
	while(1){
		PORTB=stat;
		DelayS(ASP);
	}
}

interrupt  interr( void ) {
	if(RBIF){
     //L'interrupt proviene da RBIE
	 if(stat==LED1)stat=LED2;
	 else stat=LED1;
	 RBIF=0;				//Kills all unwanted interrupts
	 RBIE=1;				//Enables RB interr
	 GIE=1;				//Enables interrupts
	}
}
Cioè compila, ma se metto in tensione il piedino del RB4 non riesco a cambiare led che accendo. Credo che non riesca a gestire bene l'interrupt...
Help.

Grazie