Hallo

Der multiplikator kann ja weiterhin 8 Bit haben, muß also nicht long sein.

Vielleicht wird die Schleife von Kompiler wegrationalisiert. Ich verzögere mit Dummy-Befehlen in der Zählschleife:
Code:
void delay(uint8_t d)
{
	uint16_t d1, dummy;
	for (d1=d*255; d1>0; d1--) dummy^=d1;
}
Eleganter wäre allerdings dies:
Code:
void delay100us(unsigned char multiplikator)
// for  PicLSBK (16MHz Taktzyklus = 4 MHz Befehlszyklus)
{
   while(multiplikator--) Delay10TCYx(40);   //40*10*0,25µs = 100 µs
}
Wenn die Wartezeit zu kurz ist scheint mir der Clearbefehl kritisch, weil der recht lange zur Ausführung benötigt. Dann würden die nachfolgenden Einstellungen ins Nirwana gehen. Vielleicht mal testweise ohne clear initialisieren. Hast du das mit dem "Display on-Cursor on-Cursor blink" mal getestet?

Gruß

mic