提问,我的目的是实现独立按键长短按的效果,但是为什么我的独立按键按下后led的亮灭是随机的。
#include <REGX52.H>
typedef unsigned char u8;
typedef unsigned int u16;
sbit K1=P3^1; //定义独立按键的引脚
sbit K2=P3^0;
sbit K3=P3^2;
sbit K4=P3^3;
#define LED P2
#define K1_depress 1
#define K2_depress 2
#define K3_depress 3
#define K4_depress 4
#define K_undepress 0
void Delay_time_10us(u8 t)
{
while(t--);
}
u8 K_scan(u8 K_mode)
{
static u8 K=1;
if(K_mode==1)K=1;
if(K==1&&(K1==0||K2==0||K3==0||K4==0))
{
Delay_time_10us(1500);
K=0;
if(K1==0)
return K1_depress;
else if(K2==0)
return K2_depress;
else if(K3==0)
return K3_depress;
else if(K4==0)
return K4_depress;
}
else if(K1==1&&K2==1&&K3==1&&K4==1)
{
K=1;
}
return K_undepress;
}
void main()
{
u8 i=0;
while(1)
{
i=K_scan(1);
if(i==K1_depress)
LED=~(LED);
}
}