I don't see a settling time delay between the time that you select the A/D channel and when you start the A/D conversion (setting the GO bit). The data book mentions that the steps for conversion are: 1. Configure the A/D module 2. Configure the A/D interrupt, if necessary 3. Wait the required sampling time 4. Start the conversion Here is a snippet of the code I use: get_start bcf ADCON0, 3 ;switch to CH2 bsf ADCON0, 4 ;switch to CH2 bcf ADCON0, 5 ;switch to CH2 call sample_delay ;provide sampling time bsf ADCON0, 2 ;start conversion settle2 btfsc ADCON0, 2 ;A/D over? goto settle2 ;if no, then loop movf ADRES, W ;get A/D value movwf START ;store start value . . . sample_delay movlw 30 movwf TEMP3 ;initialize counter SD decfsz TEMP3, F ;decrement counter and check if zero goto SD ;if no, loop again return ;if yes, return to main loop and begin A/D This isn't even remotely optimized but it has always worked fine. Ryan > -----Original Message----- > From: pic microcontroller discussion list > [mailto:PICLIST@MITVMA.MIT.EDU]On Behalf Of > Thomas C. Sefranek > Sent: Monday, November 08, 1999 7:35 AM > To: PICLIST@MITVMA.MIT.EDU > Subject: PIC16C73A A-D > > > I'm still looking for clues as to why the PIC > will not do the entire voltage > range with it's A-D. > > Clear_IRQs CLRF INTCON ; Clear all Interrupts. > BCF PIR1, ADIF ; Clear any random A-D IRQ. > Start_A2D BSF ADCON0, GO ; Start the A to D processes. > ; > ;******************************* Scheduler > ************************************ > ; The Scheduler checks all task STATEs for > "Active", (Non zero) > ; activates the associated task for each state. > ;************************************************* > ***************************** > ; > Scheduler BTFSC ADCON0,2 ; Is the A-D Ready? > GOTO Scheduler ; No, Return to scheduler loop. > ;******************************* NEW SWR