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.
Lesezeichen