Der Wert für LCD_RS ist doch 1, wir benötigen aber 4 (RS ist PortBit2)
Code:
#define LCD_RS		PORTBbits.RB2
sobald LCD_RS auf 1 gesetzt wird sollte auch RB2 high ein (wertigkeit 4)
werde es aber an einem einfacheren prog testen.

x = zeichen & 0xf0;
PORTLCD = x; //höherwertiges nibbel
LCD_RS = 1; // LCD Daten-Mode setzen
wersuch ich gleich mal...

Code:
void LCD_WriteZeichen(unsigned char zeichen)
{
	unsigned char x;
delay100us(250);
//	LCD_BUSY(); 				// Warten bis LCD bereit ist
				
	LCD_RW = 0; 				// LCD im Schreiben-Mode
	LCD_RS = 1; 				// LCD im Befehl-Mode
	
delay100us(1);
	x = zeichen & 0xf0;
	PORTLCD = x;				//höherwertiges nibbel
	LCD_RS=1;
delay100us(1);
	enable();
delay100us(50);					//5ms warten nach den 1.nibble

	x = zeichen;			
	x = (x << 4)& 0xf0;			//niederwertiges nibbel
	PORTLCD = x;
	LCD_RS=1;
delay100us(1);

	enable();
delay100us(50);					//5ms warten nach den 2.nibble
	LCD_RS = 0;
}
=D> =D> =D> ich hab ein zeichen

leider sieht es so aus als wenn es ständig neu geschrieben würde es flackert etwas.