Hast du dir denn mal die Lookup() Funktion angesehen?
Sieht dann so aus:
Code:
$regfile "m8def.dat"
$crystal = 1000000
$baud = 1200
Dim Ad As Word
dim ergebnis as Byte, index as word
Config Portb = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Do
Ad = Getadc(0)
if ad < 679 then
ergebnis=100
elseif ad > 1021 then
ergebnis=0
elseif ad > 970 then
ergebnis=10
else
Index = AD - 679 'Vom AD-Wert ziehst du zunächst mal 680 ab, weil die Werte dadrunter immer 100 ergeben.
'Dann bleiben Werte von 0 bis 291 über. Mit
Ergebnis = Lookup(Index, Zeit_daten)
endif
Print " ";Ergebnis;" s" 'gibst du den Wert aus.
loop
end
Zeit_daten:
Data 99, 99, 99 'Daten für 679, 680, 681
Data 98 'Daten für 682
...
Data 11, 11, 11, 11 'Daten für 967, 968, 969, 970
Erklärung siehe mein Post oben.
Ich denke übrigens, der Bereich von 921 - 926 soll tatsächlich 20s sein, nicht 21s.
Lesezeichen