Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum 
Sie können sich hier anmelden
Dieses Thema hat 7 Antworten
und wurde 1.282 mal aufgerufen
 Bascom - Unser Einsteigerkurs
diezel Offline



Beiträge: 709

06.04.2013 23:27
[BEK07] Programm strukturieren Zitat · Antworten

Hallo,

entschuldigt bitte, daß ich Euch so lang hab warten lassen. Leider passieren Dinge, die man nicht beeinflußen kann. Jetzt hat´s mich (mal wieder) erwischt gehabt, für solche Sachen hier war leider keine Zeit mehr übrig. Aber mittlerweile hat sich die Lage wieder gebessert und wir können weiter machen.

Bevor wir ans Thema "Timer" gehen, sollten wir dieses Thema unbedingt noch durchkauen.

In Bascom hat man paar Möglichkeiten, ein bischen Struktur in den Code zu bringen. Das erleichtert einem das Leben ungemein. Z.B. bei der Fehlersuche, oder wenn man bestimmte Programmteile wiederverwenden möchte, empfiehlt es sich, das Programm modular aufzubauen.

Die schlechteste Möglichkeit ist hierbei der Befehl "Goto". Mit diesem Befehl wird der Programmablauf auf eine feste Sprungmarke umgeleitet.
Der Code wird aber dadurch sehr verschachtelt, eine Wartung oder spätere Änderung wird dadurch sehr schwer bis unmöglich. Bitte verwendet diesen Befehl am Besten gar nicht, oder nur sehr sehr sparsam.

Ein besserer Stil ist, das Programm in mehrere Unterprogramme aufzubauen. Das Programm wird dadurch viel leichter zu lesen und verstehen. In diese Unterprogramme, kann man z.B. wiederkehrende Befehlsfolgen oder auch ganze Programmteile schreiben.
Hier mal ein Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
$regfile = "m8def.dat"                                      'Mikrocontroller ist Atmega 8
$crystal = 8000000 'Arbeitsfrequenz 8 MHz
$hwstack = 40 'Hardware-Stack
$swstack = 32 'Software-Stack
$framesize = 60 'Frame
$baud = 19200 'serielle Übertragungsgeschwindigkeit
 
'*** Ein/Ausgänge deklarieren **************************************************
Config Portb = Output 'PortB als Ausgang
Led1 Alias Portb.0 'Ausgang PortB.0 heitßt ab jetzt "Led1"
Led2 Alias Portb.1 'Ausgang PortB.1 heitßt ab jetzt "Led2"
Led3 Alias Portb.2 'Ausgang PortB.2 heitßt ab jetzt "Led3"
 
'*** Variablen definieren ******************************************************
Dim Zaehler As Byte
 
'*** Hauptschleife *************************************************************
Portb.3 = 1 'LED an PB3 aus
 
Do 'Beginn Hauptschleife
 
For Zaehler = 1 To 5
Gosub Ausgaenge_setzen
Next Zaehler
 
Loop 'Ende Hauptschleife
 
End
 

'*** Subs **********************************************************************
Ausgaenge_setzen:
 
Led1 = 1
Led2 = 1
Led3 = 1
 
If Zaehler = 1 Then
Led1 = 0
Elseif Zaehler = 2 Then
Led2 = 0
Else
Led3 = 0
End If
 
Wait 1
 
Return
 


ist zwar ein relativ sinnfreies Beispiel, aber ihr solltet sehen, wie es abläuft:
Durch das "Gosub Ausgaenge_setzen" leiten wir den Programmablauf um. Damit wird direkt auf die Sprungmarke "Ausgaenge_setzen" gesprungen. (Achtet auf den Doppelpunkt hinter der Sprungmarke, beim Gosub darf es nicht dabeistehen.)
Jetzt wird der Code zwischen der Sprungmarke und dem "Return" abgearbeitet. Hier gibt´s nichts weiter zu beachten, alle Variablen die oben gegolten haben, gibt´s auch hier. Sie gelten also "global".
Nach dem "Return" wird wieder direkt hinter dem Gosub weitergemacht, in unserem Beispiel das "Next Zaehler".

