uchar Keyboard_Scan(void)
{
uchar scancode,tmpcode;
P2=0xf0;
while(P2==0xf0); //等待有键按下
Delay_1ms(20); //延时10ms去抖动
if(P2!=0xf0)
{ scancode=0xfe; //逐行扫描
while(scancode!=0xef) //还没有扫描完4行
{
P2=scancode;
if((P2&0xf0)!=0xf0) //本列有键按下
{
tmpcode=(P2&0xf0)|(scancode&0x0f);
while((P2&0xf0)!=0xf0); //等待键释放
return(tmpcode);
}
else scancode=(scancode<<1)|0x01;
}
}
return(0);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
具体还得看整个程序吧。估计这里是返回一个空的,
貌似明白了,应该是空的,谢了
什么意思啊?都被定义成void了
uchar Keyboard_Scan(void)
返回空有意思的么 啊,
当按键没有按下时,return(tmpcode)没有被执行到,于是函数运行到结尾return(0)
返回0,如果没有return(0),编译时会有警告或出错,因为这个函数必须有返回值,不论按键有没有按下。
当按键有按下时返回return(tmpcode);并退出整个函数,return后面的就不再执行了
当按键没有按下时,return(tmpcode)没有被执行到,于是函数运行到结尾return(0)
返回0,如果没有return(0),编译时会有警告或出错,因为这个函数必须有返回值,不论按键有没有按下。
一周热门 更多>