Hallo

Ich denke nicht, dass man das schon als genial bezeichenen kann:
Code:
#include "asuro-probot.h"
#include "asuro-probot.c"

void SerPrint(unsigned char *data)
{
	unsigned char i = 0, j=0;
	UCSRB = 0x08; // enable transmitter
	while(data[i]) // nächstes Zeichen auf Endekennung 0 prüfen
	{
		if (UCSRA & 0x20) { // wait for empty transmit buffer
			UDR = data[i++]; // Zeichen ausgeben
		}
	}
	while (!(UCSRA & 0x40));
	for (i = 0; i < 0xFE; i++)
		for(j = 0; j < 0xFE; j++);
}
int main(void)
{
   int i;
   char zeichenkette[8]="testtext";
	Init();

   while(1)
   {
      SerWrite("SerWrite: abcABC123\n\r", 21);
      SerPrint("SerPrint: abcABC123\n\r");
      SerPrint(zeichenkette);
      SerPrint("\n\r");

		for(i=500; i--; Sleep(72));
   }
}
In C werden Zeichenketten mit dem Zeichen 0 abgeschlossen, deshalb überprüft diese Version von SerPrint() lediglich, ob das nächste zu sendende Zeichen >0 ist. Das Beispiel oben funktioniert bei mir zufriedenstellend, die Ausgabe im Terminal sieht so aus:
Code:
SerWrite: abcABC123
SerPrint: abcABC123
testtext
SerWrite: abcABC123
SerPrint: abcABC123
testtext
Gruß

mic