4017er schrieb:
> in meinem verlinkten Thread z.B. Wie wurde das dort gemacht?
Ok, mal angenommen, du hast dir den Code dort mal angesehen und
verstehst aus irgendwelchen Gründen nur Bahnhof, dann könntest du es wie
folgt probieren.
Da gibt es Definitionen im Quelltext, in denen der Begriff DIP vorkommt:
1 | /** \name DIP-switch settings
|
2 | * \brief The different modes selectable with the DIP switches
|
3 | */
|
4 | //@{
|
5 | #define GAME_MODE_SLOW 0 << 0 ///< DIP1..2 = 00 (booooring)
|
6 | #define GAME_MODE_FAST 1 << 0 ///< DIP1..2 = 10 (not soo boring)
|
7 | #define GAME_MODE_RANDOM 2 << 0 ///< DIP1..2 = 01 (magic :) )
|
8 | #define GAME_MODE_RANDOM_STOP 3 << 0 ///< DIP1..2 = 11 (more magic :) )
|
9 | #define LED_MODE_OFF 0 << 2 ///< DIP3..4 = 00
|
10 | #define LED_MODE_ON 1 << 2 ///< DIP3..4 = 10
|
11 | #define LED_MODE_RAND 2 << 2 ///< DIP3..4 = 01
|
12 | #define REMOTE_MODE_25 0 << 4 ///< DIP5..6 = 00
|
13 | #define REMOTE_MODE_50 1 << 4 ///< DIP5..6 = 10
|
14 | #define REMOTE_MODE_75 2 << 4 ///< DIP5..6 = 01
|
15 | #define REMOTE_MODE_100 3 << 4 ///< DIP5..6 = 11
|
Und jetzt musst du nur noch nach GAME_MODE_SLOW suchen und findest das
hier:
1 | if(getGameMode() == GAME_MODE_SLOW) { // boooring
|
Nächster Schritt: getGameMode suchen:
1 | #define getGameMode() ((~PINB) & 3)
|
Aha, ein define! Ergo steht dort im Quelltext eigentlich:
1 | if(((~PINB) & 3) == 1 << 0) { // boooring
|
Das bedeutet letztlich nichts Anderes als:
1 | if( (~PINB)&3 == 1 ) { // boooring
|
Und schon weißt du, wie dieser DIP-Schalter eingelesen wird.