level 1
#include <reg51.h>
sbit key1 = P1^0; // 按键1连接到P1.0
sbit key2 = P1^1; // 按键2连接到P1.1
unsigned char LED_pattern = 0x01; // 初始化为第一个LED亮起
bit blink = 0; // 闪烁标志
void delay(unsigned int time) {
unsigned int i, j;
for (i = 0; i < time; i++)
for (j = 0; j < 1275; j++); // 适当的延迟
}
void main() {
P2 = ~LED_pattern; // 设置LED状态
while(1) {
// 检查按键1
if(!key1) { // 如果按键1被按下
delay(50); // 去抖动
if(!key1) { // 再次检查
LED_pattern <<= 1; // 移动到下一个LED
if(!LED_pattern) {
LED_pattern = 0x01; // 回到第一个LED
}
blink = 0; // 停止闪烁
P2 = ~LED_pattern;
while(!key1); // 等待按键释放
}
}
// 检查按键2
if(!key2) { // 如果按键2被按下
delay(50); // 去抖动
if(!key2) { // 再次检查
blink = ~blink; // 切换闪烁状态
while(!key2); // 等待按键释放
}
}
// 如果闪烁标志设置
if(blink) {
P2 = 0xFF; // 所有LED关闭
delay(250); // 延迟
P2 = ~LED_pattern; // 当前LED亮
delay(250); // 延迟
}
}
}
2023年10月03日 03点10分
7