Forum: Mikrocontroller und Digitale Elektronik Hex Werte in Datum umwandeln


von Frank (Gast)


Lesenswert?

Moin...
Wie kann ich aus den 0x0A und 0x0F ein gültige Uhrzeit bilden?
Eigentlich hätte ich lieber 10:15
Ich habe einen Zähler der mit diese Hex Werte übergibt.
Im ASCII Format bekomme ich natürlich andere Zeichen..
Jemand ne Idee?

von johnny.m (Gast)


Lesenswert?

Mit dem Windows-Taschenrechner kann man sehr schön zwischen den 
unterschiedlichen Darstellungsarten umschalten...

Aber im Ernst: Welches Format soll die "gültige Uhrzeit" denn haben? 
BCD? Und in welcher Programmiersprache soll das ganze geschehen?

von ich&er (Gast)


Lesenswert?

printf("\n Die Uhrzeit %d:%d",stunden,minuten);

dabei ist es doch egal in welchem format die 10=0x0A und die 15==0x0F 
vorliegen, formatiert wird das doch bei printf...

...oder wo liegt das problem genau?

von flintston (Gast)


Lesenswert?

Hallo!

In Assembler wäre folgendes zu tun:
- DAA (Umwandlung in BCD)
- Halbbytes trennen und jeweils 30h dazuadieren
- Ausgabe (Doppelpunkt nicht vergessen)

Gruß
Guido

von Frank (Gast)


Lesenswert?

printf-Befehle sind tabu für mich!
In Assembler programmiere ich nicht!
Das beste wäre eine passende C-Routine, falls jemand so was passendes 
hat!
Gruss Frank

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Funktion heißt itoa ... und das Thema wurde eigentlich wirklich 
schon ad nauseam durchgekaut.

von johnny.m (Gast)


Lesenswert?

Wie wäre es denn, wenn Du mal nicht sagst, was Du nicht willst, 
sondern was Du wirklich willst...

Du hast z.B. immer noch nicht gesagt, welches Format die Uhrzeit haben 
soll! BCD wäre einfach (in C)
1
unsigned char stunden_bcd, stunden_hex, minuten_bcd, minuten_hex;
2
stunden_bcd = ((stunden_hex / 10) << 4) | (stunden_hex % 10);
3
minuten_bcd = ((minuten_hex / 10) << 4) | (minuten_hex % 10);
Wenns ASCII sein soll, dann
1
unsigned char stunden[3], stunden_hex, minuten[3], minuten_hex;
2
stunden[0] = (stunden_hex / 10) | 0x30;
3
stunden[1] = (stunden_hex % 10) | 0x30;
4
minuten[0] = (minuten_hex / 10) | 0x30;
5
minuten[1] = (minuten_hex % 10) | 0x30;
6
stunden[2] = '\0';
7
minuten[2] = '\0';

von Karl heinz B. (kbucheg)


Lesenswert?

Auch wäre interessant, in welcher Form den die Ausgangswerte
vorliegen. Sind das int oder bytes: Dann versteh ich das Problem
nicht -> gib sie aus, so wie du jede andere Zahl ausgibst.
Liegt das Urmaterial in Stringform vor (weil die Uhrzeit
zb über eine Serielle eingelesen wurde): Dann muss man den
String halt mal in eine numerische Form konvertieren.

von Lehrer (Gast)


Lesenswert?

Hi Frank!

hast du genug Tipps bekommen, um deine Hausaufgaben jetzt selbst zu 
erledigen?
Wie wäre es mit einem Buch?
Vielleicht hilft auch eine Suchmaschine.

Stell doch einfach den Text der Aufgabe rein, dann müssen nicht alle 
raten, was du eigentlich willst.

Gruß

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.