按键控制流水灯速度,按下按键1速度恢复到最开始速度按键2加快,按键3减速
(用定时器) 51单片机
#include <reg51.h>
#define LED P1
#define SPEED 20
unsigned char flag = 0; //用来记录按键状态
unsigned char speed = SPEED; //流水灯速度
unsigned char i = 0; //灯的状态
void main()
{
while(1)
{
if(flag == 0) //按键1,速度恢复到最开始速度
{
speed = SPEED;
}
else if(flag == 1) //按键2,速度加快
{
speed /= 2;
}
else if(flag == 2) //按键3,速度减速
{
speed *= 2;
}
LED = ~(0x01 << i); //流水灯显示
i++;
if(i == 8)
{
i = 0;
}
for(int j = 0; j < speed; j++); //延时
}
}
void key_interrupt() interrupt 0
{
if(P3 & 0x01) //按键1
{
flag = 0;
}
else if(P3 & 0x02) //按键2
{
flag = 1;
}
else if(P3 & 0x04) //按键3
{
flag = 2;
}
}