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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.