牛B状态机__矩阵按键__哎,还是Static有用啊~~~
前天一不小心,看见网上有许多关于用状态机写矩阵按键的程序,及实例,其中就有一个程
序是可以让按键不仅具有初级的单按功能,还具有“连击”“组合键”等功能,本人以为这种状态
机的程序确实是写到了牛B的地步,所以就联想,让4个按键具有10种功能,4个按键先是基本功
能,然后再具有连击功能,然后其中一个作为先导键,相当于PS2中的Ctrl键,先按住先导键,然
后按其他三个键,哎,想想是美好的,但是渐渐的,越发想,小小的按键,你还要按住一个键,然
后再按另外一个键才能达到那种想要的功能,这个不是太不人性化了吗?还不如多贴几个按键呢,
再说了按键也不贵,哎…看来在矩阵按键上实现牛B的状态机真的是没有必要呀,哎…有点风马牛
不相及的感觉…还老老实实的写我的简单的状态机吧:
我写的状态机键盘比较简单,只分了三种状态,状态0,状态1,状态2,每隔10ms就调用一
下这个状态机键盘函数,没有按键按下时,程序处于状态0,状态0每隔10秒就更新一次,只要有
按键被按下了,就转到状态2,状态2确定是否有按键被按下,如果确实有按键被按下,就转到状态
3,如果检测到没有按键被按下就转到状态0,此状态2发挥着消抖的强大功能,呵呵,按键按下了
当然需要释放啦,状态3就是检测释放功能,当检测到按键被释放了,就转到状态0,并且返回一个
按键值,呵呵,这样就完成了一次完整的按键过程…看起来挺简单的,但是写起来就不一定了,我
先是将马老师教材中的程序写了一遍,发现不能成功的返回一个按键值,每次回去都是0,怎么回
事呢?呵呵,经过老半天的细心查找,嚯嚯,终于发现,其中,如果把返回值用static修饰的话,
就成功咯,呵呵,静态局部变量,有你真好……以后的学习当中真的要注意静态局部变量的使用哈~~~