Hallo,
ich zerbreche mir gerade den Kopf und finde keine elegante Lösung.
Folgende Aufgabenstellung:
5 Bit sind auf mehreren Port Pins verteilt.
Ich möchte aber einen Dezimalwert in die fünf Bits schreiben.
Jetzt wäre eine Lösung folgende:
1 | #define SET(x,y) (x)|=(1<<(y)) //Bit set
|
2 |
|
3 | #define B0_PORT PORTC
|
4 | #define B0_PIN 4
|
5 | #define B1_PORT PORTA
|
6 | #define B1_PIN 7
|
7 | ...
|
8 |
|
9 |
|
10 | //b0
|
11 | if ( (Dezimal%2==1) ) //ungerade rest immer 1
|
12 | SET(B0_PORT,B0_PIN);
|
13 |
|
14 | //b1
|
15 | if ( (Dezimal==2) || (Dezimal==3) || (Dezimal==6) || (Dezimal==7) || ...
|
16 | SET(B1_PORT,B1_PIN);
|
17 |
|
18 | //usw.
|
Kennt ihr da eine elegantere Lösung ?
Lediglich das b0 konnte ich durch testen auf gerade oder ungerade
"vereinfachen".
Vielen Dank und Gruß
technikus