我正在用C对PIC18F252单片机进行编码。程序应从传感器获取3个单独的输入(首先通过ADC运行),然后根据这3个输入的组合,它将从switch语句中选择一个输出。因此,例如,如果每个传感器输出0,则我想选择大小写'000'并执行其指令。如果中间传感器输出为1,我需要010,等等。
我已经考虑过使用数组或字符串来存储3个字符的值,但是我似乎无法正确使用switch语句将输入与大小写进行比较。
似乎if / else语句将是更简单的方法,但是我需要使用switch。
所以有人可以告诉我是否可以将数组或字符串与大小写进行比较,或者还有其他方法可以做到这一点?我能想到的唯一其他方法是将输入组合分配给一个单词变量,但这需要一个开关或它自己的if / else语句。
示例:
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
/* ... */
}