AND: x=y & z;

NOT: x=~y;

OR: x=y | z;

XOR: x = y ^ z;

Dịch Bit: >> (Dịch phải) và << ( Dịch trái )

Ví dụ1: Set/Clear/Read bit trong thanh ghi.

Base Address : 0x40020000

#define SET_BIT(address, mask) ((*(volatile uint32*)(address)) |= (mask))
#define CLEAR_BIT(address, mask) ((*(volatile uint32*)(address))&= (~(mask)))
#define READ_BIT(address, mask) ((*(volatile uint32*)(address))& (mask))
#define READ_REG(address) (*(volatile uint32*)(address))
#define WRITE_REG(address, value) ((*(volatile uint32*)(address))= (value))
#define MODIFY_REG (WRITE_REG((address), ((READ_REG(address)& ((uint32)~(mask)))| (value))))

Vi dụ 2: Đếm tât cả bit 1 trong một biến 32bits.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *