gpt4 book ai didi

c - 简化声明语句中的 if 逻辑

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:53 24 4
gpt4 key购买 nike

有没有可能简化这个陈述?

如果我使用 case 语句和 while 循环,则相同。

// Led Binary
if (volt == 0 )
{
LATGbits.LATG1 = 0 ; //DO1 OFF
LATGbits.LATG0 = 1 ; //DO2 OFF
LATGbits.LATG13 = 1 ; //DO3 OFF
LATGbits.LATG14 = 1 ; //DO4 OFF
}
else if (volt == 2 )
{
LATGbits.LATG1 = 0 ; //DO1 OFF
LATGbits.LATG0 = 0 ; //DO2 On
LATGbits.LATG13 = 1 ; //DO3 OFF
LATGbits.LATG14 = 1 ; //DO4 OFF
}
else if (volt == 3 )
{
LATGbits.LATG1 = 1 ; //DO1 On
LATGbits.LATG0 = 0 ; //DO2 On
LATGbits.LATG13 = 1 ; //DO3 OFF
LATGbits.LATG14 = 1 ; //DO4 OFF
}
else if (volt == 4 )
{
LATGbits.LATG1 = 0 ; //DO1 OFF
LATGbits.LATG0 = 1 ; //DO2 OFF
LATGbits.LATG13 = 0 ; //DO3 On
LATGbits.LATG14 = 1 ; //DO4 OFF
}
else if (volt == 5 )
{
LATGbits.LATG1 = 1 ; //DO1 On
LATGbits.LATG0 = 1 ; //DO2 OFF
LATGbits.LATG13 = 0 ; //DO3 On
LATGbits.LATG14 = 1 ; //DO4 OFF
}
else if (volt == 6 )
{
LATGbits.LATG1 = 0 ; //DO1 OFF
LATGbits.LATG0 = 0 ; //DO2 On
LATGbits.LATG13 = 0 ; //DO3 On
LATGbits.LATG14 = 1 ; //DO4 OFF

}
else if (volt == 7 )
{
LATGbits.LATG1 = 1 ; //DO1 On
LATGbits.LATG0 = 0 ; //DO2 On
LATGbits.LATG13 = 0 ; //DO3 On
LATGbits.LATG14 = 1 ; //DO4 OFF
}
else if (volt == 8 )
{
LATGbits.LATG1 = 0 ; //DO1 OFF
LATGbits.LATG0 = 1 ; //DO2 OFF
LATGbits.LATG13 = 1 ; //DO3 OFF
LATGbits.LATG14 = 0 ; //DO4 On
}
else if (volt == 9 )
{
LATGbits.LATG1 = 1 ; //DO1 On
LATGbits.LATG0 = 1 ; //DO2 OFF
LATGbits.LATG13 = 1 ; //DO3 OFF
LATGbits.LATG14 = 0 ; //DO4 On
}
else if (volt == 10 )
{
LATGbits.LATG1 = 1 ; //DO1 On
LATGbits.LATG0 = 1 ; //DO2 OFF
LATGbits.LATG13 = 0 ; //DO3 On
LATGbits.LATG14 = 1 ; //DO4 OFF
}

从上面的代码可以看出,当达到一定电压时,LED 将打开或关闭。该代码也有许多关于 LED 输出的声明。有些 LED 我也声明使用 Bitwise 函数,但它是一样的。

谢谢。

最佳答案

一种解决方案是使用查找表将volt值转换为四位LED值,然后使用按位运算符设置每个LED输出

static const int ledTable[16] = { 14, 14, 12, 13, 10, 11, 8, 9, 6, 7, 11, 14, 14, 14, 14, 14 };

int value = ledTable[volt];
LATGbits.LATG1 = value & 1;
LATGbits.LATG0 = (value >> 1) & 1;
LATGbits.LATG13 = (value >> 2) & 1;
LATGbits.LATG14 = (value >> 3) & 1;

您还可以通过数学方式确定 LED 值,例如

int value = volt ^ 14;

关于c - 简化声明语句中的 if 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32240789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com