Forum: Mikrocontroller und Digitale Elektronik BASCOM bzw. BASIC wie sieht die Struktur aus?


von Steffen H. (Gast)


Lesenswert?

Hallo,
ich hab Probleme BASCOM zu erlernen. Ich hab zwar auf www.rowalt.de mir
mal die Beispiele durchgelesen, aber dort wird nicht auf die
Programmsprache eingegangen. Ich weiss nicht wie so eine
Programmstruktur aussieht!
Hab bis jetzt nur Assembler programmiert. Es geht mir quasi um das
Programmieren an sich.
Wer kann helfen?

von Werner (Gast)


Lesenswert?

Du gehst einfach auf die Homepage http://www.mcselec.com und lädst dir
die Software als Demo herunter. Die Demo ist voll funktionsfähig, hat
nur die Einschränkung auf insg. 2 kb Code. Zum lernen reicht das
allemal. In dem Packet sind auch einige Demos und Hilfedateien.
Werner

von Steffen H. (Gast)


Lesenswert?

Ja, das Programm hab ich mir schon runtergeladen und auch schon in der
Hilfedatei rumgestöbert. Aber wie gesagt ich hab keine Ahnung von
BASIC!

von Ratber (Gast)


Lesenswert?

Schau dir doch einfach die vielen mitgelieferten Beispiele an.

Is Kinderleicht zu verstehen.

von harry (Gast)


Lesenswert?

hi,
brauchst du auch erstmal nicht. in assembler hast du ja die gleichen
strukturellen vorgänge wie in jeder anderen programmiersprache. es gibt
ja nur verzweigungen nach bedingung, schleifen mit lauf- oder
abbruchbedingung und sprungziele. das sind schon die wesentlichen
merkmale. nur musst du in hochsprachen, egal welche, nicht jeden
firlefanz bis in's letzte detail anweisen, dafür gibt's dann z.b.
'config adc...', solche befehle machen ja nichts anderes, als alle
erforderlichen parameter an register oder sonstwohin zu übergeben. an
sich muss man doch nur in hochsprachen, die sich ja alle irgendwie
ähnlich sind weil sie den gleichen zweck verfolgen,  oder assembler
unterscheiden. wer von assembler kommt sollte keine schwierigkeiten
haben, sich in hochsprachen einzuarbeiten, weil ruckzuck klar ist,
wofür man früher 'ne ganze batterie von anweisungen gebraucht hat
reicht jetzt ein befehl. und welcher wofür gut ist steht ja immer im
handbuch.
fröhlichen einstieg in's leichtere prog-leben, gruss, harry

von Ratber (Gast)


Lesenswert?

............An dieser Stelle müßte dannn das protestgeheul der
Assemblerfetischisten kommen...........

Ich setze als Wetteintrag mal ein Symbolisches Bier ;)

von harry (Gast)


Lesenswert?

hi,
das geheul kommt mit sicherheit noch, das bier ist dir sicher... prost

von Steffen H. (Gast)


Lesenswert?

@Ratber
Ich hab mir mal ein paar Beispiele angeschaut, hast recht verstehen
kann ich sie einiger Maßen.

@harry
Das BASCOM bzw. BASIC leichter oder besser gesagt nicht so aufwendig
ist hab ich schon gemerkt. :-) Das war auch ein Grund warum ich auf
eine Hochsprache umsteige.

Aber nochmal eine kleine Frage:
Was bedeutet diese Zeile bzw. Befehl?

Dim A As Byte
A = 1

Also so wie ich das mir erklären würde, bedeutet das A den Wert 1
(dezimal) hat und ein Byte groß ist. Also 0000 0001 binär ausgedrückt.
Stimmen meine Überlegungen?

von thkais (Gast)


Lesenswert?

Ursprünglich wird der DIM-Befehl zur Initialisierung von Arrays
verwendet. Bei Basic kocht aber jeder sein eigenes Süppchen... Bei
Bascom wird der DIM-Befehl mehr als Deklaration verstanden.
Bei der zweiten Zeile fehlt streng genommen der LET Befehl (= Zuweisung
eines Wertes zu einer Variablen). Allerdings wird der LET-Befehl zu 99%
nicht verwendet.
Insofern stimmen Deine Überlegungen voll und ganz.

von Andi (Gast)


Lesenswert?

Ach mensch, wieso gehst Du von ASM auf Basic? HEUUUUUL :-)
Nein!

Mit "DIM A As Byte" reservierst Du eine Variable "A" in der Größe
eines "Bytes" im SRAM.
"A = 1" ist, wie von Dir schon vermutet, in diese Variable "A" eine
1 zu schreiben.
Man kann mit DIM auch ganze Felder reservieren wie z. B.
 DIM A(10) Aa Word
