c语言单片机当S1没有按下时8个LED灯全亮当S1按下时8个LED灯显示流水效果
时间: 2023-12-22 08:05:36 浏览: 84
以下是使用C语言编写的单片机程序,实现了当S1没有按下时8个LED灯全亮,当S1按下时8个LED灯显示流水效果的功能。
```
#include <reg52.h>
sbit S1 = P1^0;
void main()
{
unsigned char i;
while(1)
{
if(S1 == 0) // S1没有按下
{
P2 = 0xFF; // 8个LED灯全亮
}
else // S1按下
{
P2 = 0x01; // 第1个LED灯亮起
for(i=0; i<7; i++) // 循环8次
{
P2 = P2 << 1; // 左移1位
delay(10000); // 延时一段时间
}
}
}
}
void delay(unsigned int t)
{
while(t--);
}
```
在程序中,首先定义了S1为P1口的第0位,用于检测S1按钮是否被按下。然后使用while循环,不断检测S1的状态。
当S1没有按下时,将P2口的值设置为0xFF,即8个LED灯全亮。
当S1按下时,首先将P2口的值设置为0x01,即第1个LED灯亮起。然后使用for循环,循环8次,每次将P2口的值左移1位,即将亮起的LED灯向左移动一位,形成流水效果。在每次移动后,使用delay函数延时一段时间,使流水效果更明显。
最后,定义了delay函数,用于延时一段时间,以控制流水效果的速度。
阅读全文