Simon schrieb:
> errechnen kann und zwar anhand des bits in changed.
Na ja.
Das ist ja nicht weiter schwer.
Die Verundung mit einem Maskenwert bleibt weiterhin.
Einziger UNterschied.
Bisher waren deine Maskenwerte 0x01, 0x02, 0x04, 0x08, ....
WEnn man sich die aber mal auf Bitebene ansieht, dann sieht man, dass
das im Grunde ja immer nur ein einzige 1 Bit ist, welches in jeder
weiteren Maskenstufe um 1 Position nach links rutscht.
1 | Bei x gleich 0 0x01 00000001
|
2 | Bei x gleich 1 0x02 00000010
|
3 | Bei x gleich 2 0x04 00000100
|
4 | Bei x gleich 3 0x08 00001000
|
5 | ...
|
Diese 'weiterrutschen' kann man natürlich auch programmierern.
1 | uint8_t mask = 0x01;
|
2 |
|
3 | for (x=0; x<8; x++) {
|
4 | if (changed & mask)
|
5 | digital[x].value += 1;
|
6 | mask = mask << 1;
|
7 | }
|
PS: Bitte vergiss mein voriges Posting wieder - ich habs bereits
gelöscht. Das war Blödsinn und ist so in deinem konkreten Fall nicht
anwendbar.