Damit hast Du in der Variablen A 10 Words.
Zugriff auf das geht dann mit A(1), A(2)...A(10).

Gruß
Andi

von thkais (Gast)


Lesenswert?

Ach so - damit Ratber nicht verdurstet -
Ich programmiere lieber in Assembler, weil und überhaupt und heul.
g
(Überlege aber insgeheim, vielleicht doch auf Basic umzusteigen - aber
dann auf einen Interpreter. Wer macht mit? - Hierzu auch mal unter
"Atto-Basic" googeln, sehr interessant)

von Steffen H. (Gast)


Lesenswert?

Sorry tut mir leid das ich umsattel. Aber wieso soll man seinen Horizont
nicht erweitern dürfen? ;-)

von Andi (Gast)


Lesenswert?

War´n kleiner Scherz!
Basic war auch meine erste Sprache (ZX81), dann kam Z80-ASM,
MC68000-ASM, dann Pascal, dann lange nur Basic mit Access- und
Visual-Basic auf PC und jetzt hats mich mit AVR-ASM bei den µC wieder
gepackt.
Aber ehrlich: Warum gehst Du dann nicht zu C?
Ich habs bisher verweigert da mir zu kryptisch aber Du müßtest dafür
doch noch offen sein.

Gruß
Andi

von Steffen H. (Gast)


Lesenswert?

BASIC ist doch einfacher zu verstehen und BASCOM IDE ist doch eine tolle
Sache oder!?
C ist bestimmt auch nicht schlecht, aber man wird länger brauchen um es
zu erlernen. Es spricht doch nichts dagegen das man mehrere Sprachen
lernen kann. Also fang ich erst mal mit BASIC an, dann werde ich weiter
sehen.

von Bastler (Gast)


Lesenswert?

Steffen du hast vollkommen recht, lass dich nicht von Assmebler Guru´s
überreden. Mit einem guten Basic-Compiler wie Bascom bist du in Sachen
Produktivität den Assembler und C-Proghrammierern weit voraus. In der
Zeit wo die eine Applikation entwickelt haben hats du schon 3 bis 4
Anwendungen fertig - wobei die in 99,9% der Fälle garantiert nicht
schlechter sind.
Viele reden von Assembler und C, aber schau dich mal um wieviel
Quellcode man da wirklich findet. Das ist mager!

Ich würde dir ein paar gute Bücher zu Bascom empfehlen, schau mal in
das Basom Forum http://www.roboternetz.de/phpBB2/viewforum.php?f=32,

Insbesondere in diesen Thread, hier werden gute Bücher und Links
empfohlen:
http://www.roboternetz.de/phpBB2/viewtopic.php?t=884

Jetzt werden natürlich wieder alle Assembler Guru´s aufschreien -
versteht sich. Nur komisch das selbst in kommerziellen Bereich nur noch
sehr wenige in Assembler programmieren - ob das nicht doch einen Grund
hat ;-)

von Steffen H. (Gast)


Lesenswert?

Bei Roboternetz bin ich auch vetreten als Sauginius.
Ich denke jeder hat so seine Vorlieben und Meinungen bezüglich
Programmieren, man sollte sich selbst seine Meinung bilden und Sprachen
einfach ausprobieren. Dann wird man feststellen was einem am ehesten
zusagt.

von Andi (Gast)


Lesenswert?

Sicher, dem einen liegt dieses, dem anderen das.
Ich persöhnlich bin halt der Meinung, bei AVR am besten ASM oder C
(wenn ich´s mal kann) und auf PC Basic (Access-Datenbanken,
Visual-Basic).
Ich weiß ja nicht, wie weit Du mit ASM fortgeschritten bist aber
bezüglich Codegröße ist ASM oder C besser bei den AVR´s geeignet.
Basic bläht halt doch ein bißchen arg auf wobei mir diesbezüglich
FastAVR nen guten Eindruck machte.
Mit ASM oder C kann man mehr Code in den gleichen Flash reinbringen als
mit Basic.
Bei PC´s ist es egal da schon seit einigen Jahren Performance und
Speicher ohne Ende vorhanden ist (im Vergleich zu einem µC wie AVR).

Gruß
Andi

von Matthias (Gast)


Lesenswert?

Hi

>Nur komisch das selbst in kommerziellen Bereich nur noch
>sehr wenige in Assembler programmieren - ob das nicht doch
>einen Grund hat ;-)

Jup. Es hat einen Grund. Sogar mehrere:

1. Es gibt für jede Maschine mindestens einen guten C-Compiler

2. ASM ist nicht auf eine andere Maschine portabel.

3. Die Anwendungen werden komplexer. Deshalb wendet man sich Sprachen
zu die besser abstrahieren.


