gpt4 book ai didi

c - 如何从 atmega32 引脚读取输入值?

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

我正在尝试从 avr 引脚读取一个值,但它不起作用。

我正在尝试读取来自按钮的值,并且此按钮连接到 5V 直流电池。

当我按下按钮时,5V 应该转到 atmega32 并将其读取为 1,然后 if 语句变为真并且 LED 灯亮起。

但是,当该值变为真时,led 会亮起,但不会。

bit 1 是按钮位0是led

代码

#define DDRA (*((volatile unsigned char *)0x3A))
#define PORTA (*((volatile unsigned char *)0x3B))
#define PINA (*((volatile unsigned char *)0x39))

int main(void) {
DDRA |= 0b00000001; // pin 0 output

while (1) {
if ((PINA&0b00000010) == 1) { // button pressed
PORTA |= 0b00000001; // turn led on
}
}
}

最佳答案

我在这里发现一个逻辑错误:

if ((PINA&0b00000010) == 1)  // button pressed

设置位 1 时,(PINA&0b00000010) == 2。通常,当您进行位检查时,只需执行以下操作:

if (PINA&0b00000010)  // button pressed

关于c - 如何从 atmega32 引脚读取输入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44423365/

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