如何用C语言实现单片机上通过两个按键控制两个LED灯的开关功能?
时间: 2024-09-16 07:04:09 浏览: 89
在C语言中,为了在单片机上实现两个按键控制两个LED灯的开关功能,首先需要理解单片机的基本工作原理和I/O操作。这里假设我们使用的是8位MCU如Arduino Uno,并且使用了外部中断的方式来检测按键。
以下是一个简单的示例:
```c
#include <avr/io.h>
#include <util/delay.h> // 引入延时函数库
// 定义按键和LED的端口地址
#define KEY1_PIN PB0
#define LED1_PIN PD4
#define KEY2_PIN PB1
#define LED2_PIN PD5
void setup() {
DDRB |= (1 << KEY1_PIN); // 设置按键PB0为输入
DDRB &= ~(1 << LED1_PIN); // 设置LEDPD4为输出
DDRB |= (1 << LED2_PIN); // 设置LEDPD5为输出
DDRD |= (1 << KEY2_PIN); // 设置按键PB1为输入
DDRD &= ~(1 << LED2_PIN); // 设置LEDPD5为输出
// 配置外部中断
EICRA = (1 << ISC01) | (1 << ISC00); // 对于每个键设置上升沿触发
EIMSK |= (1 << INT0); // 开启INT0中断源
}
void loop() {
if (digitalRead(KEY1_PIN)) { // 如果KEY1按下
digitalWrite(LED1_PIN, HIGH); // LED1亮起
} else {
digitalWrite(LED1_PIN, LOW); // LED1关闭
}
if (digitalRead(KEY2_PIN)) { // 如果KEY2按下
digitalWrite(LED2_PIN, HIGH); // LED2亮起
} else {
digitalWrite(LED2_PIN, LOW); // LED2关闭
}
_delay_ms(100); // 稍作延迟防止快速切换
}
阅读全文