Matthias

von Bastler (Gast)


Lesenswert?

Sicher, man sollte die Sprache nehmen die einem am besten liegt - keine
Frage!
Das mag für den einen C und für den anderen Basic sein.
Aber generell ist es so das man in einer Hochsprache einfach wesentlich
schneller und produktiver ist als in Assembler, selbst dann, wenn einem
Assembler eigentlich mehr liegt oder mehr Spaß macht.
Also wenn ein Zeitlimit mit ins Spiel kommt, dann scheidet einfach fast
immer ein Basic Compiler am besten ab. C kommt eventuell noch heran wenn
man schon sehr gute Programmiererfahrung und gute Bibliotheken hat.
An dieser Tatsache darf man nicht vorbei reden, auch wenn man aus
Höfflichkeit keinen C oder Assembler-User verärgern möchte.
Ich darf das sagen, da ich auf dem PC lange Zeit sehr viel in
Assembler, C und C++ programmiert habe und deshalb auch diese Seite
kenne.

von Tobi (Gast)


Lesenswert?

der einzige unterschied ist, dass man beim uC wesentlich mehr auf
ressourcen achten muss als beim pc. da kann es sich auch wieder
rentieren wenn man keine ressourcenfressende hochsprache nimmt sondern
eine schlanke (auch hochsprache) und dafür weniger kosten für die
hardware hat

von Steffen H. (Gast)


Lesenswert?

Mag sein, aber für den privaten Gebrauch bzw. kleine Anwendungen langt
doch auch BASIC. Sonst würde es doch nicht so viele Leute geben die in
BASIC proggen.

von Tobi (Gast)


Lesenswert?

das liegt meiner meinung nach eher (ohne jetzt jmd zu nahe treten zu
wollen) daran, das die meisten leute unbedingt was mit uC machen wollen
aber die darunterliegende hardware noch nicht annähern verstanden haben.
basic abstarhiert mit seinen ganzen routinen zu sehr von der hardware
so, das man überhaupt nicht mehr verstehen muss wie der controller
arbeitet. nur wenn dann doch mal etwas low level code gebraucht wird
ist das geschrei wieder gross. oder wenn nach ein paar ganz 'simplen'
gleitkomma rechnungen und printf befehlen der flash voll ist auch.

ich hab nicht gegen basic als sprache an sich, nur gegen die
unwissenheit die, vor allem im hobbybereich, dadurch gefördert wird,
dass alles in fertigen funktionen erschalgen wird.

von ...HanneS... (Gast)


Lesenswert?

@Tobi: Schtümpth...

von Andi (Gast)


Lesenswert?

Es geht schon los mit Basic ne Ansteuerung eines LCD mit der
Read-Leitung zu machen wegen Busy-Abfrage: Keine Chance.
Oder ne andere Art der LCD-Ausgabe wie Zeilenscrolling für lange Texte,
nicht das ganze Display sondern jede Zeile für sich, und das wegen Tempo
über einen Buffer.
Man kann versuchen mit Basic eine eigene Ausgaberoutine für LCD´s zu
machen welche oben erwähntes kann, z. B. über Dimensionsfelder, aber da
wird der Code dann ganz schön dick und die Performance geht drauf.
In ASM und evtl. auch C ist es möglich, sich eigene
Input/Output-Routinen zu machen die von Grund auf das können, was man
will, in Basic wird das dann so zu sagen "Emuliert" da die
Basic-Befehle compiliert ja doch recht komplex sind.

Gruß
Andi

von Ratber (Gast)


Lesenswert?

@Harry/Thkais


Danke,ging runter wie Öl ggg


@Andi


Auch ne gehobene LCD-Ansteuerung ist mit Bascom möglich.
So wie die LCD,I2C,Gafikk-LC,1-Wire usw. Routinen in Bascom nur
Codemodule sind läst sich auch ein passendes für deine Zwecke
erstellen.

Ich nutze gerne Die beiden I2C-LCD- und I2C-Tastaturmodule und bin
zufrieden damit.

Man sollte also auch von Basic keine Wunder erwarten.

zudem lasen sich Basic und Assembler mischen.

von Tobi (Gast)


Lesenswert?

@andi
in c (zumindest avrgcc) ist es nicht nur möglich, sich seine routinen
zu machen - man muss sie sich sogar selber machen (oder fertige
suchen). dadruch hat man immer nur die funktionen die man wirklich
(öfters) braucht und der code bleibt schön schlank. und falls mal eine
leichte andere funktion gewünscht wird ändert man halt ein paar zeilen
code, denn man hat ja den zugriff auf alle routinen und weiss wo was
steht und wie es funktioniert.

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.