Ja, die Definition fehlte tatsächlich, aber dann wird die Zeile :
Max(w(1) , M1 , Idx) Als fehler markiert (asignment error)
Hier mal der ganze Code:
$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
'-------------------------------------------------------------------------------
'LCD Config
Config Lcd = 16 * 2
Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5
'-------------------------------------------------------------------------------
'Variable setzen
'print Fusing(effektiv , "#.##")
Dim A As Byte
Dim Tastmessungen As Byte
Tastmessungen = 20 'sollte die gleiche grösse wie w haben
Dim W(20) As Word ' getadc mag kein single
dim Maxi as word '
dim mini as word
dim Spitzenstrom as word
Dim Effektiv As Single 'und alle andere variablen für die Berechnungen als single deklarieren
'-------------------------------------------------------------------------------
'ADC Einstellungen
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'-------------------------------------------------------------------------------
'Hauptprogramm
Cls
Cursor Off
Upperline
Lcd " ACV "
Lowerline
Lcd " Spannung "
Wait 3
Cls
Do
Gosub Spannungsmessung
Loop
Spannungsmessung:
For A = 1 To Tastmessungen
W(a) = Getadc(0) 'analogwert lesen und in W array speichern
Next A
Max(w(1) , M1 , Idx) 'aus W array Maximum wert raussuchen und speichern
Maxi = M1 'Maximum wert in Variable maxi speichern
Min(w(1) , M1 , Idx) 'aus W array Minimum wert raussuchen und speichern
Mini = M1 'Minimum wert in Variable Mini speichern
Spitzenstrom = Maxi-Mini
'jetzt deine variable skalieren und dann
Effektiv = Spitzenstrom / 2.82
Upperline Fusing(effektiv , "#.##") 'hier ist jetzt der Spannungswert der umgerechnet werden muss!
Return
Lesezeichen