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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.