Forum: Mikrocontroller und Digitale Elektronik Probleme mit Bascom


von Jan (Gast)


Lesenswert?

Hallöchen !!

Sagt mal, warum kommt hierbei ein Fehler ?

Dim X As Word
Dim Y As Word
Dim Z As Word
Dim T As Word

T = X + Y + Z    <Fehlermeldung (Error 35) : 3 Parameters Expected


Weiß jemand warum ?

Gruß
Jan

von emil (Gast)


Lesenswert?

......

Dim X As Word
Dim Y As Word
Dim Z As Word
Dim T As Word

T = X + Y
T = T + Z

.....

das geht schon :-)))

das gehemnis verrate ich nächstes mal :)))

von Jan (Gast)


Lesenswert?

Naja, so hab ich das dann auch gelöst.

Aber warum ist das so ?

Ich meine in Basic kann man doch sonst auch ohne Probleme
mehrere Variablen z.b. addieren. Oder auch komplexere Operationen
durchführen. (Klammern, ....)


Und bei BASCOM jeden Rechenschritt einzelnd ? Warum ?

Jan

von Metty (Gast)


Lesenswert?

Sicher!

Aber Du vergißt, das Bascom ja alle Rechenoperationen wieder in
Maschienensprache wandeln muß.

Und in Assembler kannst Du halt immer nur zwei Zahlen zusammen zählen.

Also orientiert sich Bascom lediglich an dieser Einfachen Grundregel.
(Somit ist auch nachvollziebar, was Bascom hinterher an Hex-Code draus
bastelt.

Gruß
Metty

von Markus Kaufmann (Gast)


Lesenswert?

@Jan:
Der Bascom-Compiler ist in Bezug auf die Sprache nicht so der Hit. Auch
FastAVR hat mich da nicht überzeugt.

In dieser Hinsicht ist z.B. der Gnu C-Compiler wesentlich
leistungsfähiger, auch was Optimierungen auf Sourcecodeebene angeht.

Es kann aber natürlich nicht jeder C und durch die große
Klassenbibliothek macht Bascom die Schwächen in der Sprache locker
wieder wett. Den idealen Compiler (auch finanziell) scheint es leider
nicht zu geben...

Markus

von thkais (Gast)


Lesenswert?

Mal im Ernst: Wer für einen Mikrocontroller eine Programmiersprache mit
allen Schikanen erwartet...
Ein paar Abstriche muß man halt machen.

von formtapez (Gast)


Lesenswert?

tja so ist das nunmal ... aber eine ordentliche fehlermeldung in bascom
wäre echt hilfreich. ich stand mal vor dem selben problem mit dem
addieren und dachte gleich das wär ein bug.

MfG
formtapez

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

"Programmiersprache mit allen Schikanen"... man wird doch wohl
erwarten können, dass so simple Formulierungen wie a = b + c + d
richtig behandelt werden? Das darf man wohl getrost als Bug betrachten
und an den Hersteller melden.

von Markus Kaufmann (Gast)


Lesenswert?

@thkais:
Mir ist klar, daß z.B. viele Features in C++ relativ "teuer" sind,
deswegen erwarte ich auch keinen ordentlichen C++-Compiler, aber
bereits der Basic-Interpreter im C64 konnte mehrere Zahlen gleichzeitig
addieren. Immerhin läuft der Compiler nicht auf dem AVR, sondern auf
dem PC.

@Andreas:
Das ist wohl "broken as designed". Mir kommt es so vor, als ob
der/die Bascom-Programmierer mehr Ahnung von Microcontrollern als von
Compilerbau haben.

Markus

von Bernd Schmidt (Gast)


Lesenswert?

@Markus
Der Basic Interpreter im C64 dürfte auch wesentlich mehr
Entwicklungszeit hinter sich haben als BASCOM. Ausserdem ist es nur ein
Interpreter. Wenn ich mich nicht irre war der sogar von M$.
Die stärken von Bascom sind meiner Meinung nach auch nicht die perfekte
Übersetzung von Programmen sondern die Unterstützung der AVR
Peripherie. Falls man Basic mag kommt man mit den Macken des Compilers
ganz gut klar. Allerdings sollte man auch alle Informationsquellen
nutzen (Hilfedatei, Mailinglisten usw.).

@Andreas
Dieser "Fehler" ist bereits bekannt. Es wird immer nur eine Anweisung
pro Zeile umgesetzt. Ist allerdings kein Problem weil die
Ketteninstuktionen ebenfalls Stück für Stück umgesetzt werden. Man muss
halt nur ein bischen mehr schreiben.

Gruss
Bernd

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Entwicklungszeit ist hier wohl keine Ausrede, jeder Anfänger kann eine
Compilergrammatik (ab)schreiben die mit solchen Formulierungen zurecht
kommt. Bei einem Interpreter hätte ich es ja gerade noch verstanden...

Was macht Bascom denn bei a = (b + c) + d?

von Markus Kaufmann (Gast)


Lesenswert?

@andreas:
Auch das sind zuviele Operatoren.
Wenn ich die Fehlermeldungen richtig deute, dann versucht er hier
irgendwas mit Arrays. Klar - wenn man keine komplexen Ausdrücke hat,
dann braucht man auch keine Klammerung.

@Bernd:
Die (c)-Meldung von M$ kenne ich nur beim C128 (Commodore Basic 7.0),
nicht von den anderen Computern.

Ansonsten muß ich Andreas recht geben. Ein Compiler der mit einem
Compiler-Compiler geschrieben wird, der sollte solche Probleme nicht
haben. Man schreibt einfach mehr oder weniger direkt die BNF-Notation
hin und gut ist.

Markus

von Kai Schmidt (Gast)


Lesenswert?

gibt es denn foren, groups oder mailinglisten die sich gründlcih mit
bascom-avr beschäftigen? ich hab bei google nichts finden (ausser
dialer seiten..)können......wer kann mir da helfen?

von Markus Kaufmann (Gast)


Lesenswert?

Es gibt einige yahoo-groups,
z.B. hier:
Bascom http://de.groups.yahoo.com/group/BASCOM/
Bascomlist (auch yahoo)
und die Liste auf mcselec.com selbst.

Dann kennen sich in den allgemeinen Foren (z.B. hier) natürlich auch
noch Leute aus.

Markus

von Bernd Schmidt (Gast)


Lesenswert?

@Markus
Ist zwar lange her aber wenn ich mich richtit entsinne stammen die
Basic Interpreter vom VC20 bis C64 von M$.
Auch Apple (damals im Apple ][) hatte den Interpreter von  M$. Das
wurde zwar nicht ins Handbuch geschrieben, aber die Basic-Tokens waren
teilweise gleich. Damals kannte sowieso niemand M$, wamrum also eine
Meldung ausgeben :-)

@Kai
www.grote.net/Bascom/ ist das Mailarchiv über Bascom. Auf
www.mcselec.com sind einige Links auf Bascom Seiten, teilweise in
Deutsch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.