/************ ADC.h *********/

#include "ADCRegisters.h"

/********* A/D Port Configuration Control bits ********/
		// Register for ANSELx.		
#if defined ( _PIC18F26K80_H_ ) || defined ( _PIC18F45K22_H_ )
	#define		sAN0	0x01
	#define		sAN1	0x02
	#define		sAN2	0x04
	#define		sAN3	0x08
	#if defined ( _PIC18F26K80_H_ )
		#define		sAN4	0x10
	#endif	
		// Register for ANSEL.		
#elif	defined ( _PIC16F887_H_ ) || defined ( _PIC16F886_H_ )
	#define		sAN0	0x01
	#define		sAN1	0x02
	#define		sAN2	0x04
	#define		sAN3	0x08
	#define		sAN4	0x10
	#define		sAN5	0x20
	#define		sAN6	0x40
	#define		sAN7	0x80
#elif defined	( _PIC12F683_H_ )
	#define		sAN0	0x01		// 0bxxxx0001.
	#define		sAN1	0x02		// 0bxxxx0010.
	#define		sAN2	0x04		// 0bxxxx0100.
	#define		sAN3	0x08		// 0bxxxx1000.
#endif


/******* Result Format Justified ****************/
#define		RIGHT_JUSTIFIED			0x01
#define		LEFT_JUSTIFIED			0x00

/******* Voltage Reference *********************/
#if defined	( _PIC18F26K80_H_ )				// There are more, but these are enough.
	#define		VDD_VSS				0x00
	#define		VDD_Vref				0x01
	#define		Vref_VSS				0x02
	#define		Vref_Vref				0x03
#elif defined ( _PIC18F45K22_H_ )				// There are more, but these are enough.
	#define		VDD_VSS				0x00
	#define		VDD_Vref				0x01
	#define		Vref_VSS				0x04
	#define		Vref_Vref				0x05
#elif	defined ( _PIC16F887_H_ ) || defined ( _PIC16F886_H_ )
	#define		VDD_VSS				0x00
	#define		Vref_VSS				0x01
	#define		Vref_Vref				0x03
	#define		VDD_Vref				0x02
#elif defined	( _PIC12F683_H_ )
	#define		VDD_VSS				0x00
	#define		Vref_VSS				0x40
#endif

/******* Conversion Clock Select ****************/
#if defined	( _PIC18F26K80_H_ ) || defined ( _PIC18F45K22_H_ )
	#define		FOSC_FRC		0x07		// 0bxxxxx111.
	#define		FOSC_64		0x06		// 0bxxxxx110.
	#define		FOSC_16		0x05		// 0bxxxxx101.
	#define		FOSC_4			0x04		// 0bxxxxx100.
	#define		FOSC_32		0x02		// 0bxxxxx010.
	#define		FOSC_8			0x01		// 0bxxxxx001.
	#define		FOSC_2			0x00		// 0bxxxxx000.
#elif	defined ( _PIC16F887_H_ ) || defined ( _PIC16F886_H_ )
	#define		FOSC_2			0x00		// 0b00xxxxxx
	#define		FOSC_8			0x40		// 0b01xxxxxx
	#define		FOSC_32		0x80		// 0b10xxxxxx
	#define		FRC				0xC0		// 0b11xxxxxx.
#elif defined	( _PIC12F683_H_ )
	#define		FOSC_4			0x40		// 0b00xxxxxx.
	#define		FOSC_16		0x50		// 0b01xxxxxx.
	#define		FOSC_64		0x60		// 0b10xxxxxx.
#endif

/******** Analog Channel Select bits to be read ********/
	// Channels only for ANSEL, no ASELH.
#if defined	( _PIC18F26K80_H_ ) || defined ( _PIC18F45K22_H_ ) || defined ( _PIC12F683_H_ ) \
			|| defined ( _PIC16F887_H_ ) || defined ( _PIC16F886_H_ )
	#define		CH_AN0	0x00	// 0bx00000xx.
	#define		CH_AN1		0x04	// 0bx00001xx.
	#define		CH_AN2	0x08	// 0bx00010xx.
	#define		CH_AN3	0x0C	// 0bx00011xx.
	#if defined	( _PIC18F26K80_H_ )	
		#define		CH_AN4	0x10	// 0bx00100xx.
	#elif	defined ( _PIC16F887_H_ ) || defined ( _PIC16F886_H_ )
		#define		CH_AN4	0x10
		#define		CH_AN5	0x14
		#define		CH_AN6	0x18
		#define		CH_AN7	0x1C
	#endif
#endif
