c语言单片机当S1没有按下时8个LED灯全亮当S1按下时8个LED灯显示流水效果头文件使用reg51.和、h
时间: 2024-06-12 09:05:52 浏览: 15
#include <reg51.h>
sbit S1 = P1^0; // 定义S1按键所连接的IO口
void main()
{
unsigned char led = 0xFF; // 初始状态8个LED全亮
while (1)
{
if (S1 == 0) // 检测S1是否按下
{
// S1按下时,8个LED灯显示流水效果
led = 0x7F; // 第一个LED灯亮,其余灭
while (1)
{
unsigned char i;
for (i = 0; i < 7; i++)
{
led = (led << 1) | 0x01; // 左移一位,并将最低位设为1
P0 = led; // 将结果输出到8个LED灯
delay(50000); // 延时一段时间,控制流水速度
}
led = 0x7F; // 重新初始化,第一个LED灯亮,其余灭
}
}
else
{
// S1未按下时,8个LED全亮
P0 = led; // 将结果输出到8个LED灯
}
}
}
void delay(unsigned int n)
{
while (n--);
}