/******************************************************************* * Processor: PIC18F4520 * Compiler: MPLAB C18 * * This file does the following.... * * Author (Your name here) ********************************************************************/ /** Header Files ***************************************************/ #include #include #include #include #include /** Configuration Bits *********************************************/ #pragma config OSC = INTIO67 #pragma config WDT = OFF #pragma config LVP = OFF #pragma config BOREN = OFF #pragma config XINST = OFF /** Define Constants Here ******************************************/ //#define TIMER_TICKS 189 // If using 1:4 prescaler #define TIMER_TICKS 207 // If using 1:16 prescaler //#define TIMER_TICKS 51 /** Local Function Prototypes **************************************/ /** Global Variables ***********************************************/ int ra1Reading = 0; /******************************************************************* * Function: void main(void) ********************************************************************/ #pragma code void main(void) { // Set the clock to 2 MHz OSCCONbits.IRCF2 = 1; OSCCONbits.IRCF1 = 0; OSCCONbits.IRCF0 = 1; // Pin IO Setup OpenADC(ADC_FOSC_8 & ADC_RIGHT_JUST & ADC_12_TAD, ADC_CH1 & ADC_INT_OFF & ADC_REF_VDD_VSS, 0x0B); // Four analog pins TRISA = 0xFF; // All of PORTA input TRISB = 0xFF; // All of PORTB input TRISC = 0x00; // All of PORTC output TRISD = 0x00; // All of PORTD output PORTC = 0x00; // Turn off all 8 Port C outputs // OpenTimer2(TIMER_INT_OFF & T2_PS_1_16); OpenTimer2(TIMER_INT_OFF & T2_PS_1_4); OpenPWM2(TIMER_TICKS); while (1) { SetChanADC(ADC_CH1); // Select the pin ConvertADC(); // Start conversion while (BusyADC()); // Wait for completion ra1Reading = ReadADC(); // Read result SetDCPWM2(ra1Reading); } }