1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #define SETBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
#define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
#define CHECKBIT(ADDRESS,BIT) (ADDRESS & (1<<BIT))
#define WRITEBIT(RADDRESS,RBIT,WADDRESS,WBIT) (CHECKBIT(RADDRESS,RBIT) ? SETBIT(WADDRESS,WBIT) : CLEARBIT(WADDRESS,WBIT))
// one way is
if CHECKBIT(temp,bitnumber) Datasaved = 1;
else Datasaved = 0;
// this is a secod way, it can probably work but I haven't tried with a 1bit variable
WRITEBIT(temp,bitnumber,Datasaved,0);
//if it doesn't work then use the following define instead
#define WRITEBT(RADDRESS,RBIT,WADDRESS) (CHECKBIT(RADDRESS,RBIT) ? (WADDRESS=1) : (WADDRESS=0)
WRITEBT(temp,bitnumber,Datasaved); |