LATA = 0x00;
LATB = 0x00;
LATC = 0x00;
LATC = 0x00;
LATE = 0x00;
PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;
TRISA = 0x01; //default-0x01 make port0 as input for analog reading, make pin ra2 and ra3 inputs also
TRISB = 0x0F; //make port0-3 as input for button pressing
TRISC = 0x00;
TRISD = 0x00;
TRISE = 0x00;
//Analog settings
ADCON0 = 0x00; //choose analog0
ADCON1 = 0x3B; //default-0x0E RA0, RA2 & RA3 is analog and rest are digital, changed vref- and vref+
ADCON2 = 0xA9; //12 TAD Fosc/8
// configure Timer1
T1CONbits.RD16 = 1; // 16-bit read/write
T1CONbits.T1CKPS0 = 1; // 1:8 prescale
T1CONbits.T1CKPS1 = 1;
T1CONbits.T1OSCEN = 0; // not using external osc, so disable driver
T1CONbits.TMR1CS = 0; // internal clock
TMR1H = 0xDD;
TMR1L = 0xAA;
// enable Timer1
T1CONbits.TMR1ON = 1; // turn on timer1
// other Timer1 settings
RCONbits.IPEN = 1; // IPEN = 1
IPR1bits.TMR1IP = 1; // Timer1 high priority int
INTCON2bits.TMR0IP = 1; // Timer0 high priority int
PIE1bits.TMR1IE = 1; // Enable timer1
INTCONbits.GIE = 1;
INTCONbits.PEIE = 1;
// configure A/D convertor
OpenADC(ADC_FOSC_64 & ADC_RIGHT_JUST
& ADC_12_TAD, ADC_CH0 & ADC_INT_OFF
& ADC_REF_VDD_VSS, ADC_1ANA);