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: Blinker in Basic Kategorie: Programmierung Basic (von DerMoordeicher - 5.03.2004 10:30)
 Als Antwort auf Re: Blinker in Basic von ManfredW - 2.03.2004 15:36
>  
> > Hi,
> > ich bin zwar erst seit ein paar Wochen aktiv im CControl-Geschäft, aber ich machte es bei meiner
> > Rolladensteuerung testweise einmal so gemacht:
> > define  LED1 port[13]
> >
> > #loop
> >
> > ...
> > ..
> > LED1=(second mod 2)
> > ...
> > ..
> > goto loop
> >
> >
> > CController ManfredW hat natürlich recht, es darf nur EINE Schleife in der Steuerung geben. Nur zum
> > Entprellen von Tastern benutzte ich allerdings ein kurzes PAUSE  5 und WAIT
> > Dein Problem mit den TIMERN verstehe ich nicht, auch die benutze ich ständig. Wenn ich einen
> > Tastendruck eines Digiports festegestellt habe, merke ich mir die Sekunden auf einer BYTE-Variable
> > mittels SEKUNDEN_MERKER=second mod 60 . Auf  SEKUNDEN_MERKER addiere ich z.B. die
> > Konstante WARTE_ZEIT  (define WARTE_ZEIT 8) hinzu. Wenn
> > second=SEKUNDEN_MERKER+WARTEZEIT ist, dann kann ich darauf reagieren.Wenn man kürze
> > Zeiten als Sekunden abfragen will, dann nimmt man den Timer und speicher ihn auf eine WORD-Variable
> > und verfährt genauso.
> > Ich glaube bei ManfredW auch gesehen zu haben, dass er gewisse BITS der Timer Variable abfragt.
> > Da gibt es ein BIT welches z.B.  ca alle 1.3 Sekunden wechselt.
> >
> > Wenn ich mit meinen Äußerungen völlig schief liege, so möge man mir dieses gerne mitteilen.
> > In Kürze werde ich wie schon einmal angedroht meine Rolladensteuerung hier vorstellen.
> >
> > Gruß
> > ManfredST (DerMoordeicher)
> >
>
> Hallo,
>
>  muss zum Entprellen des Tasters wirklich "pause" eingefügt werden?
> Die Zeit für einen Programmdurchlauf (Zykluszeit) ist doch bei einer Rollladensteuerung sicher so lang,
> dass das Prellen bei der nächsten Abfrage schon beendet ist.
>
> Eine weitere Frage zu Deiner Wartezeit:
>  SEKUNDEN_MERKER = second mod 60
> Wozu dient in diesem Fall mod 60?
> Verbirgt sich dahinter ein Trick, indem Du  den Bereich größer 59 Sekunden nutzt?  
>  
> MfG ManfredW

Ich hätte natürlich vorher in meinen eigenen Programmcode sehen sollen, bevor ich quick anbd dirty
auf etwas antworte. Genau muss es so lauten:

SEKUNDEN_MERKER=(second+WARTEZEIT) mod 60

In der Schleife frage ich dann ab,   if second=SEKUNDEN_MERKER then .....

Jetzt ergibt das MOD 60 auch einen Sinn, denn  second+Wartezeit kann größer 60 werden, und damit
nie =SECOND werden (0-59). Durch MOD 60 erhält man ja den Rest bei ganzzahliger Division durch 60, und
der liegt auch zwischen 0 und 59.

Mit den Tastern und der Pause mags du recht haben. Ich habe diese Abfrage von Tastern stumpf aus
Handbüchern/Beispielen übernommen. Bei kleinen Programmen hatte ich ohne dieseTechnik aber wirklich
schon Probleme. Ich denke mir, somit  bin ich immer  auf der sicheren Seite.

Gruß ManfredST
 

 Antwort schreiben

Bisherige Antworten: