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大小。