ATmega 2560 LED 控制:开关控制两个 LED 灯同时亮起

电路连接:

  • +V 连接 LED0, LED1 的正极以及开关的正极;
  • LED1, LED0, 开关的负极分别连接到 ATmega 2560 的 PD2, PD1, PD0;
  • ATmega 2560 接地

代码:

假设 DDRC 已经被初始化,执行如下代码:

int val = 0;
PORTD |= 0x06;
while (1) {
    PORTD &= ~(1 << val);
    if (PIND & 0x01) {
        val += 1;
        if (val > 2) {
            val = 2;
        }
    } else {
        val = 1;
    }
}

分析:

  • 两个 LED 灯都亮起的情况是:当开关被按下并且 val 的值为 2 时
  • 代码中 PORTD |= 0x06; 将 PD1 和 PD2 设置为高电平,此时 LED0 和 LED1 熄灭。
  • while 循环中,PORTD &= ~(1 << val); 控制 LED 亮灭,根据 val 的值,将对应的端口位设置为低电平,使对应的 LED 灯亮起。
  • 当开关按下时,if (PIND & 0x01) 条件成立,val 的值加 1,如果 val 大于 2,则 val 设置为 2。此时,PORTD &= ~(1 << val); 将 PD1 和 PD2 设置为低电平,使 LED0 和 LED1 都亮起。
  • 当开关松开时,val 设置为 1,只有 LED1 亮起。

结论:

通过代码逻辑分析,可以得知当开关被按下并且 val 的值为 2 时,两个 LED 灯都会亮起来。这说明通过代码控制端口的电平,可以实现对 LED 灯的控制,并通过开关来改变 LED 灯的亮灭状态。

ATmega 2560 LED 控制:开关控制两个LED灯同时亮起

原文地址: https://www.cveoy.top/t/topic/ojVc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录