Ports an Funktionen übergeben

Gast #3158424
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
#3158444
> Der folgende Link hat mir nicht wirklich
weitergeholfen.

und was daran ist jetzt unklar?

> Dazu wollte ich der Funktion getKeyPressed()

Diese Funktion kennt hier keiner.
Daher ist es auch ein wenig schwierig zu entscheiden, welche Technik 
angebracht ist.
#3162319
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

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.