
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> Hallo Arne > > das von Dir gepostete zweite Programm wird vom Compiler OCBASIC exakt in den gleichen Tokencode übersetzt wie das folgende Programm, das ein ELSEIF verwendet. Ich habe es getestet. Es läuft bei mir wie erwartet fehlerfrei. Nimmt bei Dir vielleicht "licht" andere Werte als ON und OFF an, ist es also weder ein Port noch eine Bitvariable, sondern ein Byte? Oder ändert sich "licht" zu schnell oder prellt? Was genau funktioniert denn nicht? > > dim licht port[2] 'simuliert durch Tastendruck > dim led port[4] > dim impulse, weg byte > > weg=10 > > #Lichtschranke > impulse = 0 > repeat > if (Licht = OFF) then > LED = OFF > repeat : until (Licht = ON) > elseif (Licht = ON) then > LED = ON > repeat : until (Licht = OFF) > endif > #Schritt > impulse = impulse + 1 > print impulse > until (impulse > weg) > print "Ende." > return > > Gruß > Dietmar Dietmar, vielen Dank für Deine Hilfe. Bei meinem Code wurde die subroutine entweder nicht ausgeführt oder in rasender Geschwindigkeit durchlaufen, jedenfalls war ich immer sofort am Ende des Programms. Dein Hinweis auf prellende Eingänge oder ähnlich unsauberes ist natürlich naheliegend - aber ich hatte aus genau diesem Grund einen Schmitt-Trigger zwischen meiner Lichtschranke und dem Eingang geschaltet. Mit Else If funktioniert es jedenfalls. Beim Studieren MEINER subroutine war mir noch aufgefallen, dass ich ich ja mit meinem GOTO aus der IF-Umgebung herausspringe - darf ich das denn überhaupt? repeat if (Licht = OFF) then LED = OFF repeat : until (Licht = ON) Goto Schritt endif if (Licht = ON) then LED = ON repeat : until (Licht = OFF) endif #Schritt Gruß Arne |
| Antwort schreiben |