51单片机按键循环流水灯代码
时间: 2024-10-09 19:14:25 浏览: 62
51单片机按键循环流水灯是一种常见的基础硬件操作,主要用于学习单片机输入输出控制和定时器的应用。下面是一个简单的示例代码,假设我们有8个LED灯和4个按键,通过按键控制LED灯的点亮顺序。
```c
#include <reg52.h>
sbit KEY0 = P3^0; // 按键P3.0映射到KEY0
sbit LEDS[] = {P1^0, P1^1, P1^2, P1^3}; // LED灯映射到P1口
unsigned char delay_time = 100; // 灯亮延时时间
void delay(unsigned int time) {
while(time--) ;
}
void main() {
TMOD = 0x01; // 设置TMOD为模式1定时器
TH1 = 0xFD; // 计数初值,让定时器大约每2ms计数一次
TL1 = 0xFD;
TR1 = 1; // 开启定时器1
while(1) {
if(KEY0 == 0) { // 当按下KEY0时,停止当前LED的闪烁并开始下一个
for(int i=0; i<4; i++) {
P1 &= ~(1 << i); // 关闭当前LED
delay(delay_time);
P1 |= (1 << i); // 打开下一个LED
}
}
}
}
阅读全文