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: Überwachung eines Ports im Programm Kategorie: Programmierung Basic (von sl - 17.10.2004 20:36)
 Als Antwort auf Re: Überwachung eines Ports im Programm von Henrik - 17.10.2004 13:29
Es gibt noch eine weitere Möglichkeit:

man programmiert eine Hauptschleife die IMMER durchlaufen wird
innerhalb der Hauptschleife werden dann die verschiedenen Unterprogramme aufgerufen

in dieser Hauptschleife wird eine Zählvariable in regelmäßigen
Zeitabständen erhöht. Für relativ kurze Zeiten kann man dazu die
interne Variable timer verwenden

für größere Zeitverzögerungen eine Variable alle 1-n Sekunden um
eins erhöhen.


"warten" heißt in diesem Fall
das Programm speichert zu Beginn des Wartevorgangs
den aktuellen Zählerwert

dann wird bei jedem Hauptschleifendurchlauf geprüft
ob die Differenz zwischen (dann) aktuellem Zählerwert
und gespeichertem Wert größer "Wartezeit" ist wenn ja
ist die Wartezeit vergangen und dann wird die entsprechende
Aktion ausgelöst

sl

Demoprogramm:

define Zaehler word
define StartZeitSpeicher word
define SecondMem word

Zaehler = 0
StartZeitSpeicher = Zaehler

#loop

  if second <> SecondMem then gosub Zaehlererhoehen

  if Zaehler - StartZeitSpeicher > 120 then gosub MachWas
  'mach A bis Z auch während der "Wartezeit"

goto loop

#MachWas
   print "2 Minuten sind um"
   StartZeitSpeicher = Zaehler
return


#Zaehlererhoehen

  SecondMem = second
  Zaehler = Zaehler + 1

  if Zaehler > 32000 then Zaehler = 0
  print minute, second
 
return

durch diese Programmiertechnik kann man das Programm
alles mögliche Überwachen, steuern, regeln lassen
und trotzdem andere Dinge zeitverzögert ablaufen lassen

sl


>
> > Müsste noch erwähnen das es sich um die Micro- Version handelt.
>
> Ja, dann....
>
> > Was ist eine "Interruptroutine".
>  
> ... kannst Du das vergessen.
>
> Ein Interrupt unterbricht die "reguläre" Arbeit des Prozessors und arbeitet erst mal
> die ihm zugewiesene Routine ab. Der Interrupt kann durch ein Signal ab dem/den
> Interrupteingang(eingängen) oder per Software durch Timer ausgelöst werden.
>
> Die Micro bietet diese Möglichkeit nicht.
>
> Bleibt Dir also nur die Pausenerzeugung durch for... next.
>
> Henrik
>
> PS: arbeite Dich doch erstmal grundlegend in die Arbeit mit Microcontrollern ein.
> Du findest schon auf dieser Seite reichlich Links..

 Antwort schreiben

Bisherige Antworten: