PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rn-keylcd_tasten-dezimaldarstellung



tomhut
07.03.2008, 12:36
ein freundliches hallo an alle!!

meine hard- und software: rn-control 1.4, über i2c mit rn-keylcd 1.2 verbunden, bascom.

mir raucht der kopf, -jetzt frag ich einfach mal:

ich möchte z.b. die mehrstellige zahl "180" eintippen, und "180" soll dann auch auf dem display erscheinen.
in rn-control will ich dann auch mit der zahl "180" weitrrechnen.

-für einstellige zahlen krieg ich das hin, aber eben nicht für mehrstellig!

-kein beispielprogramm konnte mir helfen. -wahrscheinlich ist es total simpel, und vielleicht schüttelt hier jemand das ja aus dem ärmel.

für hilfe wär ich seeeehr dankbar!!!!

grüße,
andreas (tomhut)

Ceos
07.03.2008, 12:44
ich weis nichts von der technik aber wenn ich schüttle kommt nur folgendes heraus auch wenns garantiert NICHT höchst-effektiv ist


uint val = 23628;
uint temp = val; // du willst schliesslich mitt dem wert weiter rechnen
uint div = 10000; // reicht für uint weil max = 56k ist
for(;div > 0; div = div / 10)
{
output(temp/div); // spuckt dir zunächst die 10000er stelle
// dann die 1000er usw. aus ...
//evtl. +48 rechnen damit es ein ascii wird
temp = temp%div;
}
output(val); // einerstelle da div == 0


EDIT: vergessen zu erwähnen sinn des ganzen ist das du vermutlich eine mehrstellige anzeige mit ascii chars hast, du musst als 10000er 1000er usw. EINZELN auf das display schieben

tomhut
07.03.2008, 13:01
danke für die prompte antwort!
-sieht ganz logisch aus, hilft mir bei meiner hardware aber nur bedingt.
-theoretisch hat's mich aber ein stückchen weitergebracht!
-das problem liegt tatsächlich in der mehrstelligkeit.
danke

Ceos
07.03.2008, 13:11
dreh den alorithmus doch einfach um ?!

loop
val += input*mul; // mit 1er beginnend
mul *= 10;
continue