
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> > > 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 |