BASCOM: Klammern/Array

SchakKlusoh

Neues Mitglied
01. Feb. 2009
8
0
0
Sprachen
Hallo,

Ich programmiere in BASIC und wollte eine Tastenentprellung schreiben (und nicht DEBOUNCE verwenden).

Dazu habe ich mir eine Logik-Tabelle (mit alter Wert (A)/ neuer Wert (N)/ entprellter Wert (E)) gemacht.

.......E
AN...0..1
---+-+--
00 0 0
01 0 1
10 0 1
11 1 1

Ergebnis der Transformation (in BASIC):
...
'Tasten
Dim Tasten1alt as Byte
Dim Tasten1neu as Byte
Dim Tasten1 as Byte 'entprellter Wert
...
Tasten1neu = PortD
'Tastenentprellung
Tasten1 =(Tasten1alt AND Tasten1neu) or(TASTEN2 AND TASTEN2ALT) OR(TASTEN2 AND Tasten2neu)
Tasten1alt = Tasten1neu

Ich denke, inhaltlich ist das richtig (und selbst wenn nicht, kriege ich das schon irgenwie hin).
Mein Problem ist nun, daß der Compiler der Meinung ist, daß die Klammern ein Array bedeuten (AS expected [AS]). Wie kann ich diesem Dummbeutel beibringen, daß er einfach nur ein paar logische Operationen in der richtigen Reihenfolge machen soll?

Danke im Voraus.

Schak
 
Dummbeutel BASCOM

Hallo Schak,

ganz einfach, in dem Du die Operation "zerhackstückelst" und alles schon der Reihe nach machst!

Soweit mir bekannt und uns mir in der Vegangenheit auch bestätigt und in meinen Source-Codes auch eingehalten, kann BASCOM immer nur eine logische Operation nach der anderen.

Code:
Tasten1 =(Tasten1alt AND Tasten1neu) or(TASTEN2 AND TASTEN2ALT) OR(TASTEN2 AND Tasten2neu)

is nich!!!

Also, schön der Reihe nach:

Code:
Tasten1 = Tasten1alt AND Tasten1neu
....

Verschachtelte Operationen kann BASCOM nicht und BASCOm kennt auch die Klammer als Verschachtelung bzw. als Vorzugsregel nicht! Das ist das Problem.
Du wirst vermutlich auch ohne temporäre Variablen nicht auskommen.

z.B. so:

Code:
Temp1 = Tasten1alt AND Tasten1neu
Temp2 = TASTEN2 AND TASTEN2ALT
Temp3 = TASTEN2 AND Tasten2neu

Tasten1 = Temp1 OR Temp2
Tasten1 = Tasten1 OR Temp3

Grüße,
Markus

PS: Dies ist zunächst eine Hilfestellung zu BASCOM. Ich habe mir nicht genau angeschaut was Du da mit Deiner "Zustandstabelle" und den Variablen treibst und ob es funktioniert. Aber zu BASCOM konnte ich Dir hoffentlich weiterhelfen!
 
Hallo Markus,

Danke...
<< Verschachtelte Operationen kann BASCOM nicht und BASCOm kennt auch die Klammer als Verschachtelung bzw. als Vorzugsregel nicht! >>
Das erklärt alles.

Nunja, dann muß ich wohl dem Compiler ein bißchen Arbeit abnehmen ;-)

Um den Algorithmus mußt Du Dir keine Sorgen machen, das habe ich schon x-mal in diversen Assembler und in Pascal verwendet. Es ist im Prinzip nur ´best of three´ - der Pin-Zustand, der mindestens zweimal (alt, neu, (letztes) entprellt) vorkommt, wird als entprellt übernommen.

Und hier noch etwas ganz wichtiges: Tasten1neu = PortD ist natürlich ganz schlecht. Tasten1neu = PinD ... alldieweil BASCOM dem Jusä (völlig unnötigerweise) helfen möchte out und in zu unterscheiden.

Woher der Schreibfehler P´ort´ statt P´out´ kommt weissen ich nicht tun - ;-)

Danke

Schak
 

Ü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)