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 

 bitte kein BASIC ohne goto Kategorie: Verschiedenes (von Kay - 14.12.2004 18:41)
 Als Antwort auf Re: Klasse, Stefan! von Dietmar - 14.12.2004 18:18
> Ich halte es nach wie vor für notwendig, ein einzeiliges IF zu unterstützen.

ohne weiteren kommentar: dietmar hat recht

>
> Auch Deine Abneigung gegen GOTOs verstehe ich nicht. ....

richtig!

das folgende progrämmchen zur zeitschaltung von kirchturmglocken
hat man hier schon mal gesehen.
ohne einzeiliges IF und ohne GOTO würde dieses bißchen Schaltuhr
in meinen augen 'ne programmiertechnische katastrophe. vor allem
für den neueinsteiger, der eindeutig erstmal was intuitives brauchte.


'Zeitschaltuhr - Glockensteuerung
                                       '-----     WICHTIG!!! -----
define rows_belltimes     3 'in diese Konstanten ist die Anzahl der Zeilen
define rows_tappettimes 7 'der jeweiligen Tabellen ABZÜGLICH 1 einzutragen!

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

define port_belldrive  port[1]
define port_tappet     port[2]

#main         'Hauptschleife

   gosub switches

goto main


#switches 'Subroutine: Schaltzeittabellen auslesen, Ports setzen

   for i = 0 to 4 * rows_belltimes step 4    'jeweils Zeilenafang der Tabelle addressieren
      looktab belltimes,i + 2,j                   'Sekundensoll aus Tabelle holen
      if j <> second then goto bt_loopend  'falsche Sekunde? überspringen! sonst weiter
      looktab belltimes,i + 1,j                   'Minutensoll aus Tabelle holen
      if j <> minute then goto bt_loopend   'falsche Minute? überspringen! sonst weiter
      looktab belltimes,i,j                         'Stundensoll aus Tabelle holen
      if j <> hour then goto bt_loopend      'falsche Stunde? überspringen! sonst weiter
      looktab belltimes,i + 3,j                   'Portstatus holen
      port_belldrive = j                             'und setzen
      #bt_loopend
   next                                   'das wars, nächste Schleife

   for i = 0 to 4 * rows_tappettimes step 4
      looktab tappettimes,i + 2,j
      if j <> second then goto tp_loopend
      looktab tappettimes,i + 1,j
      if j <> minute then goto tp_loopend
      looktab tappettimes,i,j
      if j <> hour then goto tp_loopend
      looktab tappettimes,i + 3,j
      port_tappet = j
      #tp_loopend
   next                                     'das wars im ganzen   :-)

return

'Schaltzeittabellen mit Stunde, Minute, Portstatus
table belltimes
   06 58 00 1 'Glockenantrieb morgens
   07 02 30 0
   17 58 00 1 'Glockenantrieb abends
   18 02 30 0
tabend

table tappettimes
   06 59 50 1 'Knüppel morgens Start
   07 01 00 0 'Läut-Pause nach einer Minute
   07 01 30 1 'weiterläuten
   07 02 30 0 'Ruhe morgens
   17 59 50 1 'Knüppel abends Start
   18 01 00 0 'Läut-Pause nach einer Minute
   18 01 30 1 'weiterläuten
   18 02 30 0 'Ruhe abends
tabend

 Antwort schreiben

Bisherige Antworten: