Hallo,
Ich sammle so meine ersten Programmiererfahrungen mit dem ATtiny25 und
AVRStudio4.
es geht mir um die Frage, wie ich auf ein einzelnes der 4 Byte einer
unsigned long int variable zugreifen kann.
1 | unsigned long int my_ul32;
|
2 | unsigned char my_byte;
|
3 |
|
4 | my_byte = my_ul32; // lies byte_0
|
5 | my_byte = my_ul32 >> 8; // lies byte_1
|
6 | my_byte = my_ul32 >> 16; // lies byte_2
|
7 | my_byte = my_ul32 >> 24; // lies byte_3
|
8 |
|
9 | my_ul32 = (my_ul32 & 0xFFFFFF00) | my_byte; // schreib an position 0
|
10 | my_ul32 = (my_ul32 & 0xFFFF00FF) | my_byte << 8; // schreib an position 1
|
11 | my_ul32 = (my_ul32 & 0xFF00FFFF) | my_byte << 16; // schreib an position 2
|
12 | my_ul32 = (my_ul32 & 0x00FFFFFF) | my_byte << 24; // schreib an position 3
|
Ich weiss jetzt nicht ob der GCC (AVRWIN) meine Absicht durchschaut und
das obtimieren kann, oder ob der jetzt beigeht und tatsächlich 24 mal
schieben läßt.