andre schrieb:
> ich möchte eine RTC Uhr die Stunde stellen, da ist das Format nur in
> hex.
Vorsicht! Die meisten RTCs wollen nicht Hex, sondern BCD. Und das ist
was ganz anderes!
> ich zähle die variable Stunde_dez 0-23 bis ich meine Uhrzeit hab. bei
> der minute auch so.
> zB. in hex ist 0x17 in dezimal 23.
Beispiel:
23 Uhr:
DEZ 23
HEX 0x17
BCD 0x23
Nenne mal den RTC-Typ. Dann wetten wir, ob Hex oder BCD. Ich tippe stark
darauf, dass die RTC 0x23 und nicht(!) 0x17 für die Stunde 23 haben
will.
> wie Wandel ich nun meine Zahl in hex um
Falsche Frage. Jede Zahl im Rechner ist binär abgelegt, Du kannst sie in
dezimal oder Hex auslesen oder beschreiben. Da wird nix Konvertiert.
Was Du willst: Dez -> BCD. Da muss man tatsächlich etwas konvertieren.
Dafür reichen 2 Makros:
1 | #define INT_TO_BCD(x) (((x) / 10) << 4) + ((x) % 10)
|
2 | #define BCD_TO_INT(x) (10 * ((x) >> 4) + ((x) & 0x0F))
|