Noch einen neuen Befehl hab ich Euch untergejubelt. Bei der Definition der Ein/Ausgänge habe ich das "Alias" verwendet:

1
 
Led1 Alias Portb.0
 


Wir geben dadurch dem Ausgang PortB.0 einen Namen. Wir können diesen im Code genauso verwenden, als würden wir PortB.0 schreiben. Für uns wird´s dadurch aber viel leserlicher. Ein späteres Ändern, z.B. wenn LED1 mal einen anderen Ausgang kommen soll, wird viel einfacher, weil es nur einmal geändert werden muß.


Bascom bietet noch 2 weitere Möglichkeiten, den Code zu strukturieren: "Sub" und "Function". Darauf geh ich mal später drauf ein, sind jetzt noch nicht passend.


Gruß
Gerhard

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog

Dateianlage:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
bek07.bas.txt

Scotch Offline




Beiträge: 415

06.04.2013 23:40
#2 RE: [BEK07] Programm strukturieren Zitat · Antworten

Hallo Gerhard,

vielen Dank für Dein neues Tutorial.
Ist wieder sehr gut und verständlich erklärt.

Gruß Ingo

------------------------------------------

Meine Webseite


Danexim Offline



Beiträge: 35

07.04.2013 12:40
#3 RE: [BEK07] Programm strukturieren Zitat · Antworten

Hallo Gerhard,

auch von mir vielen Dank. In der letzten Zeit hatte ich einiges um die Ohren, konnte mich nun aber wird mal einen vormittag an Bascom setzen.

Viele Grüße
Klaus


Tüftler_Senior Offline




Beiträge: 79

07.04.2013 12:58
#4 RE: [BEK07] Programm strukturieren Zitat · Antworten

Hallo Gerhard

Auch von mir ein ein Dankeschön für die guten Erklärungen!

So langsam Verstehe ich auch was in den div. Tiny`s im Hintergrund
so abläuft!
Bei mir wird es glaube ich noch ne`Zeit dauern bis ich was brauchbares
zustande bringe!

Habe gestern endlich mal meine H-Brücke fertig gestellt!
Nach diversen Problemen läuft sie jetzt!

Gruß Michael


Scotch Offline




Beiträge: 415

07.04.2013 13:03
#5 RE: [BEK07] Programm strukturieren Zitat · Antworten

Hallo Michael,

ich würde mich freuen, wenn Du Deine Erfolge auch veröffentlichen würdest.
Ich denke, gerade die Sachen mit der H-Brücke, ist für viele interessant.
Selbst wenn es nicht perfekt ist, kann man darauf aufbauen und Du bekommst evtl.
auch noch den einen oder anderen Tipp wie Du etwas verbessern kannst.

Gruß Ingo

------------------------------------------

Meine Webseite


Tüftler_Senior Offline




Beiträge: 79

07.04.2013 13:12
#6 RE: [BEK07] Programm strukturieren Zitat · Antworten

Hallo

Hier meine H-Brücke.
Hab sie als Zip dazugehängt.
Achtung Eagle 6 File!!

Muss aber zu meiner Schande gestehen mein Sohn hat sie mir geplant!

Gruß Michael

Dateianlage:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
H-Brücke Zetex1.zip

diezel Offline



Beiträge: 709

07.04.2013 14:03
#7 RE: [BEK07] Programm strukturieren Zitat · Antworten

Hallo,

schön daß ihr so voller Tatendrang seid.
Aber bleibt bitte hier in den Kursbeiträgen beim Thema. Es soll für später auch mal nachvollziehbar sein.

Erstellt doch für die H-Brücke ein eigenes Thema.

Danke!


Gruß
Gerhard

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog


Tüftler_Senior Offline




Beiträge: 79

07.04.2013 19:03
#8 RE: [BEK07] Programm strukturieren Zitat · Antworten

Hallo Gerhard

Entschuldige aber wo du recht hast hast du einfach recht!
Meine H-Brücke gehört nicht hier herein!

Habe bereits ein neues Thema aufgemacht!

Gruß Michael


 Sprung  

disconnected Mikromodell-Chat Mitglieder Online 4
Xobor Xobor Community Software
Datenschutz