ich hab das jetzt mal ans display angeschloßen,
die unteren beiden zeilen funktionieren einwandfrei.

was ist an diesen denn anders??

Code:
//*******1.Spalte(1,4,7,*)*************************************************************************
TRIS_KEY = 0b11110000;
	spalte2 = 1;
	spalte3 = 1;
	spalte1 = 0;
TRIS_KEY = 0b11111100;
	Nop();
	if (zeile1==0) code = code | 1;		//1
	if (zeile2==0) code = code | 8;		//4
	if (zeile3==0) code = code | 64;	//7
	if (zeile4==0) code = code |512;    //*

//*******2.Spalte(2,5,8,0)*************************************************************************
TRIS_KEY = 0b11110000;
	spalte1 = 1;
	spalte2 = 0;
TRIS_KEY = 0b11111010;
	Nop();
	if (zeile1==0) code = code |  2; 	//2
	if (zeile2==0) code = code | 16; 	//5
	if (zeile3==0) code = code |128; 	//8
	if (zeile4==0) code = code |1024; 	//0


//*******3.Spalte(3,6,9,#)*************************************************************************	
TRIS_KEY = 0b11110000;
	spalte2 = 1;
	spalte3 = 0;
TRIS_KEY = 0b11110110;
	Nop();
	if (zeile1==0) code = code |  4; 	//3
	if (zeile2==0) code = code | 32; 	//6
	if (zeile3==0) code = code |256; 	//9
	if (zeile4==0) code = code |2048; 	//#

	return code;
}