Creates a bit mask based on a single bit-number position.
Files
lib_def.h
Prototypes
DEF_BIT(bit); DEF_BIT08(bit); DEF_BIT16(bit); DEF_BIT32(bit); DEF_BIT64(bit);
Arguments
bit
Bit number of the bit mask to set.
Returned Value
Bit mask with the single bit
number position set.
Required Configuration
None.
Notes / Warnings
bit
should be a non-negative integer.
bit
values that overflow the target CPU and/or compiler environment (e.g. negative or greater-than-CPU-data-size values) may generate compiler warnings and/or errors.
To avoid overflowing any target CPU and/or compiler’s integer data type, unsigned bit constant 1
is either cast to specified integer data type size or suffixed with long
integer modifier, ‘L
’. This may still be insufficient for CPUs and/or compilers that support long long
integer data types, in which case ‘LL
’ integer modifier should be suffixed. However, since almost all 16- and 32-bit CPUs and compilers support long
integer data types but many may not support long long
integer data types, only long
integer data types and modifiers are supported.
Example Usage
CPU_INT16U mask_16; CPU_INT32U mask_32; mask_16 = DEF_BIT(12u); mask_16 = DEF_BIT16(15u); mask_32 = DEF_BIT(19u); mask_32 = DEF_BIT16(23u); /* 16-bit shift macro overflows; sets mask_32 = 0 */ mask_32 = DEF_BIT32(28u); /* 32-bit shift macro correctly sets mask_32 = 0x10000000 */