Binär to Dezimal

Gast #175500
Lesenswert?

Hallo,

das gleiche habe ich gestern für einen 8-Bit-Wert beim Mega8 gemacht.
Nur sollten bei mir noch zwei Stellen hinter dem Komma herauskommen für
Spannungswerte, die am AD-Wandler anliegen. Nebenbei musste der Wert
auch noch umgerechnet werden, so dass tatsächlich die richtige Spannung
ausgegeben wird und nicht z.B. das 1,15-Fache. Das hat den ganzen
Nachmittag gekostet.

Bei dir ist der Fall einfacher:
Mit 12 Bit kann der maximale Wert der Zahl 1024 sein.

1. Stelle:
So oft 1000 abziehen bis Rest < 1000

2. Stelle:

vom Restwert von Stelle-Eins-Berechnung so oft 100  abziehen bis < 100

3. Stelle

vom Restwert von Stelle-Zwei-Berechnung so oft 10 abziehen bis < 10

4. Stelle
entspricht  Restwert von Stelle-Drei-Berechnung und kann direkt
übernommen werden.
Gast #175502
Lesenswert?

mit 3 x 16 bit division geht das schon:

a = gesamt-wert

b = a / 100
c = a mod 100
(b ist das ergebnis und c ist der rest, bei den meisten div befehlen
kommen beide ergebnisse)

dann:

d = b / 10
e = b mod 10
(s.o.

f = c / 10
g = c mod 10

dann ist die zahl:
[d] [e] [f] [g]
Gast #175503
Lesenswert?

anmerkung zum oberen post:

vergleiche die zeiten (takte für übliche werte zusammenrechnen) für die
divisions-methode und die schleifen-methode und nimm dann die schnellere
(einige uC haben HW mul/div)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren