Ich berechne die Stellen immer, vielleicht gibt es einen schöneren Weg.
Code:
lcd_gotoxy(15,1);
Wandelwert=max/100; /* Maximalwert Vorkommastellen berechnen*/
ltoa(Wandelwert,Wert1,10); /* Maximalwert in ASCII-Wert umwandeln*/
lcd_puts_p(ausg[1]); /* ausgabe "max"*/
lcd_puts(Wert1); /* Wert von max auf Display ausgeben */
lcd_puts_p(fuellzeichen[1]); /*Komma ausgeben*/
Wandelwert=max%100; /* Maximalwert Nachkommastellen berechnen*/
if (strlen(Wert1)==2){ /*Wenn anzeige zweistellig, dann Kommastelle nur einstellig*/
Wandelwert=Wandelwert/10; /* Wert auf 1 Stelle begrenzen */
if(Wandelwert == 0){ /* Wenn die ausgabe =0 */
lcd_puts_p(fuellzeichen[0]); /* eine 0 ausgeben */
}
else{
ltoa(Wandelwert,Wert1,10); /*Wert auf ASCII wandeln */
lcd_puts(Wert1);
}
}
else{
ltoa(Wandelwert,Wert1,10); /* Maximalwert in ASCII-Wert umwandeln*/
if (strlen(Wert1)==1){ /* wenn Nachkommastelle nur im hundertstelbereich */
lcd_puts_p(fuellzeichen[0]); /* dann eine Null vorher einfügen */
}
lcd_puts(Wert1); /* auf Display ausgeben */
}
Ich weiss nicht ob du damit was anfangen kannst. Das mit dem sprintf habe ich vor langer Zeit mal probiert, hat mir allerdings den Code ziemlich aufgeblasen. Diese gezeigte Version ist wesentlich kleiner.
Lesezeichen