Hallo zusammen,
ich glaube, dass sich da noch ein Fehler eingeschlichen hat. Die SerWrite()-Funktion benötigt einen Pointer auf Daten. Aber hier werden 'Netto'-Bytes, also ohne Pointer, (z.B. das '-') an die Funktion übergeben.
Ersetzt mit UartPutc() und dann geht es bei mir perfekt.
Übrig bleiben ganze 56 Byte bei Optimizereinstellung -Os (size)
Gruß Sternthaler.Code:#include <asuro.h>
void PrintChar (int x)
{
int b = 0;
if (x < 0)
{
UartPutc ('-');
x = -x;
}
if (x >= 10)
{
while (x >= 10)
{
b++;
x -= 10;
}
PrintChar (b);
}
UartPutc (x + '0');
}
int main (void)
{
Init ();
while (1)
{
PrintInt (-9854);
PrintChar (-26978);
}
return 0;
}
P.S.: Na izaseba, jetzt kommt der Sport ;-)