#include <stdio.h> #define BYTE unsigned char /* Funkton Bit_Test() * val = der Wert, den es zu testen gilt * bit = Bitnummer, die abgefragt wird ob gesetzt (0-7) * * Rückgabewert = (1) = Bit gesetzt; (0) = Bit nicht gesetzt */ int Bit_Test(BYTE val, BYTE bit) { BYTE test_val = 0x01; /* Bit an entsprechende Position schieben */ test_val = (test_val << bit); if ((val & test_val) == 0) { return 0; } else { return 1; } } /* Funktion Bit_Set() * val = Wert, bei dem Bit gesetzt werden soll * bit = Bitnummer, die gesetzt werden soll (0-7) * * Rückgabewert = keiner */ void Bit_Set(BYTE *val, BYTE bit) { BYTE test_val = 0x01; /* Bit an entsprechende Position schieben */ test_val = (test_val << bit); *val = (*val | test_val); } /* Funktion Bit_Clear() * val = Wert, bei dem Bit gelöscht werden soll * bit = Bitnummer, die gelöscht werden soll (07-7) * * Rückgabewert = keiner */ void Bit_Clear(BYTE *val, BYTE bit) { BYTE test_val = 0x01; /* Bit an entsprechende Position schieben */ test_val = (test_val << bit); *val = (*val & (~test_val)); } int main() { BYTE wert = 0; printf("%s\n", Bit_Test(wert, 0)?"gesetzt":"nicht gesetzt"); Bit_Set(&wert, 0); printf("%s\n", Bit_Test(wert, 0)?"gesetzt":"nicht gesetzt"); Bit_Clear(&wert, 0); printf("%s\n", Bit_Test(wert, 0)?"gesetzt":"nicht gesetzt"); return 0; }