|
void scanf(void)
{
static unsigned char scode=0x01,n=0;
unsigned char recode,i,j,Pres_buf[2];
P1=~scode;
recode=P1>>4;
if(recode<0x0f)
{
for(i=1;i<=4;i++)
{
if(scode>>i==0){break;}
}
for(j=0;j<4;j++)
{
if(!(recode&0x01<
}
}
if(scode!=0x08)
scode<<=1;
else
{
Pres_code[2]=n; //记录按键个数
if(n<=2)
{
for(i=n;i>0;i--)
{
if(Pres_code[i-1]==0x10) //延时去抖的作用
{
Pres_code[i-1]=0xff;
Pres_code[2]--;
}
else
{
if(Pres_code[0]==Pres_buf[1]&&n==2)
{
Pres_code[1]=Pres_buf[0];
}
else
{
Pres_code[i-1]=Pres_buf[i-1];
}
}
}
}
for(i=n;i<2;i++) //按键弹起 清除
{
Pres_code=0x10;
}
scode=0x01;
n=0;
}
} |
|