
/** L E D ***********************************************************/
/* On UBW, LED1 = RC0, LED2 = RC1, SW = RC2		 					*/

#define mInitAllLEDs()      LATC &= 0xFC; TRISC &= 0xFC;

#define mLED_1              LATCbits.LATC0
#define mLED_2              LATCbits.LATC1

#define mLED_1_On()         mLED_1 = 1;
#define mLED_2_On()         mLED_2 = 1;

#define mLED_1_Off()        mLED_1 = 0;
#define mLED_2_Off()        mLED_2 = 0;

#define mLED_1_Toggle()     mLED_1 = !mLED_1;
#define mLED_2_Toggle()     mLED_2 = !mLED_2;

/** S W I T C H *****************************************************/
#define mInitSwitch()		TRISCbits.TRISC2 = 1;
#define UserSW				PORTCbits.RC2

#define mLED_Both_Off()     {mLED_1_Off(); mLED_2_Off();}
#define mLED_Both_On()      {mLED_1_On(); mLED_2_On();}
#define mLED_Only_1_On()    {mLED_1_On(); mLED_2_Off();}
#define mLED_Only_2_On()    {mLED_1_Off(); mLED_2_On();}

/** I N C L U D E S **********************************************************/
#include <p18cxxx.h>
#include <delays.h>

#pragma code
#pragma interruptlow low_ISR
void low_ISR(void)
{	
}

#pragma interrupt high_ISR
void high_ISR(void)
{
}

#pragma code high_vector_section = 0x000808
void high_vector (void)
{
    _asm goto high_ISR _endasm
}
#pragma code low_vector_section = 0x000818
void low_vector (void)
{
    _asm goto low_ISR _endasm
}

/** D E C L A R A T I O N S **************************************************/
#pragma code

void main(void)
{
	// Make all of 3 digital inputs
	LATA = 0x00;
	TRISA = 0xFF;
	// Turn all analog inputs into digital inputs
	ADCON1 = 0x0F;
	CMCON = 0x07;	// Comparators as digital inputs
	// Make all of PORTB inputs
	LATB = 0x00;
	TRISB = 0xFF;
	// Make all of PORTC inputs
	LATC = 0x00;
	TRISC = 0xFF;

	// Initalize LED I/Os to outputs
    mInitAllLEDs();
	// Initalize switch as an input
    mInitSwitch();

	while(1)
    {
	    mLED_Both_On();
	    Delay10KTCYx(200);
	    Delay10KTCYx(200);
	    Delay10KTCYx(200);
	    Delay10KTCYx(200);
	    mLED_Both_Off();
	    Delay10KTCYx(200);
	    Delay10KTCYx(200);
	    Delay10KTCYx(200);
	    Delay10KTCYx(200);
    }
}


