bascom kann leider keine mehrfachrechnungen...
deshalb musst du jeden schritt einzeln rechnen und dann alles am schluss wieder zusammenführen
Martin
Hallo,
warum geht folgender Code nicht?
Ich bekomme dann folgende Fehlermeldung:Code:$regfile = "m8def.dat" $crystal = 1000000 $baud = 1200 Enable Interrupts Config Adc = Single , Prescaler = Auto Start Adc Dim Count As Integer , X As Integer , Y As Single , Z As Integer Do X = Getadc(5) Y = 2700 *(5 / 1024 * X) /(5 -(5 / 1024 * X)) Print Y Wait 1 Loop End
Source variable does not match the target variable[0]
Hoffe ihr könnt mir helfen
Gruß
Spurius
bascom kann leider keine mehrfachrechnungen...
deshalb musst du jeden schritt einzeln rechnen und dann alles am schluss wieder zusammenführen
Martin
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
Hallo,
danke, habs jetzt in mehrere Schritte aufgeteilt, sehr unelegant
Kannst du mir noch sagen wie ich eine Zahl vom Typ Single auf 1 oder 2 Stellen hinter dem Komma runden kann?
Gruß
Spurius
Hallo,
ich habe da mal eine Frage und zwar wurde hier gesagt das Bascom keine mehrfachrechnungen mag. Aber was bedeutet das denn speziell bei diesem code?
If Portb.0 = 0 Then Merker1 = 1 End If
Also bei meckert der immer in dieser Zeile mit dem Fehlercode
"Source variable does not match the target variable[0]"
Wäre nett wenn mir jemand helfen könnte, denn ich bin am verzweifeln
Hallo,
Dein Beispiel hat mit einer Mehrfachrechnung eigentlich nichts zu tun.
Für die IF ... THEN Anweisung gibt es zwei Schreibweisen.
- IF Bedingung THEN Anweisung [ELSE andere Anweisung]
oder
- IF Bedingung THEN
Anweisung
[ELSE]
andere Anweisung
ENDIF
Du kannst entweder EINE Anweisung direkt hinter dem THEN schreiben allenfalls auch ein ELSE Zweig (aber keine ENDIF)
oder die normale Schreibweise bei der hinter THEN nichts mehr sein darf und die Anweisungen bei zutreffen der Bedingung in den nächsten Zeilen folgen, allenfalls ein alternativer Verzweigungszweig mit ELSE und am Schluss ein ENDIF ebenfalls in einer eigenen Zeile.
Oder kurz gesagt, sofern alles in einer Zeile erledigt werden soll, darf kein ENDIF mehr kommen.
SINGLE auf ein oder zwei Kommastellen Runden:
Für den Ausdruck (PRINT oder LCD) mit der Anweisung FUSING. Schau mal in der Hilfe unter diesem Stichwort nach.
Soll mit einem solchen gerundeten Wert weitergerechnet werden geht das nur wenn man z. B. bei 2 Dezimalstellen so vorgeht:
Hier wird aber bei einem nachfolgenden Ausdruck kein entsprechend exakt gerundeter Wert erscheinen, da sich viele Dezimalzahlen nicht exakt mit dem binären Fließkommaformat darstellen lassen.Code:Dim S1 as Single S1 = 123.456789 S1 = S1 * 100 S1 = FIX(S1) S1 = S1 / 100
Eine nachfolgende PRINT oder LCD Anweisung wird daher den Wert bringen, dem die binär gespeicherte Zahl wirklich entspricht und den gewünschten Wert am ehesten repräsentiert.
Auch hier gibt es in der BASCOM-Hilfe unter
Bascom language fundamentals / Language Fundamentals beim Absatz:
Decimal and Binary Number Systems
entsprechende Erläuterungen.
Viele Grüße
Josef
Lesezeichen