各位大侠:在c51的keil平台,定义一个位是比较简单的,如 bit ab; 就能将ab定义为一个位变量,但是msp430在IAR平台就不能这么定义了,该怎么定义一个位变量?谢谢各位指点!邮箱:oldzhichen@yahoo.com.cn
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
各位大侠:在c51的keil平台,定义一个位是比较简单的,如 bit ab; 就能将ab定义为一个位变量,但是msp430在IAR平台就不能这么定义了,该怎么定义一个位变量?谢谢各位指点!邮箱:oldzhichen@yahoo.com.cn
我知道的有两种方法,其他请专家补充:
1. 自己定义一个字节变量,为每个位作定义,比如
/************************************************************
* STANDARD BITS
************************************************************/
#define BIT0 (0x0001)
#define BIT1 (0x0002)
#define BIT2 (0x0004)
#define BIT3 (0x0008)
#define BIT4 (0x0010)
#define BIT5 (0x0020)
#define BIT6 (0x0040)
#define BIT7 (0x0080)
之后在使用时,用逻辑运算进行位操作,比如,假设定义一个字节bit-byte用来作位变量,其第0位为某个位变量bit-flag,那么
可以直接定义 #define bit-flag 0x01 (或者在上面语句基础上再这么写:#define bit-flag BIT0 )
置位该位变量: bit-byte | = BIT0; 或 bit-byte | = bit-flag;
清零该位变量: bit-byte &= ~BIT0; 或 bit-byte &= ~bit-flag;
检验该位变量是否为1: if( bit-byte & BIT0 )…… 或 if( bit-byte & bit-flag )……
2. 使用BOOL数据类型,在C环境下可能需要stdbool.h的支持,C++则默认支持。该数据类型实际上还是字节数据,占用8bits大小。