@pebi,
glaub mir, wenn ich Dich vor die Flinte kriegen würde, hätte ich keine Ladehemmungen...

@Martin,
Die Nibbles mußt Du schon komplett übertragen, allergings habe ich das noch nie so über die Pins verstreut gemacht...

So mach ich das z.B.
Code:
void lcd_data(uint8_t data) {
        uint8_t temp = data;
        warte(0x00C8);
        RSPORT |=(1<<RS);
	DATAPORT = (data>>4);
	enable();
	DATAPORT = temp;
	enable();
	RSPORT &= ~(1<<RS);
	
}
mit lcd_data werden beide Nibbles übertragen, und ich brauche mir keine Sorgen zu machen, daß ich die Hälfte vergesse.
Aber die Datapins liegen schön hintereinander auf einem Port .
Vielleicht kannst Du das irgendwie gebrauchen.

Gruß Sebastian