Forum: Compiler & IDEs Bit macros in ioxxxx.h


von Steffen Graap (Gast)


Lesenswert?

Hallo

Warum werden die Bit macros in ioxxx.h in folgender Form
1
#define INT0   0
2
#define INT1   1
3
#define INT2   2
und nicht in dieser Form geschrieben?
1
#define INT0   0x01
2
#define INT1   0x02
3
#define INT2   0x04
oder
1
#define INT0   (1 << 0)
2
#define INT1   (1 << 1)
3
#define INT2   (1 << 2)

Bei der ersten Variante muss ich bei jeder Benutzung das Schieben (1<< ) 
davor schreiben, bei mehreren Bits sogar mehrfach. Das macht das 
schreiben umständlich und übersichtlicher wird es auch nicht.

Mit generften Grüßen
Steffen

von Karl H. (kbuchegg)


Lesenswert?

Nichts und niemand hindert dich daran aus den gegebenen
defines mit ein paar zusätzlichen Makros die Werte zu erzeugen,
die du haben willst. (*)
Aber der umgekehrte Weg, aus dem Portwert abzuleiten
welches Bit gesetzt ist, ist viel aufwändiger.


(*) zb so
#define BIT0  ( 1 << PB0 )
#define BIT1  ( 1 << PB1 )
#define BIT2  ( 1 << PB2 )
#define BIT3  ( 1 << PB3 )
#define BIT4  ( 1 << PB4 )
#define BIT5  ( 1 << PB5 )
#define BIT6  ( 1 << PB6 )
#define BIT7  ( 1 << PB7 )

von Rolf Magnus (Gast)


Lesenswert?

Die Header sind dazu gedacht, auch mit Assembler benutzt zu werden. Da 
gibt es aber durchaus auch Instruktionen, die nicht die Wertigkeit des 
Bits wollen, sondern dessen Nummer.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.