Embedded C program for External interrupt input switch press, output at relay using PIC18F in MPLAB IDE

Program:

#include <pic18f4550.h>
//#include<xc.h>

#define RELAY_PIN LATAbits.LATA4

void __interrupt() extint_isr(void)
{
    unsigned int i;
    if(INT1IF)
    {
        INT1IF = 0;
        INT1IE = 0;
        RELAY_PIN = ~RELAY_PIN;
        for(i=0; i<10000; i++);      //small delay for debouncing
        INT1IE = 1;
    }
}

int main(){
    ADCON1 = 0x0F;          //set pins as Digital in Analog To Digital Control Register 1
    TRISAbits.TRISA4 = 0;   //set relay pin RA4 as output
    TRISBbits.TRISB1 = 1;   //Interrupt pin as input
    RELAY_PIN = 1;

    INT1IE  =   1;                      //Enable external interrupt INT1
    INTEDG1 =   0;                      //Interrupt on falling edge
    GIE     =   1;                      // Enable global interrupt

    while(1);
}

Output:



Previous
Next Post »