... aber wenn man mehrere Varaiblen verwendete, wird das mit dem Einzlenen Bit aufwendig, vor allem wenn man von 5 oder 6 Verschiedenen Variablen immer verschiedene Bits auslesen möchte.
OK, dann eben mit der harten Methode


Bit 5 setzen:
ByteWert = ByteWert Or &B00010000

Bit 5 löschen:
ByteWert = ByteWert And &B11101111

Bit 5 umkehren:
ByteWert = ByteWert Nor &B00010000


Das geht auch noch bissche übler \/ ...

Bit 5 bis 8 setzen:
ByteWert = ByteWert Or &B11110000

Bit 5 bis 8 löschen:
ByteWert = ByteWert And &B00001111

Bit 5 und 8 umkehren:
ByteWert = ByteWert Xor &B10010000


Das ganze mal in Kombination:


Bit 1 und 3 setzen und Bit 2 löschen:
ByteWert = (ByteWert Or &B00000101) And &B11111101

Klammer weil And vor Or in der Rangordnung der Operanden ist, sonst würde zuerst &B00000101 mit &B11111101 Und-Verknüpft werden und dann das Resultet mit ByteWert Oder-Verknüpft werden und das wäre sicher falsch. Aber das steht alles im Handbuch der C-Control.

Diese Binärwerte sind deine Maske die Bit für Bit das ganze Byte lang verknüpft wird mit dem entsprechenden Operanden (And / Or / Nor / Nand / Xor)

Das kann man jetzt aber nicht nur auf Bytewerte (8-Bit) anwenden sondern auch auf Word-Werte (16-Bit)


Unteres Byte des Words löschen ( Bit 1-8 ):
WordWert = WordWert And &HFF00


Grüsse Wolfgang