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
0x1E ist die hexadezimale Schreibweise für 0b00011110, bis hierhin gibt es also noch keine Unterschiede.Code:PINB & 0x1E
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
Lesezeichen