Bascom : While-Wend ?

dg2ygq

Neues Mitglied
23. Juli 2007
239
0
0
Bielefeld
Sprachen
Die Schreibweisen sind immer noch rote Tücher für mich :eek:

Ich möchte eine Schleife programmieren, die so lange wartet bin Pin 0 von PortC wieder high ist (Taster) und dann weiter geht.

Ich dachte der While-Befehl hört sich passender als die If-Then -Geschichte an:

While Pinc.0 = 1
Wend
invalide datatype :rolleyes:

Kann ich damit nicht direkt auf Pin0 von PortC zugreifen, muss ich dem Pin erst einer Variablen zu weisen?
 
Hallo Michael,

auch wenn ich selber nicht mit Bascom programmiere, versuche ich hier mal zu antworten.

While Pinc.0 = 1
Wend


invalide datatype :rolleyes:

Kann ich damit nicht direkt auf Pin0 von PortC zugreifen, muss ich dem Pin erst einer Variablen zu weisen?

Ich denke mal dass hier zwischen while und wend das Statement fehlt
WHILE condition
statements
WEND
Es könnte auch sein, dass Bascom in condition nicht direkt Portpin-Zustände vergleichen kann, in dem Fall müsste man über eine Hilfsvariable Arbeiten, deren Wert man bei Statements durch den Portpin-Zustand zuweist und in Condition auswertet. Vor while müsste diese Variable entsprechend initialisiert werden.


Eine bessere Lösung ist aber wahrscheinlich:
Bitwait Pinb.0 , Set
Siehe dir vielleicht auch mal die Hilfe von Bascom an, dort findet man schnell sehr viele Informationen.

Grüße
Dirk
 
Hallo zusammen,

prinzipiell gibt es nichts an den von Michael verwendeten Statement auszusetzen.

Ich selbst habe den Code wie folgt

Code:
$regfile = "m128def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 32
$framesize = 40

$baud = 38400

While Pinc.0 = 1
   Print "*"
Wend

Do
Loop

auch ohne Print "*" nur mit

While Pinc.0 = 1
Wend

am Laufen uns es compiliert und es überträgt und es funktioniert. Auch in der BASCOM internen Simulation mit der man sich einzelne Programmabläufe ansehen kann funktioniert es auch. Eine Fehlermeldung "invalid datatype" bekomme ich nicht.

Und wieder einmal stehe ich vor einem Rätsel :mad:

Also, was tun, hmmmmm:
- Meine BASCOM-Version ist die 1.11.9.0. Ich kenne einige Fehler BASCOM betreffend in den älteren Versionen aber da war ein While-Wend-Fehler nicht mit dabei.
- Möglichkeit 1: Abfrage nicht direkt zu machen sondern über eine Variable
Code:
variable = 1
While variable = 1
     variable = Pinc.0
Wend
- Möglichkeit 2: Fehlerursache ist nur scheinbar an dieser Stelle wird aber durch eine andere Sequenz im Code verursacht. Hierzu sollte ich zur Analyse das gesamte Programm kennen. Michael; kannst Du mir den Gesamtcode mal zugänglich machen?

Das ist das schon an dem Thema: Wir stehen immer wieder vor neuen Rätseln und Herausforderungen :)

Grüße,
Markus
 
Ich versuche das nochmal mit while-wend.
In dem jetzigen Programm habe ich Dirk`s vorschlag mit Bitwait realisiert.

Kann durchaus möglich sein dass irgendwo anders schon ein Problem ist/war.

Erstmal Danke Euch beiden
 
Hi,

melde mich doch nochmal zu dem Thema bzgl. ein paar Hintergrundinfos.

Also, wenn Du das Problem it Bitwait gelöst hast und es funktioniert. Bitwait hat nur das kleine aber feine Problem, das der Code eben an der Stelle steht und wartet.

In der BASCOm Hilfe heißt es hierzu:
When using bit variables make sure that they are set/reset by software otherwise your program will stay in a loop.

Wenn Du also nix anderes in der Zwischenzeit tun möchtest oder musst und es egal ist ob der Programmablauf ggf. auf immer an dieser Stelle steht dann ist das ok.
Oft möchte oder muss man im Programmfluss auch noch was anderes nebenher rechnen oder prüfen und da ist man mit einem while-wend-konstrukt besser dran.

So könnte man z.B. in einem While-Wend auch einen Zähler mitlaufen lassen und so eine Art "Recovery-Mechanismus" umsetzen. Wenn also über eine ebstimmte Zeit X das Bit nicht gesetzt oder rückgesetzt wird dann wir eine andere Aktion erzwungen.....

Oh jee, jetzt gerate ich schon wieder ins Philosophieren. Ich hör schon auf damit, schön Tage,

Markus
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)