AT89C51单片机 按键控制蜂鸣器和led灯

按键K1:功能开关开,对应的指示灯亮,蜂鸣器响1s提示。
按键K2:功能开关关,对应的指示灯灭,蜂鸣器响两声,间隔1s提示。

这位老师走错地方了哦,这里不是你的学生微信群,不要把作业发到这里来。


#include <reg51.h>

typedef unsigned int u16;
typedef unsigned char u8;

sbit    LED1=P2^0;
sbit    BEEP=P2^5;
sbit    k1=P3^1;
sbit    k2=P3^0;

#define KEY1_PRESS    1
#define KEY2_PRESS    2
#define KEY_UNPRESS    0


u16 y=0;

void delay_10us(u16 ten_us)
{
    while(ten_us--);    
}

u8 key_scan(u8 mode)
{
    static u8 key=1;

    if(mode)key=1;
    if(key==1&&(k1==0||k2==0))
    {
        delay_10us(1000);
        key=0;
        if(k1==0)
            return KEY1_PRESS;
        else if(k2==0)
            return KEY2_PRESS;
    }
    else if(k1==1&&k2==1)    
    {
        key=1;            
    }
    return KEY_UNPRESS;        
}

void main()
{
    u8 key=0;
while(1)
    {
        key=key_scan(0);
            if(key==KEY1_PRESS)
            BEEP=~BEEP;
            LED1=1;
        if(key==KEY2_PRESS)
            BEEP=~BEEP;
            LED1=0;
    }
}