单片机两个按键控两个led灯c语言
时间: 2024-09-16 11:04:20 浏览: 67
在C语言中,单片机如Arduino或8051等平台,可以使用中断和IO口控制两个按键和LED灯的开关。下面是一个简单的示例,假设我们有P1口控制LED灯D1和D2,PB0和PB1分别连接两个按键。
```c
#include <reg52.h> // 对于8051系列的头文件
// 定义按键和LED的状态位
sbit keyA = P1^0; // PB0连接按键A,P1.0为LED D1
sbit keyB = P1^1; // PB1连接按键B,P1.1为LED D2
volatile bit ledState = 0; // 初始LED状态为关闭
void main(void) {
TR1 = 1; // 启动定时器1(T1),用于按键中断
ET1 = 1; // 设置外部中断触发
EA = 1; // 开启全局中断
IT1 = 1; // 设置定时器1溢出中断
while(1) {
if(keyA == 0 && keyB == 0) { // 若两个键都没按下
if(ledState == 0) { // 当LED关时打开
P1 = 0x0F; // 打开LED D1和D2
ledState = 1;
} else { // LED已开,则关闭
P1 = 0x00; // 关闭LED D1和D2
ledState = 0;
}
}
// 中断处理部分省略,这里通常会设置中断服务函数ISR(T1),当定时器溢出时检查按键是否按下
}
}
// 中断服务函数ISR(T1)
void Timer1_ISR(void) interrupt 1 {
// 检查按键状态并更新主程序中的keyA和keyB变量
}
```
阅读全文