/** Header Files ******************/ #include #include /** Configuration Bits *************/ #pragma config OSC = EC (ommitting some boilerplate code) /** Define Constants Here **********/ #define START_TIME 18661 // Part B #pragma code void main (void) { ADCON1 = 0x0F; // Part A TRISAbits.TRISA4 = 1; // Part A TRISB = 0xF0; // Part A PORTB = 0xFF; // Part A // Part B OpenTimer0(TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_64); RCONbits.IPEN = 1; // Part D INTCON2bits.TMR0IP = 0; // Part D INTCONbits.GIEH = 1; // Part B INTCONbits.GIEL = 1; // Part D WriteTimer0(START_TIME); // Part A while (1) { if (PORTAbits.RA4 == 0) { PORTB = 0x00; WriteTimer0(START_TIME); } } } #pragma interruptlow low_isr void low_isr(void) { if(INTCONbits.TMR0IF) { INTCONbits.TMR0IF = 0; WriteTimer0(START_TIME); PORTB = 0x0F; } }