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: Zeitschaltuhr - Programm Kategorie: Programmierung Basic (von Kay - 13.11.2004 2:19)
 Als Antwort auf DCF 77 Zeitschaltuhr von Florian - 11.11.2004 20:37
Habs mal geschrieben und getestet - Im Simulator funktioniert's.
Intuitiv sieht das zwar nicht aus dank Rotstift zwecks
Speichersparwahns.
Dafür kommt das Programm in der Form mit 209 Bytes aus
und benötigt nur 2 Bytevarablen,  die woanders auch benutzt
werden könnten. Durch ergänzen weiterer Subroutinen und der
Main-Loop kann dein Kontroller noch vieles mehr tun.

'Zeitschaltuhr - Test

define rows_porttab1 4 'in diese konstanten ist die anzahl der zeilen
define rows_porttab2 2 'der jeweiligen tabellen abzüglich 1 einzutragen!

define i        byte    'Schleifenzähler
define j        byte    'Auslesepuffer

define out1 port[1]
define out2 port[2]

#main           'Hautpschleife

   if second = 0 then gosub switches

goto main


#switches 'Subroutine: Schaltzeittabellen auslesen, Ports setzen

   for i = 0 to 3 * rows_porttab1 step 3        'Zeilenanfangsandresse Tab 1 generieren
      looktab porttab1,i + 1,j
      if j <> minute then goto tab1_loopend  'falsche Minute? überspringe aktion
      looktab porttab1,i,j
      if j <> hour then goto tab1_loopend      'falsche Stunde? überspringe aktion
      looktab porttab1,i + 2,j
      out1 = j
      #tab1_loopend
   next

   for i = 1 to 3 * rows_porttab2 step 3        'Zelenanfangsadresse Tab 2 generieren
      looktab porttab2,i + 1,j
      if j <> minute then goto tab2_loopend  'falsche Minute? überspringe aktion
      looktab porttab2,i,j
      if j <> hour then goto tab2_loopend      'falsche Stunde? überspringe aktion
      looktab porttab2,i + 2,j
      out2 = j
      #tab2_loopend
   next

return

table porttab1 'Schaltzeittabellen mit Stunde, Minute, Portstatus
   07 08 1       'nach Zufügen von Zeilen ganz oben die Konstanten ändern!!!
   07 09 0
   07 10 1
   07 11 0
tabend
table porttab2
   07 12 1
   07 13 0
tabend


 Antwort schreiben

Bisherige Antworten: