Hi, Dave and Tim
I had a look to the TEST section of this program ... It gave that, with a " classic " PBP use. :
I just commented out original lines for comparison ...Code:'Config @ __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB3 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_ON & _INTRC_IO @ __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF '@ __config _CONFIG1, _INTRC_IO & _WDT_ON & _LVP_OFF & _CP_OFF DEFINE ADC_BITS 10 ' Sets the number of bits in the result to 10 ANSEL = %00001111 'set RA0-RA3 as analog inputs 'ADCON1 = %10000000 'Right Justifies 10-bit value 'OSCCON = $60 'Sets the internal oscillator to 4 Mhz OSCCON = %01101110 'Internal RC w/ I/Os INTCON = 0 PIE1 = 0 PIE2 = 0 CMCON = 7 'Comparators off CVRCON = 0 INCLUDE "modedefs.bas" ti var byte ti = 50 '20 MILLISECONDS DELAY' A VAR word B VAR word C VAR word D VAR word _A CON 0 _B CON 1 _C CON 2 _D CON 3 TRISA = %00001111 TRISB = 0 'TURN PORT B as outputs but RB1 WHEN USE ICD FOR COMMUNICATION '* * * * * MAIN PROGRAM START HERE * * * * * * * * PAUSE 1000 Serout PORTB.1, 0, [254,1] Serout PORTB.1, 0, [254,2] PAUSE 20 READSENSORS: 'ADCON0 = %00000001 'Turn ON CHAN 0 'GOSUB ADCON ADCIN _A, A 'A.LOWBYTE = ADRESL 'PLACES THE LOW BYTE INTO VAR SEROUT PORTB.1 , 0, ["Ch 0= ",# A.LOWBYTE] pause 20 'ADCON0 = %00001001 'Turn ON CHAN 1 'GOSUB ADCON ADCIN _B, B 'B.LOWBYTE = ADRESL 'PLACES THE LOW BYTE INTO VAR SEROUT PORTB.1 , 0, [" Ch 1= ",# B.LOWBYTE] PAUSE 20 SEROUT PORTB.1,0,[$FE,$C0] 'ADCON0 = %00010001 'Turn ON CHAN 2 'GOSUB ADCON ADCIN _C, C 'C.LOWBYTE = ADRESL 'PLACES THE LOW BYTE INTO VAR SEROUT PORTB.1 , 0, ["Ch 2= ",# C.LOWBYTE] PAUSE 20 'ADCON0 = %00011001 'Turn ON CHAN 3 'GOSUB ADCON ADCIN _D, D 'D.LOWBYTE = ADRESL 'PLACES THE LOW BYTE INTO VAR SEROUT PORTB.1 , 0, [" Ch 3= ",# D.LOWBYTE] PAUSE 1000 Serout PORTB.1, 0, [254,1] GOTO READSENSORS ' PROVISIONAL LOOP TO CHECK THE A/D CONVERTION.
Hope it Helps
Alain




Bookmarks