帮我看看这段键盘扫描程序,程序设置按键按下时变量置位,按键放下时按变量
返回值,可是我在主程序用key_val=keyscan()调用时却出现问题,当没键按下时
键盘扫描程序不执行语句,只执行判断语句,这是函数返回的是什么值,是返回
void型还是0,如果返回void型,key_val值是否改变,是保持不变还是变成0,
当我按下键未释放时主程序却有动作,是否程序有执行语句和只执行判断语句
的返回值不一样,望迷津,谢谢!true=1,false=0;key是unsigned char ,
是用来判断哪个键按下的,按键接法是一个口接一个按键接地
uchar keyscan(void)
{
P1_0=true; P1_1=true; P1_2=true;
if(key==0){
if(P1_0==false)
{
P1_0=true;
dispdelay(2500);
if(P1_0==false){
key=1; //A键按下
}
}
}
if(P1_0==true){
if (key==1)
{P1_0=true;
dispdelay(2500);
if(P1_0==true)
{ key=0;
return(1); //获得A键:1
}
}
}
if(key==0){
if(P1_1==false)
{
P1_1=true;
dispdelay(2500);
if(P1_1==false){
key=2;
}
}
}
if(P1_1==true){
if (key==2)
{P1_1=true;
dispdelay(2500);
if(P1_1==true)
{ key=0;
return(2); //获得B键:2
}
}
}
if(key==0){
if(P1_2==false)
{
P1_2=true;
dispdelay(2500);
if(P1_2==false){
key=3;
}
}
}
if(P1_2==true){
if (key==3)
{P1_2=true;
dispdelay(2500);
if(P1_2==true)
{ key=0;
return(3); //获得C键:3
}
}
}
}