Ports an Funktionen übergeben

Gast #3158424
Lesenswert?

Hallo,

ich möchte eine Funktion erstellen, die eine Tasterbetätigung 
detektiert. Dazu wollte ich der Funktion getKeyPressed() den 
entsprechenden PortPin der abgefragt werden soll, übergeben.

Ich weiß allerdings nicht wie. Der folgende Link hat mir nicht wirklich 
weitergeholfen.

http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_port_pass
#3162319
Lesenswert?

Die Funktion würde wie folgt aussehen:
1
unsigned char getKeyPressed( volatile unsigned char *pPort, unsigned char pin)
2
{
3
     return (*pPort & (1<<pin)); // return TRUE if set otherwise FALSE
4
}
5

6
//Abfrage von PINC7
7
unsigned char test;
8
test = getKeyPressed( &PORTC, 7);

Ist aber reichlich ineffizient. Sollen nur wenige Pins eingelesen werden 
würde sich ein Makro besser eignen.
1
#define Is_PINC7_Set()     (PORTC & (1<<PINC7))
2

3
//Abfrage im Programm
4
unsigned char test;
5
test = Is_PINC7_Set();

Die ganzen Definitionen kann man in einem Header anlegen und sinnvoll 
benennen z.B. Is_Up_Key_Pressed(), dann ist das Programm auch gut 
nachvollziehbar.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren