Inzwischen gibt´s eine print() für Strings und eine printInt() für Ganzzahlen in dezimalform.
Gibt es da wieder Tricks die ich noch nicht kenne um die printInt() zu beschleunigen?
Eine Fehlertoleranz ist nicht vorgesehen, schade um die Rechenleistung.
Das große Problem wird die Division und der Modulo-Operator sein, denke ich. Auf jeden Fall wird ein riesieger ASM-Code erstellt.
Code:
void printInt(unsigned char xPos, unsigned char yPos, unsigned char length, int num)//32767 -> +32767
{
unsigned char temp;
unsigned int i=0;
xPos+=length-1;
if(num<0)
{
num--; //Zweierkompliment
num=~num;
do
{
num-=(temp=num%10); //letzte Stelle extrahieren
num/=10; //num>>1 dezimal
text[yPos][xPos-i++]=temp+0x30; //um auf passenden char zu kommen
if(i==length-1)break; //damit Platz fürs Minus ist
}while(num);
text[yPos][xPos-i++]=0x2D; //Minuszeichen an erste stelle
}else
{
do
{
num-=(temp=num%10);
num/=10;
text[yPos][xPos-i++]=temp+0x30;
if(i==length)break;
}while(num);
}
while(i<length)
text[yPos][xPos-i++]=0x20; //Rest mit Leerzeichen auffüllen
}
Lesezeichen