在C中合并数组中的位变量

时间:2017-03-25 15:45:18

标签: c verilog microcontroller 8051

我在8051微控制器平台上工作,KEIL作为IDE,C作为编程语言。

我正在尝试创建用于切换功能的位数组。

 sbit P1;
 sbit P2;
 sbit P3;

 buttons [2:0] = P1 | P2 | P3

 switch (buttons[2:0])
  {
    case 0x1: //First button is pressed 
    case 0x2: //Second button is pressed
    case 0x4: //Third is pressed
    default: //Multiple buttons are pressed. Hence invalid

  }

我找不到将位组合成单个实体并将其用于切换功能的方法。

任何人都可以建议以任何可能的方法完成任务。

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决问题的方法。

int buttons=0x00;       
buttons = ((0xFF & !P1) << 2) | ((0xFF & !P2) << 1) | ((0xFF & !P3) << 0);
相关问题