Zeitfunktionen im HP 49G

Erläuterung der eingebauten Zeitfunktionen

Die hier verwendete Notation ist in einem gesonderten Beitrag zusammengestellt.

Inhalt:

Zur Beitragsübersicht


Die HP49-Uhr

Der interne Takt

Der HP 49G hat eine eingebaute Uhr. Diese besteht aus einem Taktgenerator, der mit 8192 Hz "tickt", der Name der internen Zeiteinheit ist "Ticks".

1 Sekunde = 8192 Ticks

Die Frequenz des Taktgenerators ist durch die Hardware bestimmt und kann durch den Benutzer nicht verändert werden. Der Taktgenerator zählt einen Zeitzähler hoch, aus dessen momentanem Wert sich Datum und Uhrzeit (die Systemzeit) berechnen lassen. Dieser Zeitzähler ist eine Speicherzelle, deren Inhalt (Wert) von außen durch Befehle gesetzt und verändert werden kann. Dabei achtet eine im Betriebssystem des Rechners eingebaute Plausibilitätskontrolle darauf, daß keine unsinnigen Werte eingegeben werden.

Welchen Einfluß hat "Höhertakten" des HP 49G?

Der HP 49G kann auch "schneller" gemacht werden, indem man durch Eingriffe in die Hardware die Taktfrequenz des Prozessors erhöht. Die Funktionen und Berechnungen und auch die Datenübertragungen werden dann entsprechend schneller ausgeführt.

Der von manchen Firmen angebotene SPEED-UP-Zusatz kann ein- oder ausgeschaltet werden. Leider hängt davon auch der Takt der Ticks ab, so daß die Uhr dann schneller läuft. Die Uhr und das Datum laufen dann nur noch, wenn der Rechner läuft (dann doppelt oder normal schnell).

Eine durchgehend genaue Uhrzeit ist bei Verwendung dieses Zusatzes nicht möglich, so daß dann auch die weiter unten gezeigte automatische Justierung nicht verwendet werden kann.

Zeitfunktionen im mitgelieferten Handbuch

Das mitgelieferte Handbuch behandelt ab Seite 2-24 kurz die Zeitfunktionen. Dort sind folgende Themen zu finden:

Das Menü TIME

Die Erläuterung der Darstellung von Tastenfolgen ist im Beitrag "Notation" zu finden.

Es gibt insgesamt 13 eingebaute Zeitfunktionen, die in einem 3-seitigen Menü zusammengefaßt sind.

Aufruf dieses Menüs mit [rightshift]&[TIME]:

Bild_1
Bild_1: Zeit-Menue 1
Bild_2
Bild_2: Zeit-Menue 2
Bild_3
Bild_3: Zeit-Menue 3
Bild_4
Bild_4: Zeit-Auswahl-Menue

Obige Bilder zeigen die typischen Zeitfunktionen:

Bild_1: [DATE], [->DATE], [TIME], [->TIME], [TICKS], [ALRM] (Untermenü),

Bild_2: [DATE+], [DDAYS], [->HMS], [HMS->], [HMS+], [HMS-],

Bild_3: [TSTR], [CLKADJ].

