Hallo, ich möchte auf meiner Lcd den Wert eines Registers als Dezimalzahl darstellen. Aber bei mir funktioniert das irgendwie nicht. Hat jemand von euch vielleicht ein kleines Beispielprogramm zu dem Thema. Ich würde mich sehr über eure Hilfe freuen. Heli
Hi Heli, Deine Registerzahl besteht ja aus drei Ziffern (maximal), die Du nacheinander auf's Display schreiben musst (erst die Hunderter, dann die Zehner und dann noch die Einer). Erst dividierst Du die Zahl durch 100 und schneidest dann die Kommazahl ab. Das sind die Hundeter. Nun ziehst Du von der ursprünglichen Zahl ERGEBNIS*100 ab. Dann diese Zahl durch Zehn. ... Dann die Einer. Beispiel: 243 243/100 = 2,43 = 2 (Hunderter) 243-(2*100) = 43 --> 43/10 = 4,3 = 4 (Zehner) 243-(2*100)-(4*10) = 3 (Einer) Hast Du eine Zahl kleiner als 100 bzw. kleiner als 10 so bekommst Du halt Nullen. Sollen die nicht auf's Display, musst Du halt eine Abfrage haben. Sebastian
Hallo Sebastian, leider kenne ich mich mit dem Binärsystem noch nicht so gut aus. Wie dividiert man denn eine binäre Zahl durch eine andere? Stefan
Du musst die Zahl ins BCD-Format umwandeln, schau dir mal die Appnote 204 von Atmel an.
Hi! Ich würde immer 10 subtrahieren. Wenn Erg. neg-> Erg.+10 = Einer. wenn +, Zehner +1 und Test 10er >9 wenn 10er >9 ->100er +1, 10er = 0 und zurück bis negativ. Das geht rasend schnell und ist bei 3 Stellen gut zu machen. Gruss Uwe
Der Link muss natürlich heißen: http://www.avr-asm-tutorial.net/avr_de/rechnen/index.html Aber hast Du bestimmt schon selber gefunden. Bei der Wandlung von binär nach BCD muss man natürlich immer mit der nächstniedrigen Dezimalstelle anfangen, die die Zahl haben kann, also bei 8 Bit mit 100, bei 16 Bit mit 10.000. MfG Gerd
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.