Interrução PIC 18F4620


#1

Pessoal, estou tentando fazer a interrupçao externa no 18F4620 e não estou conseguindo… creio que falta pouca coisa… alguém consegue me ajudar?
Estou usando MikroC, parti de um exemplo da internet…

void interrupt(){
if(INT0F_bit == 1 ) {
LATD0_bit = 0xFF;
Delay_ms(250);
LATD0_bit = 0x00;
Delay_ms(250);
INT0F_bit = 0;
}

if(INT1F_bit == 1 ) {
LATD1_bit = 0xFF;
Delay_ms(250);
LATD1_bit = 0x00;
Delay_ms(250);
INT1F_bit = 0;
}

if(INT2F_bit == 1 ) {
LATD2_bit = 0xFF;
Delay_ms(250);
LATD2_bit = 0x00;
Delay_ms(250);
INT2F_bit = 0;
}
}
void main() {
ADCON0 = 1;
TRISB = 1; // Set PORT B (only RB0) as input
TRISD = 0; // Set PORT D as output
LATD = 0x00; // Set all pin on PORT D Low
INTEDG0_bit = 1; // Set interrupt on rising edge
INT0IF_bit = 0; // Clear INT0 flag
INT0IE_bit = 1; // Enable INT0 interrupts
GIE_bit = 1; // Enable GLOBAL interrupts
LATD0_bit = 0xFF;
Delay_ms(250);
LATD0_bit = 0x00;
Delay_ms(250);

LATD1_bit = 0xFF;
Delay_ms(250);
LATD1_bit = 0x00;
Delay_ms(250);

LATD2_bit = 0xFF;
Delay_ms(250);
LATD2_bit = 0x00;
Delay_ms(250);

while(1) {
}
}


#2

Fiz alguns trabalho com PIC 12F e 16F. Primordialmente você deverá ler o datasheet. Os conceitos que você precisará a respeito de interrupções e como buscá-las no datasheet estão descritas nesses artigos:


Nesse outro eu faço tratamento de interrupções no RX da comunicação com RS485: