PORTB的LED通过AVR中的输入PINA控制

问题描述

我正在尝试用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()