![]() ![]() 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 ---------------------------------------------------------- Passender Link: Website von Manfred Wilzeck Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |