www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom, Programm verzeigen


Autor: Herr Umbrarum (mxvalentine)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen zusammen bin mir  gerade ein kleines App am basteln, und 
bin auf folgende Probleme gestoßen.

1. wenn ich if /elseif /elseif benutze dann geht der immer in den ersten 
elseif Schritt der möglich ist und fängt danach wieder bei if an anstatt 
alle elseif Befehle weiter abzuarbeiten die noch weiter unten stehen und 
auch alle Bedingungen erfüllt haben, ist das normal? O.o

2. wie bekomme ich es hin das ich das Programm verzweigen kann, sprich 
ich lasse gleichzeitig nen Timer von 5 sek ablaufen und solange blinkt 
ne Led mit 1 Hz? Ich hab es jetzt so hinbekommen, mit nem Counter aber 
finde das nicht so schön, deshalb wüsste ich gerne wie ich zwei 
parallele Stränge im Programm einbauen kann die gleichzeitig 
abgearbeitet werden.



Mit freundlichen Grüßen
der Bascom Noob :D

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zeig doch mal deinen Code...  :-/

Florian P. schrieb:
> geht der immer in den ersten elseif Schritt der möglich ist
Das ist das gewünschte Verhalten einer if-elsif-Kette. Du wirst 
vermutlich eine andere Vorgehensweise wählen müssen.

> deshalb wüsste ich gerne wie ich zwei parallele Stränge im Programm
> einbauen kann die gleichzeitig abgearbeitet werden.
Richtig parallel geht das nicht. Du hast nur 1 Prozessor, dun der kann 
nur jeweils 1 Befehl abarbeiten. Du wirst also (wie Windows und jedes 
andere Multitasking-OS) deine Rechenzeit auf die verschiedenen Aufgaben 
aufteilen müssen. Am einfachsten geht das, indem du in einer 
Dauerschleife anfangs die Eingänge einliest, dann schnellstmöglich die 
Ausgänge berechnest, und die Werte zum Schluss rausschreibst. So wie 
auch eine "übliche" SPS arbeitet.

Autor: Herr Umbrarum (mxvalentine)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja schön das ist mir auch schon so ziemlich klar gewesen aber mit 
welchen Befehlen erzeug ich eben den Effekt, das es scheint als ob er es 
parallel abarbeitet?
wie würde ein Programm aussehen bei dem 2 Led in unterschiedlichen 
Frequenzen blinken?

und mit welchen Anweisungen umgehe ich den Effekt von elseif das er auch 
noch die nachfolgenden Schritte abarbeitet?

Autor: weinbauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
select, case, ist auch ne schöne Struktur.

Naja, 4Hz und 1Hz "parallel" da langweilt sich der µC aber mächtig
dazwischen.

Du kannst zwei Timer verwenden und unterschiedlich preloaden,
dann nen Zähler hoch counten und schon läuft die Geschichte.
Kannst aber auch alles aus einem Timer heraus generieren.

Autor: Herr Umbrarum (mxvalentine)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@weinbauer

könntest du zu beidem vielelicht mal ein paar Zeilen Beispiel Programm 
schreiben? ^^

das wäre super, danke

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian P. schrieb:
> und mit welchen Anweisungen umgehe ich den Effekt von elseif das er auch
> noch die nachfolgenden Schritte abarbeitet?

das else im elseif einfach weglassen...

Autor: snowfly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in der Hilfe steht es so:

[...]
If A = 10 Then Print "New in BASCOM"
If A = 10 Then Goto Label1 Else print "A<>10"
[...]

also kein elseif, weil das wird immer ausgeführt wenn die If bedinung 
nicht passt, sondern nur mit if .. then .. den Bedinung-erfüllt-Fall 
abfragen und das für jede Bedinung.
Oder Select .. Case .. ist auch ganz gut für sowas.

Autor: Kluchscheißernder Nixwisser (kluchscheisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Elseif und Select Case sind zur Auswahl 1 aus x geeignet. Sobald ein 
Fall zutrifft, werden die restlichen nicht mehr geprüft.

Wenn Du alle Fälle prüfen willst und mehrere Fälle zur gleichen Zeit 
zutreffend sein können, dann musst Du eben für jeden Fall eine eigene 
If-Then-Endif-Abfrage schreiben.

MfG

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.