/* ------------------------------------------------------------ PUTINT gibt einen Integer dezimal aus. Ist Uebergabe "komma" != 0 wird ein "Kommapunkt" mit ausgegeben. Bsp.: 12345 wird als 123.45 ausgegeben. (ermoeglicht Pseudofloatausgaben im Bereich) ------------------------------------------------------------ */ void putint(int16_t i, char komma) { typedef enum boolean { FALSE, TRUE }bool_t; static uint16_t zz[] = { 10000, 1000, 100, 10 }; bool_t not_first = FALSE; uint8_t zi; int16_t z, b; komma= 5-komma; if (!i) { my_putchar('0'); } else { if(i < 0) { my_putchar('-'); i = -i; } for(zi = 0; zi < 4; zi++) { z = 0; b = 0; if ((zi== komma) && komma) { if (!not_first) my_putchar('0'); my_putchar('.'); not_first= TRUE; } while(z + zz[zi] <= i) { b++; z += zz[zi]; } if(b || not_first) { my_putchar('0' + b); not_first = TRUE; } i -= z; } if (komma== 4) my_putchar('.'); my_putchar('0' + i); } }