Hallo leute,
also erst einmal ich bin neu hier und habe auch schon etliche stunden
das i-net durchsucht.
Controller: ATmega 8
7Segment Anzeige: a bis h an PortD (0-7) / Anzeige 1-3 an PortC (0-2)
Zu meinem Problem,
Ich möchte einen Temperaturwert von 0 - 125 °C an einer 3 stelliegen 7
Segment Anzeige anzeigen lassen. Ich habe aber nun das Problem das ich
nicht genau weiß wie ich die Binärzahl in einzelne Dezimalstellen in der
"Hochsprache C" umwandeln kann. Die richtige Pinausgabe an den Ports mit
hilfe eines Datenarrays umzuwandeln bekomme ich hin.
Es wäre super wenn mir mal einer den Quelltext für ein C-Code exmaple
posten würde (habe nur assembler codes gefunden), damit ich mich dort
reinarbeiten kann.
MfG Dennis
Wow das ging schnell Christopher,
ersteinmal danke für deine Antwort.
Hab noch ein paar kurze fragen dazu.
num ist meine binärzahl die ich habe, oder?
Und aus buf kann ich dann später die einzelne dezimal stelle
herausziehen, oder?
Mit Dezimalstelle0 = buff[0];
Danach steht dann in Dezimalstelle0 meine einer werte.
Wäre echt nochmal dankbar für ne Antwort..
Ja, num ist eine Zahl von 0 bis 255. In buf[0] ist die 100er Stelle, in
buf[1] die 10er Stelle und in buf[2] die 1er Stelle. Alles als ASCII
character.
Ist jetzt nicht bös gemeint, aber kauf dir ein Buch über C oder lies ein
paar Tutorials durch. Das ist Grundwissen.
Vorsicht: '0' ist nicht die Zahl 0, sondern das (ASCII-)Zeichen 0, also
in Wirklichkeit die Zahl 48. Weil in ASCII alle Dezimalziffern
hintereinander aufsteigend liegen, kann man eben durch Addition mit 48
(also '0') das passende ASCII-Zeichen einer Dezimalziffer erhalten.
Hallo Christopher,
netter kurzer Code.
Ich habe das Problem bisher auf ähnliche Art, anstatt der Schleife habe
ich jedoch Modulo (%) verwendet.
Ich habe beide Varianten compiliert und die Variante mit Modulo war
einige Bytes kleiner. Ich hätte eher erwartet, das die Schleifenvariante
weniger Code benötigt, da nicht dividiert werden muß.
Hast jemand eine Erklärung dafür?
Mfg
Julian Baugatz schrieb:> Ich hätte eher erwartet, das die Schleifenvariante> weniger Code benötigt, da nicht dividiert werden muß.
Ist sie auch.
Aber Dein Programm enthält schon eine Division an anderer Stelle und
daher wurde der Code für Division/Modulo bereits eingebunden.
Peter