
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> ' ============================================================================ > ' Einfache Wochentagsberechnung auf allen OM-Mikrocontrollern > ' In OCBASIC 1.12a_e1 von Dietmar Harlos am 7. Dezember 2018 > ' ============================================================================ > > ' Quelle: Die sehr gute Seite "Steuerung mit C-Control" von Manfred Wilzeck: > > ' http://manfred.wilzeck.de > > ' Siehe dort unter "2. Tipps und Tricks Teil 2": > ' "Teil 2 Fortsetzung Datum_berechnen:" > ' "Weiter zu Datum berechnen für Steuerungen:" > ' Im Kapitel "2.2.28) Einfache Berechnung des Wochentages für 2000 bis 2099" > ' stellt Manfred ein einfaches Verfahren zur Wochentagsberechnung vor. > > ' Auf den drei kleinsten OM-Mikrocontrollern muß LOOKTABBYTE durch LOOKTAB > ' ersetzt werden. Außerdem läßt sich nur bis ins Jahr 2046 rechnen, weil > ' der Term "(5 * Jahr + KM)" zu groß wird, da nur BYTE-Arithmetik zur > ' Verfügung steht. > > ' --- Definitionen für das System -------------------------------------------- > > 'INCLUDE "om.def" 'Definitionen für die Open-Micro und Open-Mini > 'INCLUDE "omid.def" 'Definitionen für die Open-Midi > 'INCLUDE "omac.def" 'Definitionen für die Open-Macro > INCLUDE "omax.def" 'Definitionen für die Open-Maxi > > ' --- Definitionen des Anwenders --------------------------------------------- > > DIM KM BYTE 'Variablen für Wochentagsberechnung definieren > DIM Tag BYTE > DIM Monat BYTE > DIM Jahr BYTE > > ' --- Das Hauptprogramm ------------------------------------------------------ > > PrintSpc=ON 'SPACE vor einem dezimalen PRINT ausgeben > > ?"Dezember 2018:" > FOR Tag=1 TO 31 > ?Tag;wochentag(Tag,12,18) > NEXT Tag > > ?"Januar 2019:" > FOR Tag=1 TO 31 > ?Tag;wochentag(Tag,1,19) > NEXT Tag > > End2Host=ON 'Nach Programmende in den Host-Modus > END 'Programmende, Neustart mit der Enter-Taste > > ' --- Subroutinen ------------------------------------------------------------ > > ' Einfache Wochentagsberechnung für 2000 bis 2099 > > ' Quelle: Die sehr gute Seite "Steuerung mit C-Control" von Manfred Wilzeck: > > ' http://manfred.wilzeck.de > > FUNCTION wochentag(Tag,Monat,Jahr) > LOOKTABBYTE wt_Konstante, Monat, KM ' Die Variable KM enthält nun den Wert aus der Tabelle > RETURN ((5 * Jahr + KM) / 4 + Tag - 1) MOD 7 + 1 ' Tag 1 bis 7 (Jahr 2-stellig für Jahr 2000 bis 2099) > END FUNCTION > > ' --- Tabellen --------------------------------------------------------------- > > TABLE wt_Konstante BYTE 0 23 7 8 20 0 12 20 4 16 24 8 16 TABEND > > ' --- Programmende ---------------------------------------------------------- Die Einschränkung "nur bis Jahr 2046" kann vermieden werden durch RETURN ((Jahr + KM) / 4 + Jahr + Tag - 1) MOD 7 + 1 ' Tag 1 bis 7 (Jahr 2-stellig für Jahr 2000 bis 2099) Frohe Weihnachten Meine Homepage: http://m |
| Antwort schreiben |