Me ... again ...
Tried to use Mr.Darell (RIP
) routine :
Code:
include "D:\PBP\average_DT.pbp"
Main:
ADCON0 = %10001001
Pauseus 50 ' Wait for channel to setup
ADCON0.1 = 1 ' Start conversion
While ADCON0.1=1:Wend ' Wait for conversion
value.HighByte=ADRESH ' Read variable from ADC and save
value.LowByte=ADRESL
gosub Average
advalue=value
if (advalue < 650) then
IF (advalue > 450) AND (advalue < 640) THEN gosub do_1 ...
IF (advalue > 320) AND (advalue < 440) THEN gosub do_2 ...
...
endif
Goto Main
...but something is wrong - always is executed do_1 subroutine
Note : the code in his "simple" variant, works just fine . Just I want more "accuracy" ...
Code:
advalue var word
advaloop var byte
advaltot var word
pause 200
Main:
advaltot=0
advaloop=0
ADCON0 = %10001001
PAUSEuS 50 ' Wait for A/D channel acquisition time
ADCON0.1 = 1
for advaloop = 1 to 20
WHILE ADCON0.1 = 1 : WEND
advalue.HighByte = ADRESH
advalue.LowByte = ADRESL
advaltot=advaltot + advalue
next advaloop
advalue=advaltot / 20
if (ADvalue < 650) then
IF (ADvalue > 470) AND (ADvalue < 640) THEN gosub do_1
IF (ADvalue > 320) AND (ADvalue < 450) THEN gosub do_2
...
endif
Goto Main
Bookmarks