' {$Stamp BS2}          ' Stamp Directive.
' {$PBASIC 2.5}
' Program Listing 4.1: Photoresistor rctime Display
'----- Declarations --------------
left_photo var word ' For storing measured RC times of
right_photo var word ' the left & right photoresistors.
pulse_count var word
max_val var word
min_iter var word
'----- Initialization ------------
'debug cls ' Open and clear a Debug Terminal.
'----- Main Routine --------------
max_val=0
main:
for pulse_count = 0 to 24
' Measure RC time for right photoresistor.
high 3 ' Set P3 to output-high.
pause 3 ' Pause for 3 ms.
rctime 3,1,right_photo ' Measure RC time on P3.
' Measure RC time for left photoresistor.
high 5 ' Set P5 to output-high.
pause 3 ' Pause for 3 ms.
rctime 5,1,left_photo ' Measure RC time on P5.
' Display RC time measurements using Debug Terminal.
'debug home, "L ", dec5 left_photo, " R ", dec5 right_photo
freqout 2, 200,2000-left_photo-right_photo
if max_val>=(left_photo+right_photo) then fwd
max_val=left_photo+right_photo
min_iter=pulse_count
'debug dec5 pulse_count, " " 

fwd:
pulsout 12, 720
pulsout 13, 720
pause 20
pulsout 12, 690
pulsout 13, 690
pause 20
pulsout 12, 650
pulsout 13, 650
pause 20
pulsout 12, 650
pulsout 13, 650
pause 20
pulsout 12, 690
pulsout 13, 690
pause 20
pulsout 12, 720
pulsout 13, 720
pause 20
next

'debug "val ", dec5 max_val, " iter ", dec5 min_iter

for pulse_count =  24 to min_iter
pulsout 12, 780
pulsout 13, 780
pause 20
pulsout 12, 810
pulsout 13, 810
pause 20
pulsout 12, 850
pulsout 13, 850
pause 20
pulsout 12, 850
pulsout 13, 850
pause 20
pulsout 12, 810
pulsout 13, 810
pause 20
pulsout 12, 780
pulsout 13, 780
pause 20
high 3 ' Set P3 to output-high.
pause 3 ' Pause for 3 ms.
rctime 3,1,right_photo ' Measure RC time on P3.
' Measure RC time for left photoresistor.
high 5 ' Set P5 to output-high.
pause 3 ' Pause for 3 ms.
rctime 5,1,left_photo ' Measure RC time on P5.
' Display RC time measurements using Debug Terminal.
'debug home, "L ", dec5 left_photo, " R ", dec5 right_photo
freqout 2, 200,2000-left_photo-right_photo
next

for pulse_count =  1 to 100
pulsout 12, 500
pulsout 13, 1000
pause 20
next

goto main