RTC Problem Umwandlungs Problem?!

Gast #3499740
Lesenswert?

Hallo Freunde,


Ich habe es endlich geschafft aus meiner RTC erste Lebenszeichen zu 
holen...
Nun sehe ich auf dem Display folgendes ..... 1 2 3 4 5 6 7 8 9 16 17 
18... ?!
Wieso macht er bei 16 weiter ?

ich habe folgenden code...


Code:

i2c_start_wait(RX8564+I2C_WRITE);// Startet die I2C Kommunkation und 
wartet auf Antwort...

i2c_write(0x02);

i2c_rep_start(RX8564+I2C_READ);
ret = i2c_readNak();

ret &= 0x7F;

(ret >> 4)  + 0x30;
(ret & 0x0f) + 0x30;

char Buffer[20];
sprintf( Buffer, "%d", ret );


ks0108GotoXY(10, 40);
ks0108Puts(Buffer);
Moderator #3499758
Lesenswert?

Dieter B. schrieb:
> hierit wandel ich es doch um -->
>
> (ret >> 4)  + 0x30;
> (ret & 0x0f) + 0x30;

Nein, diese Audrücke tun gar nichts. Mit -Wall sollte der Compiler auch 
eine entsprechende Warnung ausgeben.

Besser:
1
Buffer[0] = (ret >> 4)   + 0x30;  // Zehner
2
Buffer[1] = (ret & 0x0f) + 0x30;  // Einer
3
Buffer[2] = '\0';                 // String-Ende
4

5
ks0108GotoXY(10, 40);
6
ks0108Puts(Buffer);
Gast #3499777
Lesenswert?

okay danke ;)


funktioniert :-P

was mir noch aufgefallen ist...  Ich benutze ja die Lib von Peter F. für 
ein GLCD...

Wenn es eine "0" darstellt und dann eine "1" bleibt ein kleiner rest von 
der "0" auf der rechten seite und wird erst wieder mit der 2 anderst...
bei anderen Zahlen genau das gleiche Problem...
Weiß jemand abhilfe ?! Ohne das Display zu löschen?!
#3501398
Lesenswert?

Dieter B. schrieb:
> Wenn es eine "0" darstellt und dann eine "1" bleibt ein kleiner rest von
> der "0" auf der rechten seite und wird erst wieder mit der 2 anderst...
> bei anderen Zahlen genau das gleiche Problem...
> Weiß jemand abhilfe ?! Ohne das Display zu löschen?!
das passiert immer wenn man einen Proportionalen Font verwendet - da 
belegen die Zeichen immer nur so viel Platz wie nötig.
Abhilfe:
1)
Für Zahlenwerte einen Fixed-Font verwenden - dann kann man auch mehrere 
Werte untereinander anzeigen und die Zahlen stehen immer schön 
untereinander

2)
den entsprechenden Bereich vor der Ziffernausgabe löschen,
oder den neuen Wert ausgeben, berechnen wie breit die Ausgabe war und 
den Restbereich löschen.

Sascha

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