初学者,啥啥都搞不太懂
想要实现的效果是,按下蜂鸣器响,led亮,再次按下蜂鸣器停止,led灭,
但现在的情况是下载到单片机,蜂鸣器不响led常亮,按下按钮led要么变得更亮要么更暗
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit buzzer=P2^5; //buzzer=蜂鸣器
sbit KEY1=P3^1; //KEY1=按钮
sbit KEY2=P3^0; //KEY2=按钮
sbit KEY3=P3^2; //KEY3=按钮
sbit KEY4=P3^3; //KEY4=按钮
sbit LED1=P2^0; // LED1=led
#define KEY1_PRESS 1
#define KEY2_PRESS 2
#define KEY3_PRESS 3
#define KEY4_PRESS 4
#define KEY1_UNPRESS 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&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))
{
delay_10us(1000);
key=0;
if(KEY1==0)
return KEY1_PRESS;
else if(KEY2==0)
return KEY2_PRESS;
else if(KEY3==0)
return KEY3_PRESS;
else if(KEY4==0)
return KEY4_PRESS;
}
else
{
key=1;
}
return KEY1_UNPRESS;
}
void main()
{
u8 key=0;
while(1)
{
key=key_scan(0);
if(key==KEY1_PRESS);
LED1=!LED1;
}
if(LED1==1)
{
buzzer=0;
delay_10us(50);
buzzer=1;
delay_10us(50);
}
else if(LED1==0)
{
buzzer=0;
}
}