极限编程!2条语句实现电容触摸按键驱动,可长期稳定工作

2020-01-18 18:46发布

本帖最后由 abc0010 于 2014-1-9 21:18 编辑

极限编程!2条语句实现电容触摸按键驱动,可以长期稳定工作,不需要消抖延迟,不需要中断处理

之前买模块的时候获得一份编程资料,因为项目忙没看过。。。

直接上代码:

if (key1 != key1_flg)        //键1驱动程序, 每按一次只进入一次
{
        key1_flg = key1;
        KeyProc(1);        //这里是按返回值处理,不属于驱动程序
}


有视频:
http://v.youku.com/v_show/id_XNjU5NDgwMzAw.html

有资料:
电容触摸IC-xaj2013-实用框架.rar (836 Bytes, 下载次数: 94) 2014-1-9 16:07 上传 点击文件名下载附件
C语言编程资料


C语言方面我是个菜鸟,不过我发现,资料 电容触摸IC-xaj2013-实用框架.c 上的GetKey()函数不论放在主程序的什么地方,程序都可以正常工作,不知道对不对。欢迎大家指正。


这是原作者的文档:
/*****************************************************
注意,本程序只是一个框架。不能直接编译。使用者需要一定
的编程基础,然后加进自己的具体功能才能实现相应的功能。

从本框架上可以看出,wxaj2013用于键盘,不需要作消抖延迟
也不需要中断处理。同时又确保按键无重复、无效等操作。让
单片机发挥更大的效率。
*****************************************************/

#include <stdio.h>
#include <reg52.h>

void systeminit(void);
void getkey(void);
void keyproc(char keyreturnval);
void funtion1(void);
void funtion2(void);
....
void otherjob(void);

void main()
{
        systeminit();

        while(1)
        {
                getkey();
                funtion1();
                funtion2();
                ......
                otherjob();
        }
}

//wxaj2013按键处理程序,只需要定义相应的引脚即可
//===============================================
void getkey()
{
        if(key1 != key1_flag)        //只有标志和引脚状态不同时才进入
        {
                key1_flag = key1;        //更新标志, 和引脚同步, 防止多次进入
                KeyProc(1);        //按键处理
        }

        if(key2 != key2_flag)
        {
                key2_flag = key2;
                KeyProc(2);
        }

        if(key3 != key3_flag)
        {
                key3_flag = key3;
                KeyProc(3);
        }

        if(key4 != key4_flag)
        {
                key4_flag = key4;
                KeyProc(4);
        }
}


//按键处理程序, 根据自己的需求补充完整即可
//=========================================
void KeyProc(char keyReturnVal)
{
        switch(keyReturnVal)
        {
                case 1: ... break;
                case 2: ... break;
                ...
                default: break;
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。