Alicik
13.08.2006, 20:01
Hallo noch ein Mal!
In einem Word steht eine belibige Dezimalzahl, die ich über I2C zu einer LCD senden möchte. LCD verlangt ASCII-Zeichen. Über I2C kann ich aber nur einzellne Zeichen (Byteweise) senden.
(Der Bascom-Befehl I2CSEND sendet leider keine Strings-Variable.)
Ich kann natürlich so vorgehen:
Die Zahl im Word kann ja max. 5 Stellen besitzen.
Wenn die "ZAHL1" ist.
Ziffer1 = ZAHL1 / 10 000 (Integer-Division)
ZAHL2 = ZAHL1 - Ziffer1 * 10 000
Ziffer2 = ZAHL2 / 1000
ZAHL3 = ZAHL2 - Ziffer2 * 1000
Ziffer3 = ZAHL3 / 100
ZAHL4 = ZAHL3 - Ziffer3 * 100
Ziffer4 = ZAHL4 / 100
ZAHL5 = ZAHL4 - Ziffer4 * 10
Ziffer5 = ZAHL5 / 1
Und danach Ziffer1 bis Ziffer5 mit dem Bascom-Befehl CHR in ASCII umwandeln und einzelln über I2C an LCD senden.
Natürlich müsste ich kontrollieren und verhindern, dass die führenden Nullen nicht gesendet werden.
Kennt jemand bessere Verfahren, die mit wenigem Programmcode auskommen?
Gruss
Ali
In einem Word steht eine belibige Dezimalzahl, die ich über I2C zu einer LCD senden möchte. LCD verlangt ASCII-Zeichen. Über I2C kann ich aber nur einzellne Zeichen (Byteweise) senden.
(Der Bascom-Befehl I2CSEND sendet leider keine Strings-Variable.)
Ich kann natürlich so vorgehen:
Die Zahl im Word kann ja max. 5 Stellen besitzen.
Wenn die "ZAHL1" ist.
Ziffer1 = ZAHL1 / 10 000 (Integer-Division)
ZAHL2 = ZAHL1 - Ziffer1 * 10 000
Ziffer2 = ZAHL2 / 1000
ZAHL3 = ZAHL2 - Ziffer2 * 1000
Ziffer3 = ZAHL3 / 100
ZAHL4 = ZAHL3 - Ziffer3 * 100
Ziffer4 = ZAHL4 / 100
ZAHL5 = ZAHL4 - Ziffer4 * 10
Ziffer5 = ZAHL5 / 1
Und danach Ziffer1 bis Ziffer5 mit dem Bascom-Befehl CHR in ASCII umwandeln und einzelln über I2C an LCD senden.
Natürlich müsste ich kontrollieren und verhindern, dass die führenden Nullen nicht gesendet werden.
Kennt jemand bessere Verfahren, die mit wenigem Programmcode auskommen?
Gruss
Ali