Forum: Mikrocontroller und Digitale Elektronik Bascom DCF77 Parameter


von Patrick (Gast)


Lesenswert?

Hallo,

ich bin Bascom Anfänger und habe mich gerade an eine DCF77 Uhr gewagt. 
Klappt nach einigen Versuchen auch ganz gut. Ich kann Wochentag, Zeit, 
und Datum anzeigen. Naja eben soviel wie das Beispielprogramm bringt.

Gibt es da noch mehr Parameter wie "Dayofweek" etc. ? Wollte eigentlich 
noch die Kalenderwoche und den Kalendertag (also der wievieltste Tag im 
Jahr es ist) anzeigen nur kenne ich davon die Parameter nicht. In der 
Bascom Hilfe steht auch nicht viel.

Grüße

Patrick

von Karol B. (johnpatcher)


Lesenswert?

Dann informiere dich doch einmal was alles über DCF77 übertragen wird, 
z.B. hier (https://de.wikipedia.org/wiki/DCF77). Kalenderwoche wird 
nicht übertragen. Wenn überhaupt könntest du das selbst ausrechnen. 
"Dayofweek" entspricht doch dem Wochentag, welchen du ja nach eigenen 
Angaben bereits hast.

von Patrick (Gast)


Lesenswert?

Ja den Wochentag also Montag, Dienstag usw. kann ich anzeigen aber nicht 
wievielter Tag im Jahr es ist (Heut ist glaube ich der 163 Tag im Jahr) 
und welche Kalenderwoche (Diese Woche ist es die 24.) es ist. Wenn die 
Informationen nicht übertragen werden, dann kann ich diese doch bestimmt 
aus den Datumsinforamtionen herausrechnen . Nur wie? Habe schon 
gegoogelt aber keine Beispielcodes gefunden.

von Karl H. (kbuchegg)


Lesenswert?

Patrick schrieb:
> Ja den Wochentag also Montag, Dienstag usw. kann ich anzeigen aber nicht
> wievielter Tag im Jahr es ist (Heut ist glaube ich der 163 Tag im Jahr)
> und welche Kalenderwoche (Diese Woche ist es die 24.) es ist. Wenn die
> Informationen nicht übertragen werden, dann kann ich diese doch bestimmt
> aus den Datumsinforamtionen herausrechnen . Nur wie?

Eines nach dem anderen.
Kümmern wir uns erst mal um die Tagesnummer im Jahr.

Wenn DU höchstpersönlich das berechnen müsstest, wie würdest du das 
machen?

> Habe schon
> gegoogelt aber keine Beispielcodes gefunden.

Ist zwar ok, aber ein bischen nachdenken und selbst mit einer Strategie 
hochkommen, ist jedem zuzumuten. So lernt man dann auch noch den einen 
oder anderen BASCOM Befehl kennen und in welchen Fällen man ihn 
einsetzen kann.

von Patrick (Gast)


Lesenswert?

Naja also vorhin um den Kalendertag zu nennen habe ich das so 
ausgerechnet, indem ich die Monate genommen habe (es ist Juni also sind 
schon 5 volle Monate seit Jahresbeginn vergangen mit 3 x 31 tagen, 1 x 
29 und 1 x 30. Ausgerechnet sind das 152 Tage. Heute ist der 11. Also 
noch 11 dazuzählen und heute ist der 163. Tag im Jahr.

Jetzt müsste man das nur noch im Programm umsetzen. Aber wie gesagt ich 
habe gerade erst mit Bascom begonnen. Ich weiß das Bascom rechnen kann 
nur bräuchte ich jetzt erst einmal ein Beispiel

von Karol B. (johnpatcher)


Lesenswert?

Patrick schrieb:
> Nur wie? Habe schon
> gegoogelt aber keine Beispielcodes gefunden.
Das ist weniger eine Frage von Beispielcodes, sondern von entsprechenden 
Algorithmen im Allgemeinen. Und da wird es ein wenig problematisch, 
unter anderem auch deswegen, weil es verschiedene Definitionen von 
Kalenderwoche gibt. Da wirst du dich also ein wenig in die Materie der 
Kalender einarbeiten müssen.

Patrick schrieb:
> Naja also vorhin um den Kalendertag zu nennen habe ich das so
> ausgerechnet, indem ich die Monate genommen habe (es ist Juni also sind
> schon 5 volle Monate seit Jahresbeginn vergangen mit 3 x 31 tagen, 1 x
> 29 und 1 x 30.
Und das ist deswegen "problematisch", weil es Schaltjahre gibt. Um den 
"Kalendertag" zu bestimmen, musst du also zumindest ab dem 29. Februar 
bzw. 1. März wissen, ob das aktuelle Jahr ein Schaltjahr ist. Keine 
Ahnung, ob BASCOM da etwas anbietet, oder ob du das selbst bestimmen 
musst.

Patrick schrieb:
> Jetzt müsste man das nur noch im Programm umsetzen.
Das sind absolute Grundlagen, welche dir sicherlich in jedem (besseren) 
Tutorial bzw. Buch beigebracht werden.

von Karl H. (kbuchegg)


Lesenswert?

Patrick schrieb:
> Naja also vorhin um den Kalendertag zu nennen habe ich das so
> ausgerechnet, indem ich die Monate genommen habe (es ist Juni also sind
> schon 5 volle Monate seit Jahresbeginn vergangen mit 3 x 31 tagen, 1 x
> 29 und 1 x 30. Ausgerechnet sind das 152 Tage. Heute ist der 11. Also
> noch 11 dazuzählen und heute ist der 163. Tag im Jahr.

Ist schon ganz nett, geht aber auch noch einfacher.

Angenommen, du hättest eine Tabelle, in der die Tage im Monat für alle 
Monate aufgeschlüsselt sind (dann braucht dein Programm nämlich keine 
Regeln enthalten, welche Monate wieviele Tage haben), wie geht es dann?

Das sei die Tabelle

   31 28 31 30 31 30 31 31 30 31 30 31

und du musst wieder die Tagesnummer für den 11. 6. berechnen.

Dann brauchst du doch nur die Tage für die ersten 5(!) Monate addieren 
und dann noch 11 dazu. Oder?

Allerdings: Die Summen für die einzelnen Monate ändern sich ja nicht 
über die Jahre (mit Ausnahme von Schaltjahren). D.h. du kannst auch mit 
dem Taschenrechner die jeweiligen Tagessummen für den ersten Tag jedes 
Monat ausrechnen. Die Tabelle wird dann zu

  0 31 59 90 120 151 181 212 242 273 303 334

(ich glaub ich hab mich da in der Tabelle irgendwo verhaut. Rechne 
lieber nochmal nach)

Will ich also wissen, wieviele Tage bis zum 1. Februar vergangen sind, 
dann sehe ich einfach in dieser Tabelle beim 2.ten Eintrag nach (weil 
Februar der 2-te Monat ist)
Generell gesagt: Ich kann mir eine Tabelle herrichten, aus der ich eine 
Tagesnummer erhalte mit der ich alle Tage bis zum Beginn des Monats 
abdecken kann.

von Karl H. (kbuchegg)


Lesenswert?

Und jetzt siehst du dir mal die BASCOM 'Befehle'

LOOKUP    und
DATA

in der BASCOM Hilfe an.

von avr (Gast)


Lesenswert?

Kurzer Tipp:

Bis 2099 reicht für das Schaltjahr der Test ob durch 4 teilbar
(also Modulo(4) = 0 ).

Der 4 Januar liegt immer in der ersten KW ( Woche von Mo-So,
nach DIN).

Die Tabelle von Karl Heinz ist gut, aber besser direkt die
Tage der vorausgegengenen Monate eintragen, also
0,31,59,90,....   und dann +1 wenn Schaltjahr + Tag

AVR

von Karl (Gast)


Lesenswert?


von spess53 (Gast)


Lesenswert?

Hi

Brauchst du nur nach BASCOM übersetzen:

Beitrag "Kalender/Datum/Zeit-Funktionen in Assembler"

MfG Spess

von Patrick (Gast)


Lesenswert?

Karl schrieb:
> Schaut auch mal hier:
>
> http://avrhelp.mcselec.com/index.html?datetime.htm
>
> und speziell hier:
>
> http://avrhelp.mcselec.com/index.html?dayofyear.htm

Wunderbar. Genau das was ich gesucht habe. Und es funktioniert. Schade 
dass es kein "WeekofYear" gibt.

@spess: Ich kann Bascom kaum - Assembler kann ich gar nicht...

von Patrick (Gast)


Lesenswert?

Aber die Funktionen die das Assembler Programm hat, wären auch nicht 
schlecht. Wenn das jemand mit guten Assembler und Bascom kenntnissen 
übersetzen würde, dann wäre das genial. Wobei ich denke, dass das ein 
wenig länger dauern kann...

von spess53 (Gast)


Lesenswert?

Hi

Bei Bedarf habe ich auch noch eine neuere Version, die noch die 
Feiertagsberechnung (Bundeslandspezifisch) und das Datum für die 
Umstellung Sommer/Winterzeit enthält.

Aber abgesehen davon gibt es auch im Web Algorithmen für die 
Wochentagsberechnung. Ich bin auch in einem Brockhaus von 1936 fündig 
geworden.

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

Patrick schrieb:
> Karl schrieb:
>> Schaut auch mal hier:
>>
>> http://avrhelp.mcselec.com/index.html?datetime.htm
>>
>> und speziell hier:
>>
>> http://avrhelp.mcselec.com/index.html?dayofyear.htm
>
> Wunderbar. Genau das was ich gesucht habe. Und es funktioniert. Schade
> dass es kein "WeekofYear" gibt.

Schade.
Chance zum Lernen einer Basistechnik vertan.

von Karl (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Schade.
> Chance zum Lernen einer Basistechnik vertan.

Sorry, lag nicht in meiner Absicht. Die vielen fertigen 
BASCOM/BASIC-Befehle sind Fluch und Segen zugleich. Wenn sich der TO 
ernsthaft mit der Thematik beschäftigen möchte, wird er kaum drumherum 
kommen, mal etwas in der Art von Hand zu machen.

von Quarksl (Gast)


Lesenswert?

Hi,

bin von Google hierher gekommen. Suche auch nach einer Möglichkeit die 
Kalenderwoche zu berechnen.

Hat das jetzt nach der langen Zeit schon jemand mal hinbekommen?

von Thomas D. (thomasderbastler)


Lesenswert?


von Der Kalender (Gast)


Lesenswert?

Quarksl schrieb:
> Hat das jetzt nach der langen Zeit schon jemand mal hinbekommen?
Nee, das ist eines der großen, ungelösten Mathematik Probleme unserer 
Zeit.
Man hat gerade die JUQUEEN in Jülich darauf angesetzt, allerdings mit 
einer Brute-force Methode ohne wirkliche Intelligenz.

von Quarksl (Gast)


Lesenswert?

@Thomas der Bastler: Ja sowas suche ich! Danke.

@Der Kalender: Solche Leute wie dich braucht die Welt einfach... Die die 
einfach irgendwas dumm daherschmarrn und den Thread vollspammen aber in 
keiner Weise helfen...

von Thomas D. (thomasderbastler)


Lesenswert?

Quarksl schrieb:
> Ja sowas suche ich! Danke.

Tja ich bin auch der "Spinner" ThomasDerBastler hier...LoL

von MiWi (Gast)


Lesenswert?

Quarksl schrieb:
> @Thomas der Bastler: Ja sowas suche ich! Danke.
>

Oha! Da wird sich der Thomas freuen.


> @Der Kalender: Solche Leute wie dich braucht die Welt einfach... Die die
> einfach irgendwas dumm daherschmarrn und den Thread vollspammen aber in
> keiner Weise helfen...

Gerade solche braucht dieses Forum weil sonst kommen einem manchmal die 
Tränen.... vor Kummer. So kommen sie wenigstens ein bischen vom 
Schmuzeln....


iaW: Ist es denn echt so schwer die paar Zeilen weiter oben zu lesen und 
dann diese dämliche Berechnung nach eigenen Überlegungen durchzuführen? 
Ist ja mehr oder weniger "nur" eine kluge Division durch 7 und dann 
schauen was man mit dem Rest anfangen kann.....Das haben wir vor mehr 
als 30 Jahren - weil uns fad war - in der Schule mit dem TI52 (oder 
dieser kleine programmierbare Schultaschenrechner damals geheißen hat, 
50 register oder so) bzw HP41C gemacht.... Und da gabs noch kein 
Internet sondern "nur" einen dicken Papierschincken vom PPC-ROM in dem 
uns das Wunder der JDN erklärt wurde....

Grüße

MiWi

von Karl H. (kbuchegg)


Lesenswert?

Der Kalender schrieb:
> Quarksl schrieb:
>> Hat das jetzt nach der langen Zeit schon jemand mal hinbekommen?
> Nee, das ist eines der großen, ungelösten Mathematik Probleme unserer
> Zeit.
> Man hat gerade die JUQUEEN in Jülich darauf angesetzt, allerdings mit
> einer Brute-force Methode ohne wirkliche Intelligenz.

Lass gut sein.
Für manche ist das einfach höhere Mathematik auszurechnen der wievielte 
Tag im Jahr ein bestimmtes Datum ist und mit dieser Information, der 
Kentnis des Wochentags des 1.1. und der simplen Erkentnis, dass eine 
Woche 7 Tage hat, die Kalenderwoche zu einem Datum auszurechnen. OK, Ich 
geb zu, zum Jahreswechsel gibts da ein paar Regeln, die sind aber so 
kompliziert auch wieder nicht.

Heutzutage muss man schon froh sein, wenn sie es schaffen die realen 
Kosten eines Handies in 2 Jahren auszurechnen, wenn die Grundgebühr 
nicht Grundgebühr sondern Basisentgelt heißt.

von wire (Gast)


Lesenswert?

zwar in luna, aber das kannst du sicher nach bascom übersetzen:
1
year=2012
2
if ((year mod 4) = 0 and (year mod 100)<>0) or (year mod 400) = 0 then
3
  print str(year);" ist ein Schaltjahr"
4
else
5
  print str(year);" ist kein Schaltjahr"
6
end if

wire

von Jens S. (jens_s56)


Lesenswert?

Zum Schaltjahr, dazu nutze ich: Jahr AND 3,( ohne 100 und 400 Regel, da 
Jahr von 2000 bis 2099)
1
' Tag stellen es muss erst der Monat + Jahr bekannt sein, damit man weiß wieviele Tage im Monat sind
2
3
If _month = 2 Then                                          '  Sonderbehandlung für Febuar
4
 I = _year And 3                                            ' durch 4 teilbar ?  letzten zwei Bit verraten es
5
 I = I = 0                                                  ' wenn I = 0 dann 1
6
 Grenze = I + 28
7
Else
8
 Grenze = _month > 7                                        ' ab August (8 Monat) verschiebt es sich um 1
9
                                                                     '                 | 1 2 3 4 5 6 7 8  9 10 11 12
10
 Zahl = _month + Grenze                                     ' zu den Monaten addieren  | 1 2 3 4 5 6 7 9 10 11 12 13
11
 Zahl = Zahl And 1                                          ' prüfen ob ungerade Zahl  | 1 X 1 0 1 0 1 1  0  1  0  1
12
 Grenze = 30 + Zahl                                         ' ergibt 30 oder 31 Tage
13
End If
14
echo "Die Anzahl der Tage im Monat "; _mounth ; " ist " ; Grenze

Zur KW: Es war etwas tricky,
Bascom teilt Zahlen über 255 nicht mehr durch 7
Die Ausnahmen wenn der 1.1. in die 52/53 Woche fällt oder
Wenn der 31.12. schon 1. KW ist
1
Dim Bday As Byte : Dim Bmonth As Byte : Dim Byear As Byte : Dim Kalenderwoche As Byte : Dim T1 As Integer : Dim T2 As Integer
2
3
Kwrechnen:
4
5
6
Bday = 1 : Bmonth = 1 : Byear = _year                       ' 0=Mo, 1=Di, 2=Mi, 3=Do, 4=Fr, 5=Sa, 6=So
7
Wochentag = Dayofweek(bday)                                 ' Wochentag des 1. Jan berechnen 
8
T1 = Dayofyear()                                            ' aktueller Tag im Jahr
9
T2 = 8 - Wochentag                                          ' Anfang Jan berechnen ob 1. 2. 3. noch in 52/53 fallen
10
If _day < T2 And _month = 1 And Wochentag > 3 Then          ' der 1.Jan bis 3. Jan kann KW des Vorjahres sein, wenn Wochentag des 1.1. später als Do ist
11
 Decr Byear                                                 '  Jahr -1
12
  Bday = 31 : Bmonth = 12                                   '  31.12.Vorjahr
13
  T1 = Dayofyear(bday) : Wochentag = Dayofweek(bday)        ' Datum auf 31.12.xx setzen und damit rechnen
14
End If 
15
16
T2 = 1                                                      ' um 1 Tag verschieben
17
If Wochentag > 3 Then                                       ' wenn 1.1. später als Do                                    
18
 T2 = -6                                                    ' um -1 Woche + 1 Tag verschieben
19
End If
20
21
 
22
T1 = T1 + Wochentag                                         ' addieren
23
T1 = T1 + T2                                                ' Korrektur
24
25
T2 = 0 : Kalenderwoche = 0
26
Marke7:                                                     ' geteilt durch 7, über 255 ermöglichen!
27
T2 = T2 + 7 : Incr Kalenderwoche                            ' T2 hochzählen in 7-Schriten: Kalenderwoche=Kalenderwoche+1
28
If T1 > T2 Then Goto Marke7                                 ' noch mal?
29
                              ' ginge sicher auch mit For-Next 
30
31
If _month = 12 And _day > 28 Then                           'Ende des Jahres schon 1. KW?
32
 T1 = Dayofweek()                                           ' aktueller Wochentag
33
 If T1 < 3 Then : Kalenderwoche = 1 :  end if                     ' 
34
End If
35
36
37
38
Home : Lcd Date$
39
Locate 2 , 1 : Lcd "KW:" ; Kalenderwoche ; "  "             ' Ausgeben
40
41
While Taster1 = 1                                          ' warten
42
Wend
43
44
45
Gosub Datumstellen                                         ' Datum neu stellen
46
47
Goto Kwrechnen                                             ' Hier noch als Endlos Schleifen, später als Gosub/Return

: Bearbeitet durch User
von SamSon (Gast)


Lesenswert?

avr schrieb:
> Bis 2099 reicht für das Schaltjahr der Test ob durch 4 teilbar
> (also Modulo(4) = 0 ).

Kann mir bitte jemand von euch erklären, warum das nur bis 2099 reicht?

von spess53 (Gast)


Lesenswert?

Hi

>Kann mir bitte jemand von euch erklären, warum das nur bis 2099 reicht?

1.Ein Jahr ist ein Schaltjahr, wenn die Jahreszahl restlos durch 4 
teilbar ist.

2.Ein Jahr ist kein Schaltjahr, wenn es durch 4 und 100 restlos teilbar 
ist.

3.Ein Jahr ist ein Schaltjahr, wenn es sowohl durch 4, durch 100 und 
durch 400 teilbar ist

Jetzt wende mal die Regeln für 2100 an.

MfG Spess

von Cyblord -. (cyblord)


Lesenswert?

SamSon schrieb:
> avr schrieb:
>> Bis 2099 reicht für das Schaltjahr der Test ob durch 4 teilbar
>> (also Modulo(4) = 0 ).
>
> Kann mir bitte jemand von euch erklären, warum das nur bis 2099 reicht?

Es scheint als seien noch doch noch nicht alle vom Julianischen auf den 
Gregorianischen Kalender migriert. Und das nach so langer Zeit. Das wird 
sicher nur noch von IPv6 getoppt.

von SamSon (Gast)


Lesenswert?

cyblord ---- schrieb:
> SamSon schrieb:
>> avr schrieb:
>>> Bis 2099 reicht für das Schaltjahr der Test ob durch 4 teilbar
>>> (also Modulo(4) = 0 ).
>>
>> Kann mir bitte jemand von euch erklären, warum das nur bis 2099 reicht?
>
> Es scheint als seien noch doch noch nicht alle vom Julianischen auf den
> Gregorianischen Kalender migriert. Und das nach so langer Zeit. Das wird
> sicher nur noch von IPv6 getoppt.

Was, Wo Wie?? Was heisst hier neuer Kalender?
Aber nicht doch!
Wieso das denn?!
Da haben wir bei uns gerade erst mit den Hexenverbrennungen aufgehört 
und dann schon wieder was neues. :-D



spess53 schrieb:
> Jetzt wende mal die Regeln für 2100 an.
>
> MfG Spess

OK. Also dieses Wiki-Dings in diesem Inter-Teil hat mir gehilft. Oh 
Gott, immer diese neumodernen Sachen. Teufelszeug! :-D


Nöö, echt jetzt. Danke für die Hinweise. ;-)

von Jens S. (jens_s56)


Lesenswert?

Die Kalenderfunktionen von Bascom Dayofyear() und Dayofweek() 
funktionieren bis 2099, spätestens am 28.02.2100 auf dem 01.03.2100 gibt 
es ein Problem, weil Bascom einen 29.02.2100 zwischen schiebt!
Im Jahr 2000 hatten wir ja Glück, durch 4 teilbar also Schaltjahr,
durch 100 teilbar, also fällt es aus,
durch 400 teilbar, also fällt es doch nicht aus ;-)

Die meisten Realtime-Clocks arbeiten immer noch mit zweistelligen 
Jahren, 00-99 und dann wird eine 20 davor geklatscht
Bei DCF77 gibt es auch nur Jahr 00-99...

Und noch eine gute und schlechte Nachricht für alle die nur den Code 
kopieren. Die schlechte zu erst:
Bei Marke7: wollte ich durch 7 teilen, es rechnet aber etwas falsch, 
raus gekommen ist:
1
Kalenderwoche=(T1-1)/7+1

Die gute Nachricht, der Fehler wird korrigiert, so kommt das richtige 
raus.

Das Problem ist:
1
Kalenderwoche=T1/7
geht nur bis 36.KW, da 256/7 der Microcontroller überläuft und immer 1 
raus kommt.

Möglich wäre:
1
if Kalenderwoche > 200 then
2
 T1=T1-140           Rem 140/7=20
3
 Kalenderwoche=T1/7
4
 Kalenderwoche=Kalenderwoche+20 Rem jetzt können wir bis zur 57. KW rechnen, es gibt aber nur 53
5
else
6
 Kalenderwoche=T1/7
7
end if

oder ich probiere es mal mit einer For-Next Schleife....

Edit: der Code lässt sich sicher noch verbessern....

: Bearbeitet durch User
von Jens S. (jens_s56)


Lesenswert?

ich hoffe alle Fehler ausgemerzt zu haben:
1
Function Kw()                                               ' Kalenderwoche berechnen, von 2000 bis 2099
2
Local Bday As Byte : Local Bmonth As Byte : Local Byear As Byte
3
Local X As Byte : Local Kwoche As Byte : Local Wtag As Byte : Local T1 As Word
4
Rem _day, _month, _year werden von Bacom Software-Uhr definiert
5
Rem Declare Function Kw() As Byte               ' in dan Hautprogramm-Kopf
6
7
Bday = 1 : Bmonth = 1 : Byear = _year                       ' (c) Lizenz: dieser Code darf unter Nennung
8
X = Dayofweek()                                             ' des Authors j-g-s und unter Beibehalt
9
If _month = 12 And _day > 28 And X < 3 Then                 ' der Anmerkungen in eigen Projekte verwendet werden!
10
 Kw = 1                                                     ' der 29, 30 und 31.Dez. können schon 1. KW sein
11
Else                                                        '  Dayofweek(bday) gibt Wochentag des Tages bday aus
12
 Wtag = Dayofweek(bday)                                     ' 0=Mo, 1=Di, 2=Mi, 3=Do, 4=Fr, 5=Sa, 6=So,
13
 T1 = Dayofyear()                                           ' 0 - 365 fortlaufend, ( in Word oder Integer speichern)
14
 If Wtag > 3 Then                                           ' für Jahre die Fr, Sa ,So beginnen...
15
  X = 8 - Wtag                                              ' der 1.Jan, 2.Jan und 3. Jan kann KW des Vorjahres sein,
16
  If _day < X And _month = 1 Then                           'wenn der Wochentag des 1.1. später als Donerstag ist
17
   Bday = 31 : Bmonth = 12 : Decr Byear                     '  31.12.Vorjahr annehen
18
   T1 = Dayofyear(bday) : Wtag = Dayofweek(bday) :          ' und damit rechnen
19
  End If                                                    ' Dayofyear() mit leere Klammer prüft aktuellen Tag
20
 End If                                                     ' Dayofyear(bday) prüft das vorgegebes Datum
21
 If T1 > 200 Then                                           'geteilt durch 7, auch über 255 bis 400 ermöglichen
22
  X = T1 - 196                                              ' reduzieren auf Byte
23
  X = X + Wtag                                              ' verschieben um den Wochentag des 1.1.
24
  Kwoche = X / 7                                            ' geteilt druch eine Woche = 7 Tage
25
  Kwoche = Kwoche + 28                                      ' wieder addieren: 196/7=28
26
 Else                                                       ' Berechung wenn kleiner als 200, also kein Überlauf kommt:
27
  X = T1 + Wtag                                             ' verschieben um den Wochentag des 1.1.xx , in Byte speichern
28
  Kwoche = X / 7                                            ' geteilt druch eine Woche = 7 Tage
29
 End If
30
 X = Wtag < 4                                               ' um 1 Woche verschieben prüfen!
31
 Kw = Kwoche + X                                            ' Korrektur anwenden
32
End If
33
End Function

Aufruf mit:
1
Lcd Kw();".KW "

von Jens S. (jens_s56)


Lesenswert?

Der Zeit gibt es Probleme mit der Berechnung von 27.12. - 3.1. bei 
meiner KW-Berechnung.
Wenn ich den Hasen gefunden habe, stell ich noch mal einen neue Code 
ein...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.