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: Schleifen Programmierung Kategorie: Programmierung Basic (von Dietmar_B - 16.08.2005 11:52)
 Als Antwort auf Re: Schleifen Programmierung von Gerhard - 16.08.2005 9:46
Dietmar_B nutzt:  CC1-Unit V1.1

>
> > Hallo zusammen,
> >
> > hab ein kleine Problem mit der Programmierung. Schleifen und Abfragen sind eigentlich kein Problem für mich, da ich C++ und andere Sprachen kann, aber C-Control bringt mich echt zum verzweifeln!
> >
> > Folgende Gedanke :
> >
> > Überprüfung ob auf Port1 ein Signal anliegt. Wenn ja, dann in Subroutine gehen und irgendwas machen.
> > Die Subroutine soll aber nur einmal aufgerufen werden und nicht bei jedem Loop!
> >
> > Versuchte Lösung :
> >
> > Hab mir ne Art Schutzvariable eingebaut. Beim ersten Durchlauf funzt das auch ganz gut, aber beim zweiten mal ändert er einfach immer das Bit in der Variable! Keine Ahnung warum!
> >
> > Code :
> >
> > define E1 port[1]
> > define E2 port[2]
> > define E1Schutz bit[1]          'Zustandsprüfer
> > define E2Schutz bit[1]          'Zustandsprüfer
> > define LEDBetrieb port[16]      'Betriebsanzeige
> >
> > #Loop
> >
> >         LEDBetrieb = ON
> >         if (E1 AND 1) = 1 AND E1Schutz = 0 then gosub Routine1
> >         if (E1 AND 1) = 0 then E1Schutz = 0
> >        
> >         if (E2 AND 1) = 1 AND E2Schutz = 0 then gosub Routine2
> >         if (E2 AND 1) = 0 then E2Schutz = 0
> >
> >        
> >
> > pause 50
> >
> > goto Loop
> >
> > #Routine1
> >         E1Schutz = 1
> >         print "Sende 1"
> > goto Loop
> >
> > #Routine2
> >         E2Schutz = 1
> >         print "Sende 2"
> > goto Loop
> >
> >
> >
> > Hat jemand ne idee?
> >
> > Danke
> >
> > Gruß
> >
> > Alex
>
>
> Hallo Alex,
>
> ... Bitvariable können nicht den wert 1 annehmen. Entweder on der off !!
>
> mal ein kleiner Auszug aus der Hilfe von CCBasic:
>
> Definition von Bitvariablen
> Bitvariablen können die Werte ON und OFF annehmen. Sie dienen so zur einfachen Speicherung von Zuständen (Flags). Vor der ersten Verwendung im Programm muß eine Bitvariable definiert werden.
>
>
> DEFINE varname BIT[index]varname gültiger Bezeichnerindex 1...192
> DEFINE flag BIT[1]
> Um eine Bitvariable (flag) abzufragen, schreiben Sie  IF flag THEN ...      
> oder  IF flag = ON THEN ...Falsch ist  IF flag = 1 THEN ...,
> da Bitvariablen nie den Wert 1 annehmen (ON ist ungleich 1!!!).
>
> Im übrigen definierst Du 2 unterschiedliche Variablen mit dem gleichen Bit (1)
>
> Gruß Gerhard
>
>
Hallo Alex,

ich weiß nicht ob meine Antwort noch wichtig ist, aber in Deinem Programm deffinierst Du:
.
.
define E1Schutz bit[1]          'Zustandsprüfer
define E2Schutz bit[1]          'Zustandsprüfer
.
.
Du speicherst also für beide Variablen im selben Bit. Das heißt, daß Du beim Schreiben von E2Schutz den Wert von E1Schutz überschreibst und umgekehrt.

Gruß
Dietmar

 Antwort schreiben

Bisherige Antworten: