Zitat Zitat von masterx Beitrag anzeigen
@Felix ..habe noch mal den Code wie er funktioniert reingestellt... ich habe das mit dieser für mich tiefgreifenden Bitmanipulation auch wenn es nur ne Abfrage ist, echt noch nicht so gut raus!!! Aber ich arbeite dran! Versprochen.Mich würde noch mal interessieren was Deine Funktion genau macht???
Meine Funktion macht das gleiche, nur kürzer

Ich versuche mal das genauer zu erklären...
Zuerst maskiere ich den Wert von PINB mit 0x1E, wodurch nur die interessanten Bits übrig bleiben
Code:
PINB & 0x1E
0x1E ist die hexadezimale Schreibweise für 0b00011110, bis hierhin gibt es also noch keine Unterschiede.

Die Bits 1 bis 4 enthalten jetzt schon die gesuchte Zahl, nur leider um 1 nach links verschoben. Daher schiebe ich die Zahl mit >> 1 an die richtige Stelle.


edit:
ehrlicherweise muss ich zugeben, daß es einen kleinen Unterschied gibt: meine Funktion akzeptiert auch die Werte 13, 14 und 15.
Falls das ein Problem ist, müsste man sie also noch um ein if() erweitern