www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wochentag aus Datum berechnen auf ATMEL AVR


Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat jemand schon mal so eine Routine in Assembler programmiert. Muß ja
nicht schon wieder das Rad neu erfinden.

Gruß Christof

P.S. Das habe ich eh schon viel zu oft ;-)

Autor: Malte __ (malte) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ja die Kunst dem richtigen Suchbegriff einzugeben.

Vielen Dank, werde mir das mal reiziehen

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das muss doch auch etwas eleganter gehen. Ohne 16-Bit Betrachtung und
durch 7 in einer Schleife teilen bis zum erbrechen. Mir reicht es auch
wenn die Schaltjahrberechnung bis 28.2.2100 funktioniert. Danach sollen
sich andere darum Gedanken machen. Die Sommer/Winterzeit-Umstellung ist
aber noch ein interresanter Aspekt.

Autor: Alex Trusk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex
Das sieht garnicht schlecht aus. Ich habe auf der Seite einen Link auf
http://de.wikipedia.org/wiki/Wochentagsberechnung gefunden, daraus
müsste sich eine effiziente Tabellen und Berechnungsmetode in Assembler
bauen lassen.

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/forum/read-1-116742...

Das Programm kann auch die Anzahl der Tage zwischen 2 "Datums"
(Daten) berechnen.
Der Wochentag berechnet sich aus dt2(t,m,j) modulo 7
Das könnte man mit Hilfe von Fixed-Point-Arithmetik gut hinbringen.

Freue mich, bald Deinen Code zu sehen!

Autor: Alex Trusk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://de.wikipedia.org/wiki/Zellers_Kongruenz scheint es auch noch zu
geben und kommt ohne lookups aus. muss ja nur einmal pro tag berechnet
werden, bzw ueberhaupt nur einmal und danach hochgezaehlt werden.

Autor: Oliver _. (verleihnix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Moin,

ich war zu fauel dazu und hab den DS 1307 verbaut, der kennt sich auch
mit Schaltjahren aus :-)


mfg
Oliver

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Oliver

"... der kennt sich auch mit Schaltjahren aus :-)"


Es könnte ja nicht schaden, mal die Frage zu lesen.

Von Schaltjahren war hier nirgends nicht die Rede.



@Christof,

anbei mal der Wochentag in Assembler


Peter

Autor: Oliver _. (verleihnix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter
Ich hatte ja "auch" geschrieben, dass heißt, dass das eine extra
Funktion zum Wochentag Problem gewesen wäre.

Du hättest aber auch lesen können, er wollte das Rad doch nicht neu
erfinden, der DS1307 ist so ein Rad.

mfg
Oliver

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Oliver,

"der DS1307 ist so ein Rad."


Ist er eben nicht !

Er kann nicht den Wochentag aus dem Datum berechnen, sondern man muß
den Wochentag extra stellen.
Er zählt nur den Wochentag parallel mit dem Datum hoch.


Peter

Autor: Oliver _. (verleihnix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter

Wo ist das Problem ? Der Code um mal den Tag einzustellen ist sicher
kleiner als ihn zu ermitteln, oder sehe ich das als nicht-Assembler
Experte falsch ?

Ist ja auch Togal, zu meckern gibs immer was ...

mfg
Oliver

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Oliver,

oben sprachst Du doch von Faulheit und das bedeutet für mich, daß mir
der MC überflüssige Arbeit abnehmen soll.

Und der Threadschreiber sieht das ja auch so, sonst hätte er nicht
danach gefragt.

Ich finde 16 Assemblerbefehle auch nicht so sonderlich aufwendig.



"Ist ja auch Togal, zu meckern gibs immer was ..."

Ich wollte nur klarstellen, daß der DS1307 diese Aufgabe nicht lösen
kann, daher also völlig fehl am Platze ist.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.