Datasheet
Chapter 10.
35
Analog Inputs
 // Initialize ADC
 /* set port configuration here */
 ADPCFGbits.PCFG8 = 0; // ensure AN8/RB8 is analog
 /* set channel scanning here, auto sampling and convert,
 with default read-format mode */
 ADCON1 = 0x00E4;
 /* No channel scan for CH0+, Use MUX A,
 SMPI = 1 per interrupt, Vref = AVdd/AVss */
 ADCON2 = 0x0000;
 /* Set Samples and bit conversion time */
 ADCON3 = 0x1f3f; //(as slow as possible)
 /* set channel scanning here for AN8 */
 ADCSSLbits.CSSL8 = 1;
 /* channel select A3 */
 ADCHSbits.CH0SA3 = 1;
 /* reset ADC interrupt flag */
 IFS0bits.ADIF = 0;
 /* enable ADC interrupts */
 IEC0bits.ADIE = 1;
 /* turn on ADC module */
 ADCON1bits.ADON = 1;
//! ADC Interrupt Service Routine
/*!
 * Whenever an analog value is available, thie routine will:
 * \li Clear the interrupt flag
 * \li Grab the analog value and store it in potValue
 * \li Increment analogRead
 *
 */
void __attribute__ ((__interrupt__, auto_psv))
_ADCInterrupt (void)
{
 IFS0bits.ADIF = 0; // Clear A/D interrupt flag
 potValue = ADCBUF0; // Save the potentiometer value
 analogRead++; // Remember it has been read
}










