void keyscan(void) //这是我编的矩阵键盘按钮
{
unsigned char n;
P1=0xfe;
n=P1;
n&=0xf0;
if(n!=0xf0)
{
delay(8);
P1=0xfe;
n=P1;
n&=0xf0;
if(n!=0xf0)
{ n=P1;
switch(n)
{
case(0xee):if(p==1) debug();break; //这是第二个按钮
case(0xde):if(b==1) debug1();break; //这是第三个按钮
}
while(n!=0xf0 )
{ n=P1;
n&=0xf0;
}
}
}
P1 =0xfb;
n=P1;
n&=0xf0;
if(n!=0xf0)
{
delay(8);
P1=0xfd;
n=P1;
n&=0xf0;
if(n!=0xf0)
{ n=P1;
switch(n)
{
case(0xdb): p=1,b=1;break;//这是第一个按钮
}
while(n!=0xf0)
{ n=P1;
n&=0xf0;
}
}
}
}
我想在第一个按钮按下后,第二个,第三个按钮才有效,执行下面的子程序;但是,不行,不知道什么原因; 下面是执行的子程序
void debug()
{
m1++;
if(m1==10)
{ m1=0;
m2=m2+1;
if(m2==6)
{ m2=0;
m1=0;
}
}
}
void debug1()
{ h1++;
flag2++;
if(0==flag2%25)
{ h1=0;
h2=0;
}
if(h1==10)
{ h1=0;
h2=h2+1;
if(h2==3)
h2=0;
}
} |