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:
Eleganter wäre allerdings dies:Code:void delay(uint8_t d) { uint16_t d1, dummy; for (d1=d*255; d1>0; d1--) dummy^=d1; }
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?Code:void delay100us(unsigned char multiplikator) // for PicLSBK (16MHz Taktzyklus = 4 MHz Befehlszyklus) { while(multiplikator--) Delay10TCYx(40); //40*10*0,25µs = 100 µs }
Gruß
mic







Zitieren
Lesezeichen