我正在使用 ATtiny85 作为微控制器。我正在尝试读取两个大约 3 V 的输入,并为每个“开”输入(超过 1 V)输出 5 V。我使用 PINB0 和 PINB1 进行输入,使用 PINB3 和 PINB4 进行输出。问题是当 PINB0 和 PINB1 都打开时,我得到两个 5 V 输出,但是当只有一个打开时,我只得到 2 V,我正在尝试解决这个问题,所以我得到 5V 输出。
这是我的代码:
#inlude <avr/io.h>
#include <stdint.h>
int main(void)
{
// set pin 0 to input (pi signal 0)
DDRB &= ~(1 << PINB0);
PORTB &= 0 << PINB0;
// set pin 1 to input (pi signal 1)
DDRB &= ~(1 << PINB1);
PORTB &= 0 << PINB1;
//set pin 3 to output of 0
DDRB |= 1 << PINB3;
PORTB &= 0 << PINB3;
//set pin 4 to output of 1
DDRB |= 1 << PINB4;
PORTB &= 0 << PINB4;
while (1)
{
if (bit_is_clear(PINB, 0) && bit_is_clear(PINB, 1))
{
PORTB &= 0 << PINB3; //output zero volts
PORTB &= 0 << PINB4; //output zero volts
}
else if (bit_is_clear(PINB, 0) && !(bit_is_clear(PINB, 1)))
{
PORTB &= 0 << PINB3; //output zero volts
PORTB |= 1 << PINB4; //output 5 volts
}
else if (!(bit_is_clear(PINB, 0)) && bit_is_clear(PINB, 1))
{
PORTB |= 1 << PINB3; //output 5 volts
PORTB &= 0 << PINB4; //output zero volts
}
else
{
PORTB |= 1 << PINB3; //output 5 volts
PORTB |= 1 << PINB4; //output 5 volts
}
}
}