Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: verschachtelte Sprungziele Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Arne - 25.01.2006 15:07)
 Als Antwort auf Re: verschachtelte Sprungziele von Dietmar - 19.01.2006 11:38
Arne nutzt:  Open-Micro, Open-Mini
> 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

Bisherige Antworten:

Re: verschachtelte Sprungziele (von Dietmar - 25.01.2006 20:23)