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: ungewollter Stillstand im Programm Kategorie: C-Control I V1.2/2.0 (von Carsten - 20.12.2004 12:53)
 Als Antwort auf ungewollter Stillstand im Programm von Markus - 19.12.2004 11:39
Hallo, so wie ich das sehe, stört Dich ja nur, daß Du während des wait - Befehls die Tastatur nicht bedienen kannst (Das Programm "steht" ja nicht wirklich). Also entweder Du benutzt den Interrupt - Eingang für den "Reflextaster" und schreibst eine Interrupt - Routine (wahrscheinlich das Einfachste, siehe Beispiele), oder Du fragst zyklisch den Taster und die Tastatur ab:

#zaehler
#loop
  if reflextaster = inaktiverZustand then goto weiter
  a= a + 1

  pause 1 'Prellen und Mehrfachzählung des gleichen Impulses verhindern
  #loop1
  if reflextaster = aktiverZustand then goto loop1
  return

  #weiter
  gosub keydecode
  if keycode = wasDuWillst then return 'Rücksprung wegen Tastaturbetätigung
goto loop


> Hallo zusammen,
>
> Ich habe ein kleines Problem mit dem unten geschriebenen Programmabschnitt und hoffe ihr könnt mir dabei helfen. Es geht um mein Photovoltaikprojekt, welches ich hier schon mal gepostet habe. Und Dank der Hilfe von "Joe" habe ich mir einen Sensor gebastelt, der auf den Stromzähler geklebt wird und die Zählerscheibe auswertet. Bei jeder Umdrehung bzw. Unterbrechnung  durch den roten Strich der Scheibe bekomme ich einen Impuls. Das Problem liegt jetzt beim dem Befehl "wait". Wenn der Sensor nicht vom roten Strich unterbrochen wird bleib mein Programm stehen, weil er ja auf das Signal wartet. Gibt es noch eine andere Alternative zum wait Befehl?
>
>
> #aufzeichnen
> print "#CLR#";
> print "#L101#";:print "Impulse: 0     ";
>
> #aufzeichnen_weiter
> print "#L101#";:print "Impulse: ";a;
> oldsec=second
> 'Uhrzeit und Datum
> print"#L201#";:if HOUR<10 then print"0";:print HOUR;:print":";
> if MINUTE<10 then print"0";:print MINUTE;:print":";
> if SECOND<10 then print"0";:print SECOND;:print"  ";
> if day<10 then print"0";:print DAY;:PRINT".";
> if month<10 then print"0";:print MONTH;:print".";
>
> if (not reflextaster) then gosub zaehler
> gosub keydecode
> if keycode = 10 then goto menue
> goto aufzeichnen_weiter
>
> #zaehler
> wait (reflextaster)    ' wird benötigt, das nur bei abfallender Flanke ein Impuls gesendet wird
> if (reflextaster) then a = a+1
> return
>
> Vorab schon mal vielen Dank und noch ein schönes Wochenende
> Gruß Markus
>

 Antwort schreiben

Bisherige Antworten:

Re: ungewollter Stillstand im Programm (von Markus - 27.12.2004 18:36)