Das Zeit-Auswahlmenü (siehe Bild_4) ruft man über [rightshift][9] (= [rightshift][TIME] oder auch über [APPS][5][OK] auf:

Wählt man im Menü aus Bild_4 die Nr. 4 ("Tools.."), so kommt man wieder auf das oben genannte 3-seitige Menü.

Warnung

Bitte nicht Nr. 3 aus Bild_4 (= Eingabemaske für "Set time, date..") aufrufen, wenn die Systemzeit justiert und korrigiert worden ist und diese ungestört weiterlaufen soll.

Wenn man Nr. 3 dennoch aufgerufen hat und ...

  • die Uhr ungestört weiterlaufen soll, dann verläßt man diese Eingabemaske mit der Menüfunktion [CANCL],

  • alle dort angezeigten Felder mit den angezeigten Inhalten überschrieben werden sollen, dann verläßt man die Eingabemaske mit [OK].

 

Das Datum

Datum als Dezimalzahl

Der Taschenrechner verarbeitet das Datum als Dezimalzahl.

Der HP 49G bietet zwei Schreibweisen, wobei hier der laufende Tag des Monats mit TT, der laufende Monat im Jahr mit MM und die Jahreszahl mit JJJJ bezeichnet werden:

Hier wird die deutsche Schreibweise gewählt und das Systemflag -42 auf 1 gesetzt.
Der interne Zeitzähler, also die Systemzeit, wird durch diese Einstellung nicht berührt.
Der Rechner zeigt manchmal beim Datum nur die letzten beiden Stellen der Jahreszahl an (z.B. in den Eingabemasken). Die Jahreszahl muß immer vierstellig eingegeben werden, denn der HP49 rechnet intern immer mit der vierstelligen echten Jahreszahl, auch wenn er manchmal nur die letzten beiden Stellen anzeigt.

Zum Beispiel wird der 31. Dezember 2001 in deutscher Schreibweise als Dezimalzahl 31.122001 in den Stack eingegeben. Die Funktion [->DATE] übernimmt das im Stack eingestellte Datum als Systemdatum. Die Dezimalzahl verschwindet aus dem Stack.

Die Funktion [DATE] gibt das Systemdatum im eingestellten Anzeigeformat auf den Stack aus.

Falls, wie im Jahr 2000, nachstehende Nullen vorkommen, ist z.B. für den 15. Januar 2000 auch die angezeigte Dezimalzahl 15.012 eine gültige Datumsangabe, weil nachstehende Nullen bei bestimmten Formateinstellungen nicht angezeigt werden.

Historisch bedingte Grenzen

Der gültige Datumsbereich des HP 49G läuft vom 15.10.1582 bis 31.12.9999 (9999 ist das letzte Jahr mit vierstelliger Schreibweise!). Innerhalb dieser Grenzen können alle Datumsberechnungen durchgeführt werden. Der 15.10.1582 ist der erste Tag des neuen Gregorianischen Kalenders. Beim davor gültigen Julianischen Kalender bewegte sich der echte (astronomische) Frühlingsanfang (Tag-und-Nacht-Gleiche) im Laufe der Jahrhunderte immer weiter vom kalendermäßigen Frühlingsanfang weg. Im Jahre 1582 machte dieser Kalenderfehler bereits 10 Tage aus. Der astronomische Frühlingsanfang war 1582 schon am 11.März und nicht am 21. März. Deshalb wurden diese 10 Tage einfach herausgeschnitten. Auf Donnerstag, den 4.10.1582, ließ man einfach Freitag, den 15.10.1582, folgen. Bis sich das herumgesprochen hatte, dauert es ziemlich lange, bis alle ihren Kalender angepaßt hatten (Griechenland 1923).

Astronomische Zeitberechnungen

Für astronomische Zeitberechnungen sind die Zeitfunktionen des HP 49G nicht geeignet. Der Bereich vom Jahr 1582 bis zum Jahr 9999 ist dafür viel zu klein. Hier muß man die von den Astronomen verwendete Julianische Tageszählung ( "Julianisches Datum" = JD) heranziehen. Dies ist eine durchgehende Zeitachse, die am 1. Januar 4713 vor Chr. beginnt (JD = 0). Hier werden auch Kommastellen verwendet, weil nur dezimale Tagesbruchteile, aber keine Uhrzeiten verwendet werden. Der 1. Januar 2002, 12.00 Uhr hat das Julianische Datum JD=2452276,00. Die Formeln zur Umrechnung in Datum und Uhrzeit und umgekehrt sind seit Jahrhunderten bekannt und in jedem guten Astronomie-Lehrbuch zu finden.

Ein entsprechendes Umrechnungsprogramm mit allen Erläuterungen ist im Beitrag "Zeitrechnung" zu finden. Außerdem gibt es bei www.hpcalc.org auch astronomische Programme für den HP 49G.

Gültiger Eingabebereich für das Datum

Obwohl der HP 49G innerhalb seiner oben genannten Grenzen zwischen 1582 und 9999 mit dem Datum rechnen kann, nimmt er bei der Eingabe für das aktuelle Systemdatum nur Werte innerhalb der hundert Jahre zwischen 1.01.1991 und 31.12.2090 (beide Werte eingeschlossen) an.

Das Rechnen mit Datum und Tagen

Der HP 49G bietet zwei Möglichkeiten, mit dem Datum zu rechnen.
Dazu stellt man die Anzeige am besten auf 6 Kommastellen (FIX 6) ein.

  1. Von einem Datum x Tage in die Zukunft (+) oder in die Vergangenheit (-) rechnen:
    Funktion [DATE+]
  2. Die Differenz (vorzeichenrichtig) in Tagen zwischen zwei Datumsangaben berechnen:
    Funktion [DDAYS].

Beispiele zu [DATE+]:

10.012000 in Stackebene 2 (= 10.01.2000)
100 in Stackebene 1 (= 100 Tage in die Zukunft, weil Wert positiv)
[DATE+] liefert das Ergebnis 19.042000, also den 19.04.2000

19.042000 in Stackebene 2 (= 19.04.2000)
-100 in Stackebene 1 (= 100 Tage in die Vergangenheit, weil Wert negativ)
[DATE+] liefert das Ergebnis 10.012000, also den 10.01.2000

Beispiele zu [DDAYS]:

10.012000 in Stackebene 2 (= vom 10.01.2000)
19.042000 in Stackebene 1 (= bis 19.04.2000)
[DDAYS] liefert die Zahl 100.000000 als Differenz

19.042000 in Stackebene 2 (= vom 19.04.2000)
10.012000 in Stackebene 1 (= bis10.01.2000)
[DDAYS] liefert die Zahl -100.000000 als Differenz

Die Uhrzeit

Der Taschenrechner verarbeitet die Uhrzeit als Dezimalzahl.

Wenn HH die laufende Stunde des Tages, MM die laufende Minute der aktuellen Stunde, SS die laufende Sekunde der aktuellen Minute und ss die Hundertstel der laufenden Sekunde angeben, dann wird die Uhrzeit als Dezimalzahl so dargestellt: HH.MMSSss. Diese Darstellung in Stunden, Minuten und Sekunden (HMS-Format) verarbeitet der Rechner bei der Eingabe [->TIME] und bei der Ausgabe [TIME] der Uhrzeit direkt.

Eingabe und Ausgabe der Uhrzeit

Eingabe der Uhrzeit:
Die Uhrzeit wird als Dezimalzahl im HMS-Format in den Stack eingegeben.
Z.B. wird für 14:20:25 Uhr die Dezimalzahl 14.2025 in den Stack eingegeben.

Diese Zahl sollte eine gültige Uhrzeit darstellen, die demnächst erreicht wird. Mit Hilfe einer genauen Vergleichsuhr (DCF77-Funkuhr) wird dieser Zeitpunkt abgewartet und dann mit Erreichen dieser Sekunde synchron die Funktion [->TIME] ausgelöst, so daß ab diesem Tastendruck die Uhr mit der Vergleichsuhr synchron laufen sollte. Oder man verwendet Tools (siehe AdjustCk, JUST, ClckAdjst) zum genauen Einstellen und Korrigieren der Uhrzeit.

Kontrolle der Uhrzeit:
Ob dies zutrifft kann man mit der Funktion [TIME] überprüfen. Man drückt zu einen bestimmten Zeitpunkt gemäß der Vergleichsuhr auf die Sekunde genau die Taste für die Funktion [TIME], der ausgegebene Wert sollte der Uhrzeit auf der Vergleichsuhr zum Zeitpunkt des Tastendruckes übereinstimmen.
Die Uhrzeit kann auch sehr bequem mit dem Tool ACC beobachtet und kontrolliert werden (siehe unten).

Die laufende Anzeige von Datum und Uhrzeit

Beim HP 49G kann man sich die Systemzeit laufend anzeigen lassen, wenn man das Systemflag -40 auf 1 setzt. Wenn das Systemflag -67 gelöscht ist (Voreinstellung!), dann wird die Uhrzeit und das Datum digital angezeigt (Bild_5).

Bild_5
Bild_5: Digitale Anzeige von Uhrzeit und Datum
Bild_6
Bild_6: Analoge Anzeige der Uhrzeit

In der rechten oberen Ecke der LCD-Anzeige wird die Uhrzeit (Stunde:Minute) und Datum (Tag:Monatsname), aber nicht das Jahr, angezeigt. Setzt man das Systemflag -67 auf 1, dann wird die Uhrzeit analog (mit Zeigern) angezeigt (Bild_6). Der Doppelpunkt bei der Uhrzeit im Bild_5 fehlt, weil dieser im Sekundentakt blinkt und das Bild_5 gerade in dem Moment gemacht wurde, als er "weg" war.

Keine tolle Analog-Anzeige

Zwischen den beiden Bildern ist ein Zeitunterschied festzustellen: Digital zeigt die Uhr hier 21:43 Uhr, aber die Analog-Anzeige steht auf 21:40 Uhr, obwohl das zweite Bild um 21:44 Uhr gemacht worden ist. Des Rätsels Lösung ist, daß der Minutenzeiger der Analog-Uhr des HP 49G nur volle 5-Minuten anzeigen kann. Er springt dann von 21:40 auf 21:45 Uhr. Der kleine Zeiger ist so ungenau positioniert, daß man auch 20:40 ablesen könnte. Bei 20:45 stehen beide Zeiger auf der "9", also waagrecht nach links. Bei 21:50 steht der kleine Zeiger auf "9" und der große auf "10", bei 21:55 auf "9" und "11". Erst um 22:00 Uhr stimmt's wieder. Die Analog-Uhr kann man getrost vergessen. Es gibt ja ACC (siehe unten).

Umschaltprogramme

Für die Umschaltung auf Uhrzeitanzeige und Digital/Analag kann man sich zwei Programme machen:

  1. Für die Ein-/Ausschaltung der Anzeige erhält das Programm folgenden Text
    « -40 FS? IF 1 == THEN -40 CF ELSE -40 SF END »
    (siehe auch Bild_5),
    den man in die Variable 'UHR' abspeichert:. Dann kann man mit [UHR] die Anzeige einschalten und mit einem zweiten Tastendruck auf [UHR] die Anzeige wieder abschalten.

  2. Die Umschaltung von digitaler Anzeige mit Uhrzeit und Datum auf analoge Anzeige erhält das Programm folgenden Text « -67 FS? IF 1 == THEN -67 CF ELSE -67 SF END » (siehe auch Bild_6), der in die Variable 'ANALOG' abgespeichert wird. Die Umschaltung in den einen oder anderen Zustand erfolgt durch Tastendruck auf [ANALOG].

Achtung: Bei manchen Datenübertragungen wird vorgeschrieben, daß die laufende Anzeige der Uhr ausgeschaltet sein muß, d.h. das Systemflag -40 muß gelöscht sein.

Empfehlung: Laufende Anzeige der Uhrzeit bei Datenübertragungen immer ausschalten, dann braucht man nicht darauf zu achten.

Tool: ACC = (analog clock + calendar)

Da der HP 49G selbst keine tolle Analoganzeige bietet, sei in diesem Zusammenhang auf das Tool ACC hingewiesen. Es bietet eine Analog-Uhr und einen Kalender für den HP 49G.
Die Autoren von ACC sind:

FTP-Download direkt von der Site von Herrn Prof. Dr. Wolfgang Rautenberg:

oder von www.hpcalc.org:

Beschreibung:

ACCde: Analoguhr und KalenderMan lädt sich die Dateien ACCde.txt und ACCde für die deutsche Version herunter oder extrahiert sie aus der Datei ACCeuro.zip.

ACCde.txt ist die deutsche Beschreibung,
ACCde ist das deutsche Programm (siehe Bild rechts). Es wird auf den HP 49G übertragen. Nach dem Aufruf läuft das Programm sofort los und läuft solange, bis es mit [ON] beendet wird.

Mit nur 4 Tasten kann das Programm bedient werden:

Die restlichen Tasten schalten den HP aus: Beim nächsten Einschalten läuft das Programm sofort weiter (Autostart) bis es mit [ON] beendet wird.

Das Rechnen mit Uhrzeiten und Zeiträumen

Summen und Differenzen von Uhrzeiten oder Zeiträumen

Summen und Differenzen von Uhrzeiten ergeben wieder Stunden, Minuten und Sekunden im HMS-Format. Dieses Format wird für die Uhrzeit und für die Länge eines Zeitraumes (Dauer) gleichermaßen verwendet.

Hier soll nicht mit negativen Zeiten gerechnet werden, deshalb wird für die Bildung der Summe die Funktion [HMS+] und für die Bildung der Differenz die Funktion [HMS-] verwendet. Bei der Bildung der Differenz muß die größere Zahl in Stackebene 2 stehen.

Es müssen jeweils zwei Dezimalzahlen im HMS-Format im Stack stehen, die eine gültige Uhrzeit darstellen. Eine gültige Uhrzeit ist die Dezimalzahl HH.MMSSss dann, wenn MM <60 und SSss < 60 sind. Dabei werden jeweils die seit 0:00 Uhr des älteren Tages vergangenen Stunden der beiden Zeitangaben voneinander abgezogen.

Beispiel:

Es soll der Zeitraum vom 21. Januar 20:53:46 Uhr bis 25. Januar 8:22:02 Uhr berechnet werden.

  1. Dazu wird die Dezimalzahl 4*24 + 8.2202 = 104.2202 (= seit 21. Januar 0:00 Uhr bis 25. Januar 8:22:02 Uhr vergangene Stunden) in Stackebene 2 gestellt.

  2. Davon müssen noch die Stunden des 21. Januar abgezogen werden. Für 20:53:46 Uhr wird der Wert 20.5346 in Stackebene 1 gestellt.

  3. Als Ergebnis nach Aufruf der Funktion [HMS-] steht 83.2816 im Stack.
    Das sind 83 Stunden, 28 Minuten, 16 Sekunden.

Umrechnung in dezimale Stundenbruchteile

Mit der HMS-Funktion [HMS->] kann man die Uhrzeit oder einen in HMS-Format angegebenen Zeitraum so umrechnen, damit nach dem Komma dezimale Stundenbruchteile entstehen:
Z.B. werden dann 3 Stunden, 15 Minuten und 36 Sekunden als 3.2600 (dezimale) Stunden ausgegeben.

Diese "dezimalen Zeiten" sind Dezimalzahlen, mit denen ganz normal gerechnet wird.

Am Schluß der Berechnungen werden mit der Funktion [->HMS] aus Stunden mit Dezimalbruchteilen wieder Stunden, Minuten und Sekunden als Uhrzeit oder als Zeitspanne.

Winkel in Altgrad (DEG)

Die HMS-Funktionen gelten nicht nur für Zeitangaben, sondern sie können auch für die Winkel, die in Altgrad angegeben sind, verwendet werden. Altgrad haben 60 Minuten und die Minuten haben 60 Sekunden. Summen und Differenzen sowie dezimale Altgrad lassen sich ähnlich berechnen und umrechnen wie die Zeitangaben.

 

Der Trick mit den Ticks

Zu Beginn wurde gezeigt, daß die Uhr mit einem Takt von 8192 Ticks pro Sekunde läuft. Sie zählt dabei einen Zeitzähler hoch.

Im Wert dieses Zeitzählers sind Datum und Uhrzeit versteckt. Initialisieren (Eingeben) kann man die Systemzeit durch [->DATE] und [->TIME], die der Zeitzähler dann übernimmt und von da aus weiterzählt.

Ausgabe der Ticks

Der Wert dieses Zeitzählers kann in binärer Schreibweise als Hexa-, Oktal-, Binär- oder dezimale Integerzahl über die Funktion [TICKS] ausgegeben werden und stellt einen binären Zeitstempel dar, der vielfach benutzt werden kann. Diese Zahl hat eine Basis von 64 Bit.

So lautet das Ergebnis in Ticks z.B. für den 1.01.2000 und die Uhrzeit 12:00 Uhr :

Die Angabe HEX, DEC, OCT, BIN sind die Anzeige-Modi. Der jeweils gültige Modus steht in der Anzeige links oben auf dem LCD-Bildschirmchen als dritte Dreiergruppe.

Ticks können nicht eingegeben werden, es sei denn man gibt Datum und Uhrzeit als Systemzeit ein (man verstellt die Systemzeit!). Dann kann man die gewünschten Ticks zum vorbestimmten Zeitpunkt ausgeben. Einfacher ist es aber mit einer Umrechnung per nachstehender Formel von der Systemzeit in Ticks und umgekehrt. Entsprechende benutzerdefinierte Zeitfunktionen werden als Programme am Ende des Beitrags zur Verfügung gestellt.

Die Formel für die TICKS

Der Inhalt des Zeitzählers wird durch den Befehl TICKS ausgegeben und steht dann im Stack. Darin sind Datum und Uhrzeit enthalten.

Die geheimnisvolle Formel für die TICKS lautet:

t = ( ( ( ( int( (JJJJ * a) + 0.5 ) + D ) * 24 + HH ) * 60 + MM ) * 60 + SS.ss ) * 8192

Erläuterung:

Das Ergebnis ist eine sehr große ganze Zahl t, die mathematisch genau ist.

Das obige Beispiel für den 1.Januar 2000 12:00 Uhr wird mit dieser nachgerechnet und ausführlich dargestellt:

  1. 2000 * 365.242198781 = 730484.397562
  2. aufrunden: 730484.397562 + 0.5 = 730484.897562,
  3. die Integerfunktion IP macht daraus 730484.0 .
  4. Umwandlung in dezimale Binärdarstellung, indem zuerst der Befehl DEC und dann der Befehl R->B zur Ausführung kommt, ergibt: #730484d.
  5. Dazu wird D = #1d addiert, weil der 1. Januar der erste Tag des Jahres ist: #730785d.
  6. #730785d * #24d = #17531640d (umgerechnet in Stunden)
  7. #17531640d + #12d = #17531652d (laufende Stunde wurde addiert)
  8. #17531652d * #60d = #1051899120d (in Minuten umgerechnet). Da keine laufenden Minuten und Sekunden vorkommen, kann anschließend gleich mit 60 (für Sekundenanzahl) und mit 8192 (für die Ticks) multipliziert werden:
  9. #1051899120d * #60d * #8192d = #517029455462400d.

Die Umwandlung von Datum und Uhrzeit in Ticks als Binärzahl in DEC-Darstellung ergibt also:
# 517029455462400d
(q.e.d = was zu beweisen war), wie oben angegeben.

Rechnete man das Ganze in normalen reellen Zahlen (Kommazahlen), dann könnten sich durch die interne Umrechnung von binären in reelle Zahlen Ungenauigkeiten einschleichen. Das Ergebnis läge aber nur einige "Ticks" daneben.

Bei der Rückrechnung, also der Umrechnung von Ticks in Datum und Uhrzeit, ist es wichtig, daß die Jahreslänge 365.242198781 mit der vollen Genauigkeit eingesetzt wird, wenn sie als Divisor verwendet wird. Sonst wird das Datum um 1 Tag falsch berechnet oder die Uhrzeit wird um einige Sekunden falsch berechnet.

Programme zur Umrechnung von Datum und Uhrzeit in Ticks und umgekehrt

Datum und Uhrzeit in Ticks umrechnen mit Programm DUT

(DUT heißt: "Datum/Uhrzeit in Ticks")

  1. Das Datum im Systemformat steht als Dezimalzahl in Stackebene 2
  2. Die Uhrzeit im Systemformat steht als Dezimalzahl in Stackebene 1
  3. Das Programm DUT nimmt diese beiden Zahlen vom Stack und
  4. stellt die Binärzahl mit den entsprechenden Ticks in den Stack.

Das Programm DUT muß dazu per Connectivity Kit auf den HP 49G übertragen werden.

Ticks in Datum und Uhrzeit umrechnen mit Programm TDU

(TDU heißt: "Ticks in Datum/Uhrzeit")

  1. Die Binärzahl mit den Ticks wird in den Stack gestellt
  2. Das Programm nimmt diese Zahl vom Stack und
  3. stellt das Datum im Systemformat als Dezimalzahl in Stackebene 2 und
  4. stellt die Uhrzeit im Systemformat als Dezimalzahl in Stackebene 1.

Das Programm TDU muß dazu per Connectivity Kit auf den HP 49G übertragen werden.

Das Rechnen mit Ticks

Die Funktion TICKS kann man innerhalb von Programmen zur Messung der Laufzeiten von bestimmten programmierten Abläufen anwenden.

Beispiel:

Als ersten Befehl im zu messenden Programm ruft man TICKS auf. Dieser Startzeitpunkt steht nun während des gesamten Ablaufs im Stack. Am Schluß des zu messenden Programms fügt man zur Feststellung des Endzeitpunkts noch innerhalb des Programs die Befehlsfolge
Programmteil zur Berechnung von Ablaufzeiten
an.

Wenn man innerhalb des Programms den Stack ordentlich verwaltet hat, damit am Schluß keine anderen Stackinhalte übrig sind, dann steht vor Abarbeitung dieser Befehlsfolge eine Binärzahl (Startzeitpunkt) im Stack. Die obige Befehlsfolge ruft erneut TICKS auf (Endzeitpunkt). Nun stehen zwei Binärzahlen im Stack. SWAP vertauscht sie, damit die kleinere (der Startzeitpunkt) unten steht und von der größeren (dem Endzeitpunkt) abgezogen werden kann. Durch Subtraktion wird die Differenz der Ticks gebildet und mit B->R in eine reelle Zahl umgewandelt, die dann durch 8192 geteilt werden muß, damit das Ergebnis in Sekunden herauskommt. Das ist die Zeitspanne, die interessiert.

Hinweis: Wenn man SWAP einzufügen vergißt, wird die größere Binärzahl von der kleineren abgezogen und als Ergebnis erhält man eine negative Binärzahl (= Zweierkomplement des Ergebnisses), die als normale Binärzahl dargestellt wird, weil sie kein Minuszeichen hat. Dieses Ergebnis ist falsch, der Rechner erkennt das nicht und macht deshalb auch nicht darauf aufmerksam.

Korrigieren der Uhrzeit

Der Befehl [CLKADJ] (= clock adjust) aus dem Zeitmenü dient zur Korrektur der Uhrzeit.

Stellt man fest, daß die Uhrzeit um n Sekunden abweicht, so berechnet man mit n · 8192 die Anzahl der Ticks, gerundet zu einer Ganzzahl, die bei zu langsamer Uhr zum Zeitzähler hinzugezählt oder bei zu schneller Uhr abgezogen werden müssen. Der Befehl [CLKADJ] erwartet die Anzahl der Ticks als positive oder negative Zahl im Stack. Er nimmt diese Zahl vom Stack und korrigiert damit die Uhrzeit um diese n Sekunden.

Beispiel:

2.3 Sekunden Abweichung
Korrekturwert in Ticks = 2.3 · 8192 = 18841.60, gerundet 18842.
Geht die Uhr um 2.3 Sekunden zu langsam (= Uhr geht nach): 18842 in den Stack stellen
Geht die Uhr um 2.3 Sekunden zu schnell (= Uhr geht vor): -18842 in den Stack stellen,
dann [CLKADJ] aufrufen.

Die Ausgabe von Datum, Uhrzeit und Wochentag

Die Funktion [TSTR] (eng.: time string) erwartet

Der Rechner nimmt nach [TSTR] diese Zahlen vom Stack und gibt eine ASCII-Zeichenkette (engl.: string) mit Wochentag, Datum und Uhrzeit auf den Stack zurück.

Den aktuellen Zeitpunkt gibt man mit [DATE][TIME][TSTR] als String aus.

Soll für einen anderen Zeitpunkt dieser Zeit-String ausgegeben werden, so muß dieses Datum und diese Uhrzeit jeweils als Dezimalzahl in den Stack gestellt werden. Dann kann erst [TSTR] aufgerufen werden.

Beispiel:

Für den 20.10.1599, 13:15 Uhr soll der Zeit-String ausgegeben werden.

Eingabe in Stackebene 2: 20.101599
Eingabe in Stackebene 1: 13.150000

[TSTR] ergibt dann "WED 20.10.99 13:15:00"

Die Abkürzung für den Wochentag gibt der HP 49G in Englisch und die Jahreszahl nur mit den letzten zwei Ziffern aus. Das Jahrhundert wird nicht ausgegeben.

Die Alarmfunktionen

Ab Seite 2-25 des mitgelieferten Handbuchs ist die Handhabung und Einstellung der Alarmfunktionen beschrieben. Die Hauptfunktionen sind Termin-Alarm und Schaltuhr-Alarm, die dort ausreichend beschrieben sind.

Leider fehlen im Handbuch die Informationen zu den im Zeit-Menü im Unterverzeichnis [ALRM] und im Auswahlmenü vorhandenen Alarmfunktionen.

Nr. 1 des Auswahlmenüs ruft den Alarmbrowser auf, der alle aktiven Alarme zeigt. Über die Menüfunktion [EDIT] wird die Eingabemaske "Set alarm" ( = Nr. 2 des Auswahlmenüs) aufgerufen, wo die Werte für die Alarmdefinition editiert werden können.

Die Alarmdefinition besteht aus den in der Eingabemaske gemachten Angaben, die in die Alarmdefinition umgesetzt und nach Drücken von [OK] unter einer Alarmnummer aktiviert werden.

Im Alarmmenü sind 6 Menüfelder vorhanden:

  1. [ACK] (engl.: acknowledge): Hiermit kann man einen abgelaufenen Einmal-Alarm (engl.: past-due alarm) bestätigen. Der durch den Alarm ausgelöste Indikator ((o)) bleibt solange stehen, bis man ihn mit [ACK] löscht (bestätigt).
  2. [ACKALL] (eng.: acknowledge all): Hiermit kann man alle abgelaufenen Einmal-Alarme bestätigen. Der durch mindestens einen Alarm ausgelöste Indikator ((o)) bleibt solange stehen, bis man ihn mit [ACKALL] löscht (bestätigt).
  3. [STOALARM] (eng.: store alarm) aktiviert die im Stack befindliche Alarmdefinition.
    Diese Funktion dient zur Reaktivierung einer in einer Variablen gespeicherten Alarmdefinition. Der Inhalt der Variablen wird in den Stack gestellt. Der Aufruf [STOALARM] setzt die Alarmfunktion, aktiviert sie und gibt eine Zeilennummer zurück, unter der im Alarm-Browser der Alarm sichtbar ist.
  4. [RCLALARM] (eng.: recall alarm) kopiert eine aktive Alarmdefinition in den Stack. Vorher muß die Nummer des Alarms (= Zeilennummer im Alarmbrowser) in den Stack gestellt werden.
  5. [DELALARM] (eng.: delete alarm) löscht eine aktive Alarmdefinition. Vorher muß die Nummer des Alarms (=Zeilennummer im Alarmbrowser) in den Stack gestellt werden.
  6. [FINDALARM] (eng.: find alarm) Alarmdefiniton suchen. Vorher muß eine Uhrzeit, ein Datum oder {Datum Uhrzeit}als Liste in den Stack gestellt werden. Diese Funktion liefert eine Alarmnummer (= Zeilennummer im Alarmbrowser) für den Alarm, der als nächstes nach dem angegebenen Termin "fällig" (engl.: due) ist.

Ausführlichere Angaben über diese Alarmfunktionen findet man in der Command Reference des "HP 49G Advanced Users Guide Volume 1".

Justierung der Uhr

Die eingebaute Uhr läuft ziemlich genau. Sie hängt von der Quarzgenauigkeit des Taktgenerators ab, der den Prozessor und die Uhr "antreibt". Im Laufe von Tagen und Wochen weicht sie jedoch von der genauen Uhrzeit ab, die Uhr "bleibt hinten" oder "läuft vor".

Wenn man aber auch im Rechner genaue Uhrzeit haben will, muß man die Uhr justieren, so daß sie immer (bei geringer Toleranz) genaue Uhrzeit zeigt. Man müßte sie also regelmäßig um ein paar Ticks vor- oder zurückstellen.

Eine ausführliche Beschreibung dieses Vorgangs findet man im gesonderten Beitrag "Die automatische Justierung der HP49-Uhr".


Zur Inhaltsübersicht
Zur Beitragsübersicht
Copyright © 2002 Otto Praxl
Alle Rechte vorbehalten!