Ich habe einen Code gebastelt, der eine 4x4 Tastatur abfragen soll. Ich würde euch bitten, dass mal anzusehen und zu schauen, ob es so klappen würde.

Code:
/*Funktion für 4x4Matrix Tastatur, i/o und pullups müssen vorher eingestellt werden */

#define	Port	PORTB
/*RB0-RB3 sind Ausgänge, RB4-RB7 sind Eingänge; Ausgänge auf high ausser einer, wenn eine Taste auf low, dann muss sie gedrückt sein gedrückt */


char Tastatur (void)
{
char Taste=1;
uns8 i,j;

Port=0b.0000.1110

for (i=1;i<5;i++)
	{
	Port = Port << 1;
	Port++;
	
	for (j=4;j<8;j++)
		{
		if Port.j!=0
		Taste++;
		else
		return Taste;		
		}
	}
}
was ich besonders unsicher finde ist mein Ausdruck "if Port.j!=0" . klappt das so?
"Port = Port << 1;
Port++;"
ist dazu da um immer einen Output auf Low zu legen, das carryflag wird mit dem befehl automatisch vorher gelöscht, deswegen danach noch +1. so schieb ich die eine null durch die untere hälfte von Port.
das ganze soll dann für MPLAB 7.10 mit CC5x free compiler benutzt werden.
es fehlen jetzt noch die zuweisungen für die tasten, momentan sind die ja einfach nur durchnummeriert, aber das kommt wenn es so klappt.