您将如何结合3个二进制输入使用switch语句? (C)

问题描述 投票:0回答:1

我正在用C对PIC18F252单片机进行编码。程序应从传感器获取3个单独的输入(首先通过ADC运行),然后根据这3个输入的组合,它将从switch语句中选择一个输出。因此,例如,如果每个传感器输出0,则我想选择大小写'000'并执行其指令。如果中间传感器输出为1,我需要010,等等。

我已经考虑过使用数组或字符串来存储3个字符的值,但是我似乎无法正确使用switch语句将输入与大小写进行比较。

似乎if / else语句将是更简单的方法,但是我需要使用switch。

所以有人可以告诉我是否可以将数组或字符串与大小写进行比较,或者还有其他方法可以做到这一点?我能想到的唯一其他方法是将输入组合分配给一个单词变量,但这需要一个开关或它自己的if / else语句。

c switch-statement sensor pic mplab
1个回答
0
投票
如果输入值为数字值(0或1),则可以通过移位和按位或将位组合为一个数字。

示例:

int input1 = 0; int input2 = 1; int input3 = 1; int combined; /* assuming the values can be 0 or 1 only */ combined = input1 | ( input2 << 1 ) | ( input3 << 2 ); /* or with any non-zero value as TRUE */ combined = (input1 ? 1 << 0 : 0) | (input2 ? 1 << 1 : 0) | ( input3 ? 1 << 2 : 0); switch(combined) { case 0x0: // or GCC extension 0xb000 case 0x1: // or GCC extension 0xb001 case 0x2: // or GCC extension 0xb010 case 0x3: // or GCC extension 0xb011 /* ... */ }

© www.soinside.com 2019 - 2024. All rights reserved.