看似简单的键扫描:有点像标题党吧。嘿嘿
这里主要讲的不是键扫描是如何实现的,而是键散转,亦即键处理函数的调用。
函数指针数组是这篇资料的唯一看点了吧。没有看错,的确是函数指针数组,这看起来很奇怪,看过后就可能要大呼过瘾了。
另外,看了要顶!!!!
P.S.使用Adobe Acrobat Pro 9处理文档,如果下载回去打不开。试试升级一下PDF阅读器,推荐 Adobe Reader 9。
####################################################################
作点小小修改,编写代码的时候有点大意了。
主要是键扫描函数出现了一点逻辑问题,修改后代码体积变小了4B,结构也合理了一些。哈哈~~
现改进如下
uchar _key_scan(void)
{
uchar temp_row;//行状态暂存
uchar _key_no;//键值暂存
_ROW_INPUT;//置行输入
temp_row=_KEY_STATUE;//读行状态
if((temp_row&0x0F)!=0x0F)//无按键
{
_key_delay(100);
temp_row=_KEY_STATUE;//再次读行状态
if((temp_row&0x0F)!=0x0F)//抖动
{
_COL_INPUT;//置列输入
for(_key_no=0;_key_no<16;_key_no++)//出错
if(_key_table[_key_no]==temp_row+(_KEY_STATUE&0xF0))
{
return _key_no+0x30;//键值已查找正确
}
}
}
else
return _ERROR;//无按键或抖动或出错
}
[ 此贴被wookongbun在2009-11-09 23:52重新编辑 ]