ARM-Fan wrote:
> Schau mal nach itoa oder sprintf.
Von sprintf wäre eher abzuraten, wenns nicht unbedingt nötig ist.
sprintf kostet ziemlich viel resourcen (flashspeicher und prozesszeit).
Ich weiss nicht, wie gross ein itoa ist, jedenfalls braucht meine
Wandlung 98 Bytes flash. Ich glaube nicht, das itoa das unterbieten
kann.
1 | void outzahl (uint8_t zahl,uint8_t anzahl)
|
2 | {
|
3 | div_t val;
|
4 | uint8_t flag;
|
5 | flag=0;
|
6 | val=div(zahl,100);
|
7 | if (val.quot!=0 || anzahl>2)
|
8 | {
|
9 | flag=1;
|
10 | lcd_putc ('0'+val.quot);
|
11 | }
|
12 | val=div(val.rem,10);
|
13 | if (val.quot!=0 || flag==1 || anzahl>1)
|
14 | {
|
15 | flag=1;
|
16 | lcd_putc ('0'+val.quot);
|
17 | }
|
18 | lcd_putc ('0'+val.rem);
|
19 | }
|
Die Parameter "zahl" bestimmt, welche Zahl ausgegeben wird und "anzahl"
wieviele Stellen dafür auf dem Display reserviert werden sollen
(führende Nullen).
Der Code sollte soweit selbsterklärend sein, das er keiner weiteren
Kommentare bedarf.