c语言单片机当S1没有按下时8个LED灯全亮当S1按下时8个LED灯显示流水效果头文件使用reg51.和、h
时间: 2024-06-12 18:05:52 浏览: 155
4-IO输出-点亮多个LED灯方法2(51单片机C语言实例Proteus仿真和代码)
5星 · 资源好评率100%
#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--);
}
阅读全文