ATmega 2560 LED 控制:开关控制两个LED灯同时亮起
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 灯的亮灭状态。
原文地址: https://www.cveoy.top/t/topic/ojVc 著作权归作者所有。请勿转载和采集!