ATmega 2560 LED 控制示例:LED0 亮,LED1 灭
ATmega 2560 LED 控制示例:LED0 亮,LED1 灭
电路连接:
- +V 连接 LED0, LED1 的正极以及开关 S1 的正极;
- LED0, LED1 的负极分别连接到 ATmega 2560 的 PD2, PD1 脚位;
- 开关 S1 的负极连接到 ATmega 2560 的 PD0 脚位。
代码示例:
int val = 0;
PORTD |= 0x06;
while (1) {
PORTD &= ~(1 << val);
if (PIND & 0x01) {
val += 1;
if (val > 2) {
val = 2;
}
} else {
val = 1;
}
}
假设: DDRC 已经被初始化,开关 S1 是接通的。
执行结果:
LED0 亮,LED1 灭。
解释:
- 代码中使用
PORTD寄存器控制 LED 的亮灭状态。 PORTD |= 0x06初始化 LED0 和 LED1 的输出状态,使其初始状态为灭。val变量用来控制 LED 的亮灭状态,取值为 0, 1, 2 分别对应 LED0 亮,LED1 亮,两者都灭。PIND & 0x01检查开关 S1 的状态,如果开关 S1 接通,则val加 1,否则val等于 1。PORTD &= ~(1 << val)根据val的值控制 LED 的亮灭状态。
总结:
该示例代码展示了如何使用 ATmega 2560 控制 LED 灯的亮灭状态,并根据开关的状态进行切换。
原文地址: https://www.cveoy.top/t/topic/ojUX 著作权归作者所有。请勿转载和采集!