Well after reading all of your posts and did some research on the 16f88 datasheet I applied some changes to my own program that looks it has improved. With all channels 0 to 3 straight to ground I got channels 2 and 3 to 0 and channels 0 and 1 to some value of 14. I am adding the program listing for your evaluation. Thank you in advance.
@ __config _CONFIG1, _INTRC_IO & _WDT_ON & _LVP_OFF & _CP_OFF
INCLUDE "modedefs.bas"
ANSEL = %00001111 'set RA0-RA3 as analog inputs
ADCON1 = %10000000 'Right Justifies 10-bit value
OSCCON = $60 'Sets the internal oscillator to 4 Mhz
CMCON = 7 'Comparators off
DEFINE ADC_BITS 10 ' Sets the number of bits in the result to 10
ti var byte
ti = 50 '20 MILLISECONDS DELAY'
A VAR word
B VAR word
C VAR word
D VAR word
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
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
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
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
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.
'* * * * * * * * * SELECTING THE MOTOR MOVEMENT * * * * * * * *
IF A =0 and D =0 or C =0 and b =0 THEN GOTO READSENSORS 'IT IS DARK
IF ABS (A-D)<10 OR ABS (B-C)<10 THEN GOTO READSENSORS 'IT IS ALIGNED
If (B>D) OR (A>C) Then gosub Front
IF (A>B) OR (C>D) THEN GOsub Left
IF (C>A) OR (D>B) THEN GOsub Back
IF (D>C) OR (B>A) THEN GOsub Right
GOTO READSENSORS 'STAY FOR EVER LOOPING
'* * * * * * * * * MOTOR'S MOVEMENTS SUBRUTINES * * * * * * * *
Front:
Serout PORTA.6, 0, ["FRONT ",# ABS (B-D)," ",# ABS (A-C)]
SEROUT PORTA.6, 0, [$FE,$C0]
PORTB = 1 'GOING FRONT
PAUSE TI
PORTB = 2
PAUSE TI
PORTB = 4
PAUSE TI
PORTB = 8
PAUSE TI
Return
LEFT:
Serout PORTA.6, 0, ["LEFT ",# ABS (a-b)," ",# ABS (C-D)]
SEROUT PORTA.6, 0, [$FE,$C0]
PORTB = 128 'GOING LEFT
PAUSE TI
PORTB = 64
PAUSE TI
PORTB = 32
PAUSE TI
PORTB = 16
PAUSE TI
Return
Back:
Serout PORTA.6, 0, ["BACK ",# ABS(C-A)," ",# ABS(D-B)]
SEROUT PORTA.6, 0, [$FE,$C0]
PORTB = 8 'GOING BACK
PAUSE TI
PORTB = 4
PAUSE TI
PORTB = 2
PAUSE TI
PORTB = 1
PAUSE TI
Return
RIGHT:
Serout PORTA.6, 0, ["RIGHT ",# ABS(D-C)," ",# ABS(B-A)]
SEROUT PORTA.6, 0, [$FE,$C0]
PORTB = 16 'GOING RIGHT
PAUSE TI
PORTB = 32
PAUSE TI
PORTB = 64
PAUSE TI
PORTB = 128
PAUSE TI
Return
ADCON:
ADCON1 = %10000000 'SET FOR 10 BITS
ADCON0.2 = 1 'IT'S ONE TILL IT READS
WHILE ADCON0.2 = 1 : WEND
RETURN
END
Bookmarks