按键控制流水速度快慢,数码管显示

按键控制流水灯速度,按下按键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;
    }
}