Also beginnen wir mal mit der Abfrage auf logisch 0...
die geht genauso wie die Abfrage auf logisch 1, nur mit einem ! davor
Weiter geht's mit deinem Code, der in dieser Form nicht funktionieren kann (hauptsächlich wegen der fehlerhaften Abfrage auf logisch 0).Code:!(PINB & (1<<PINB1))
Außerdem passen die Kommentare nicht so ganz, daher habe ich versucht das nochmal etwas übersichtlicher darzustellen:
Dabei werden 2 Dinge offensichtlich:Code://PORTB 1234 // 0001 // 0010 // 0011 // 0100 // 0101 // 0110 // 0111 // 1000 // 1001 // 1010 // 1011 // 1100
1. Das wären die Zahlen von 1 bis 12 im Binärformat...
2. wenn die Bits nicht "rückwärts" angeordnet wären
Kannst du das noch ändern, oder ist die Zuordnung so festgelegt?
Denn falls die Reihenfolge anders wäre, könnte man deine Funktion bis auf das hier reduzieren:
Code:int anzahl_Zyl(void) //fragt BP1-PB4 ab und giebt Einstellung Zylinderanzahl zurück { DDRB |= 0x00; return ((PINB & 0x1E) >> 1); }








Zitieren

Lesezeichen