32单片机,按键按下,灯亮,再按下,灯灭的程序
时间: 2024-04-17 18:24:35 浏览: 85
下面是一个使用32单片机编写的简单程序,按下按键时灯亮,再次按下按键时灯灭。
```c
#include <reg52.h>
sbit LED = P1^0;
sbit BTN = P3^2;
void delay(unsigned int ms) {
unsigned int i, j;
for(i = 0; i < ms; i++)
for(j = 0; j < 120; j++);
}
void main() {
LED = 0; // 初始状态灯灭
while(1) {
if(BTN == 0) { // 按键按下
delay(10); // 延时去抖动
if(BTN == 0) { // 确认按键按下
LED = ~LED; // 翻转灯的状态
while(BTN == 0); // 等待按键释放
delay(10); // 延时去抖动
}
}
}
}
```
在此程序中,我们将LED连接到P1.0引脚,按键连接到P3.2引脚。程序使用一个while循环来不断检测按键的状态。当按键按下时,我们先进行一个延时去抖动的操作,然后再次检测按键状态确认按键确实被按下。如果确认按键被按下,则翻转LED的状态(通过对LED取反),并等待按键释放。程序会不断循环执行这些步骤,实现按下按键时灯亮,再次按下时灯灭的效果。