我想将我的开关输入类型配置为高电平有效或低电平有效。我写了下面的代码,我知道它不会起作用,因为当我乘以0时,没有任何作用。一种方法是编写代码以使用if语句和句柄检查ACTIVE LOW。但我确信可以有一种简单的方法来基于可配置位执行逻辑NOT操作。如何根据开关输入类型配置readSwitch()函数?
#define ACTIVE_LOW 0
#define ACTIVE_HIGH 1
#define SWITCH_TYPE ACTIVE_LOW
uint8_t readSwitch(uint8_t pinNum)
{
uint8_t state=0;
if(SWITCH_TYPE*(PINC&(1<<pinNum)))
{
_delay_ms(20);
if(SWITCH_TYPE*(PINC&(1<<pinNum)))
{
state=1;
}
}
return(state);
}
答案 0 :(得分:0)
基于@AterLux评论和进一步分析,下面的代码可以照顾。
if(!(PINC&(1<<pinNum))^SWITCH_TYPE)