INFO - FAQ - CC2-Forum - CCPro-Forum |
|
sowas hatten wir hier schon mal, allerdings finde ich den part mit der sekundengenauen steuerung nicht mehr. deshalb hier nochmal das komplette programm, das ich nachher noch kurz erläutere: 'Zeitschaltuhr - Glockensteuerung define i byte 'Schleifenzaehler define j byte 'Auslesepuffer define port_1 port[7] define port_2 port[8] ' Uhrzeit auf kurz vor 7:00:00 stellen (fuer Testlauf) hour = 7 : minute = 01 :second = 55 #main 'Hauptschleife, Hauptprogramm gosub SWITCHES goto main #SWITCHES 'Subroutine: Schaltzeittabellen auslesen, Ports setzen for i = 0 to 252 step 3 'minutengenaues Schalten, Port 1, maximal 84 looktab PORT_1,i,j if j = 99 then goto P1Loopend if j <> hour then next looktab PORT_1,i + 1,j if j <> minute then next looktab PORT_1,i + 2,j port_1 = j next #P1Loopend for i = 0 to 252 step 4 'sekundengenaues Schalten, Port 2, maximal 62 looktab PORT_2,i,j if j = 99 then goto P2Loopend if j <> hour then next looktab PORT_2,i + 2,j if j <> second then next looktab PORT_2,i + 1,j if j <> minute then next looktab PORT_2,i + 3,j port_2 = j next #P2Loopend ' i = second 'Diese zwei Befehle den Programmablauf synchen. ' wait i <> second 'Erst mit Anbruch einer neuen Sekunde gibt die 'die Routine dann ans Hauptprogramm zurück return 'Schaltzeittabellen mit Stunde, Minute, Portstatus 'maximal 84 Zeilen mit Zeiten, 'die letzte Zeile MUSS eine 99 enthalten! table PORT_1 ' hh : mm - H/L 07 00 1 07 01 0 07 02 1 07 03 0 07 04 1 07 05 0 07 06 1 07 07 0 07 08 1 07 09 0 07 10 1 07 11 0 99 'Tabellenende, stehen lassen! tabend 'Schaltzeittabellen mit Stunde, Minute, Sekunde, Portstatus 'maximal 62 Zeilen mit Zeiten, 'die letzte Zeile MUSS eine 99 enthalten! table PORT_2 ' hh : mm : ss - H/L 07 00 00 1 07 00 01 0 07 00 02 1 07 00 03 0 07 00 04 1 07 00 05 0 07 00 06 1 07 00 07 0 07 00 08 1 07 00 09 0 07 00 10 1 07 00 11 0 99 'Tabellenende, stehen lassen! tabend zu beachten ist hierbei, dass das unterprogramm einfach aus der hauptschleife heraus angesprungen werden kann, somit also jederzeit aufrufbar ist und die verwendeten variablen nur bedingt im hauptprogramm zur verfügung stehen, aber durchaus genutzt werden können. zweitens ist offensichtlich, dass man auf den ersten teil, der lediglich minutengenau schaltet, selbstverständlich verzichten kann, wenn man nur sekundengenau arbeiten kann und muss. man kann einfach die erste schleife und die dazugehörige tabelle einfach entfernen und muss die andere nur anpassen (digiport, labels und so weiter.) in die mainloop gehört natürlich dein sonstiges hauptprogramm und der punkt des uhrzeitstellens diente nur testzwecken, um zu sehen, ob das ding auch wirklich funzt wie ein uhrwerk. ich hoffe, das ist was für dich. Kay |
Antwort schreiben |