ATmega 2560 LED 控制示例:使用 PD2、PD1、PD0 控制 LED0 和 LED1
使用 ATmega 2560 控制 LED0 和 LED1 状态
本文将介绍一个使用 ATmega 2560 控制 LED0 和 LED1 状态的简单示例。
硬件连接:
- +V 连接 LED0、LED1 的正极以及开关 S1 的一端;
- LED0、LED1 的负极分别连接 ATmega 2560 的 PD2、PD1 引脚;
- 开关 S1 的另一端连接 ATmega 2560 的 PD0 引脚。
假设条件:
- DDRC 寄存器已经被初始化,用于控制 LED 的方向。
- 开关 S1 初始状态为关闭。
代码示例:
int val = 0;
PORTD |= 0x06;
while (1)
{
PORTD &= ~(1 << val);
if (PIND & 0x01)
{
val += 1;
if (val > 2)
{
val = 2;
}
}
else
{
val = 1;
}
}
代码解释:
PORTD |= 0x06: 初始化 PORTD 寄存器,设置 PD2 和 PD1 为输出状态,并使 LED0 熄灭,LED1 点亮。PORTD &= ~(1 << val): 根据val的值控制 LED0 和 LED1 的状态。if (PIND & 0x01): 检查开关 S1 的状态。当 S1 关闭时,PIND & 0x01的值为 0;当 S1 打开时,PIND & 0x01的值为 1。val += 1: 当 S1 打开时,val的值增加 1。if (val > 2): 当val的值超过 2 时,将val的值设置为 2。else: 当 S1 关闭时,将val的值设置为 1。
执行结果:
当程序执行后,LED0 将处于点亮状态,LED1 将处于熄灭状态。
注意:
- 本示例代码仅供参考,实际应用中需要根据具体硬件连接和功能需求进行调整。
- 建议在使用前仔细阅读 ATmega 2560 的数据手册,了解相关寄存器和引脚的功能。
原文地址: https://www.cveoy.top/t/topic/ojUT 著作权归作者所有。请勿转载和采集!