问题描述
我正在尝试用Atmel编写代码,以便可以通过连接的开关控制atmega32 PORTB的引脚 对PINA来说,它可以工作,但是只有一个问题,如果一个开关保持高电平,而另一个开关保持高电平 将LED变高,连接到第二个引脚的LED(不变)不变,我哪里出错了?
myOtherlibmodule
} }
解决方法
当您尝试根据另一个端口输入来控制输出时,您可以简单地执行类似的操作
PORTB = PINA;
当然,如果您不需要完整的端口,则可以始终从整个端口屏蔽所需的位。 另外,如果您在两个端口中都没有使用相同的针脚编号(例如:如果一个端口的针脚3控制另一个端口的针脚6的行为),这也不是解决问题的方法 这样您就可以避免很多丑陋而复杂的逻辑
如果您想继续前进,请尝试从“其他”中删除“其他”,不需要它们,据我所知,条件是互斥的
,分析您的代码
看看本节
template<typename T>
inline auto MYMAT<T>::operator()(int x,int y) -> Wrapper
{
return {this,x,y};
}
如果其中一个开关(连接到PORTA的一个开关)保持高电平,则第一个while循环条件while(PINA != 0x00){
t = t + 1;
_delay_ms(1);
if(t == 100) break;
}
while(t != 100){
//your algorithm body processed here
}
始终为PINA != 0x00
,仅当true
时,循环结束到第二个while循环,它将不会兴奋,因为条件t==100
已经为假
换句话说,您的t != 100
函数在释放所有开关之前不会处理任何数据
解决方案
我为您尝试执行的操作编写了简单的代码
toggle()