Befehle durch Variable überspringen?

dg2ygq

Neues Mitglied
23. Juli 2007
239
0
0
Bielefeld
Sprachen
Ich möchte einen Programmteil überspringen, wenn eine Variable 0 ist, und den Befehl ausführen, wenn die Variable 1 ist.
Gibt es da eine schönere Möglichkeit als "IF Variable=1 Then..." ?

Code:
Auslesen:

    Schalter = Pina
[COLOR="red"]    If Schalter = &B00111100 And A = &B00101001 Then Kanal_offset = Not Kanal_offset       'Sprung von 40 auf 1
    If Schalter = &B00101001 And A = &B00111100 Then Kanal_offset = Not Kanal_offset
   'bei jedem Sprung über den Zustand 40-1 wird das Kanal_offset-bit gewechselt[/COLOR]    A = Schalter

    Kanal = Lookdown(schalter , Channel , 40)
    If Kanal = &HFF Then
      Portb = &B10000110
      Portd = &B10000110
      Wait 1
      Gosub Main
      Else
    End If

  [COLOR="Red"]  If Kanal_offset = 1 Then Kanal = Kanal + 40  [/COLOR]           'prüfen ob Kanal_offset 1 --> Kanäle 41-80

   Gosub Ausgabe
Return

Es geht um die Rote Zeile. Beim Einschalten will ich eine Variable auf 0 oder 1 setzen, demnach soll die rote Zeile aktiviert bzw deaktiviert werden ?!
(Variable = 1 soll bis 80 "zählen", Variable = 0 soll nur bis 40 Zählen)
 
Hallo ,

Code:
  [COLOR="Red"]  If Kanal_offset = 1 Then Kanal = Kanal + 40  [/COLOR]           'prüfen ob Kanal_offset 1 --> Kanäle 41-80

Es geht um die Rote Zeile. Beim Einschalten will ich eine Variable auf 0 oder 1 setzen, demnach soll die rote Zeile aktiviert bzw deaktiviert werden ?!
(Variable = 1 soll bis 80 "zählen", Variable = 0 soll nur bis 40 Zählen)

Kannst Du doch folgendermaßen machen ...
Code:
 ende = 0  (oder 1)

  endwert = 40 + (40 * ende) 
  [COLOR="Red"]  If Kanal_offset = 1 Then Kanal = Kanal + endwert  [/COLOR]           'prüfen ob Kanal_offset 1 --> Kanäle 41-80
und fertig ;)
 
Hallo Michael,

hierzu fällt mir einzig und alleinigt auch nur Das Thema "select .... case" ein. "while ..... wend" funktioniert auch, bildet aber ggf. auch eine Schleife die Du an dieser Stelle nicht möchtest. Durch geeignete Programmierung sicher auch einzusetzen.

Darüber hinaus gibt es noch das Thema "goto label". Goto war aber schon zu den guten alten Z80 Zeiten verpöhnt und ein guter Programmierer kommt ohne GOTO aus. Durch wildes hin-und-her springen wird ein Code mit GOTO sehr schnell unleserlich. Außerdem benötigst Du zum Sprung mit GOTO auch das IF den auf irgend eine Bedingung musst Du prüfen.

Zunächst würde ich sagen, versuch es einfach mal mit dem "select .... case".

Grüße,
Markus
 
Case Select
Puhhh, ich bekomms nicht hin :eek:

Ich habe eine Variable als Bit deklariert ....
Ist diese Variable = 0 soll das Programm die beiden roten Zeilen überspringen,
ist sie 1, sollen die beiden Zeilen abgearbeitet werden.

Ich hab mir zwar das Beispiel in der Bascom-Hilfe angeschaut, aber es will nicht.

Noch kurz zum Ablauf:
Dieses Bit soll nur direkt nach dem einschalten abgefragt werden, während das Programm läuft, brauch sich nichts mehr zu ändern.
Also beim Einschalten Taste gedrückt = Bit gesetzt (80)
Beim Einschalten Taste nicht gedrückt = Bit gelöscht (40)


Hilft mir doch mal bitte jemand auf die Sprünge :rolleyes:
 
Hallo,

ich glaube mich zu entsinnen, das ich in meinen Programmen auch mal mit so etwas verhauen habe. Das Problem ist die Bit-Variable, die mochte das Programm nicht. Hab ichs dann als Byte deklariert, lief alles perfekt.

Probiers mal aus.

Thomas
 
Jawoll, als Byte-Variable funktioniert das!

Code:
Select Case Cept
    Case 0 : If Kanal_offset = 1 Then Kanal = Kanal + 40
    End Select

Und ich such`mich dumm und dümmer .....

Super, vielen lieben Dank Knickohr !
 
Hallo,

funktioniert doch (mit der Bezahl- Version 1.11.9.3):

Dim a as boolean, b as bit
'
Select Case b
Case 0
a = 0, b = 1
Case 1
a = 1, b = 0
End Select
'
If b=0 Then
b = 1
else
b=0
end if
'
while b = 1
b = 0
wend
'
do
if a = 1 then b = 0
loop until b = 0
'
If Pinb.0 = 1 Then a = 1
'
Loop
End
Grüsse,

Michael
 

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