资源简介
增加去抖动的新型的按键扫描程序的测试程序
配合文章:
http://blog.csdn.net/lan120576664?viewmode=contents

代码片段和文件信息
#include “keyscan.h“
/*
Trg(triger) 代表的是触发,
Cont(continue)代表的是连续按下。
(1)没有按键的时候
ReadData=0x00;Trg=0x00;Cont=0x00
(2)第一次按下按键的情况
ReadData=0x01;Trg=0x01;Cont=0x01
(3)按键按着不松(长按键)的情况
ReadData=0x01;Trg=0x00;Cont=0x01
(4)按键松开的情况
ReadData=0x00;Trg=0x00;Cont=0x00
*/
#define INVAILD_VAL (0xFF)
typedef enum{
E_KEY_UP = 0
E_KEY_DOWN
E_KEY_HOLD
E_KEY_RELEASE
}KEY_STATE;
KEY_STATE gkeystate = E_KEY_UP;
unsigned char gTrg;
unsigned char gCont;
unsigned char gReckey;
void KeyRead( unsigned char uVal )
{
unsigned char ReadData = uVal^0xff; // 1
gTrg = ReadData & (ReadData ^ gCont); // 2
if (gTrg == 0 && ReadData == 0)
{
if (gCont)
{
gkeystate = E_KEY_RELEASE;
}
else
{
gkeystate = E_KEY_UP;
gReckey = INVAILD_VAL;
}
}
else
{
if (gTrg == 0)
{
gkeystate = E_KEY_HOLD;
}
else
{
if (gReckey != uVal)
{//抖动处理
gReckey = uVal;
return;
}
gkeystate = E_KEY_DOWN;
}
}
gCont = ReadData; // 3
}
unsigned char KeyProc(void)
{
switch (gkeystate)
{
case E_KEY_HOLD:
printf(“E_KEY_HOLD.[0x%X]..\r\n“gReckey);
break;
case E_KEY_DOWN:
printf(“E_KEY_DOWN.[0x%X]..\r\n“gReckey);
break;
case E_KEY_RELEASE:
printf(“E_KEY_RELEASE.[0x%X]..\r\n“gReckey);
break;
default:
break;
}
return gReckey;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-11-04 18:36 KeyTest\
文件 887 2014-11-04 11:31 KeyTest.sln
文件 21504 2014-11-04 18:36 KeyTest.suo
文件 1471 2014-11-04 18:25 KeyTest\keyscan.c
文件 148 2014-11-04 14:36 KeyTest\keyscan.h
文件 105128 2014-11-04 18:22 KeyTest\KeyTest.aps
文件 2103 2014-11-04 15:18 KeyTest\KeyTest.cpp
文件 514 2014-11-04 11:31 KeyTest\KeyTest.h
文件 5505 2014-11-04 18:22 KeyTest\KeyTest.rc
文件 5663 2014-11-04 18:23 KeyTest\KeyTest.vcproj
文件 1409 2014-11-04 18:36 KeyTest\KeyTest.vcproj.蓝曙光.蓝 曙 光.user
文件 3972 2014-11-04 18:24 KeyTest\KeyTestDlg.cpp
文件 777 2014-11-04 11:40 KeyTest\KeyTestDlg.h
文件 4242 2014-11-04 11:31 KeyTest\ReadMe.txt
目录 0 2014-11-04 18:36 KeyTest\res\
文件 679 2014-11-04 11:40 KeyTest\resource.h
文件 67777 2007-11-28 16:21 KeyTest\res\KeyTest.ico
文件 398 2014-11-04 11:31 KeyTest\res\KeyTest.rc2
文件 14848 2014-11-04 18:36 KeyTest\res\Thumbs.db
文件 209 2014-11-04 11:31 KeyTest\stdafx.cpp
文件 2029 2014-11-04 11:31 KeyTest\stdafx.h
文件 1432 2014-11-04 11:31 KeyTest\targetver.h
相关资源
- 新型带式输送机清扫器的设计与使用
- [scratch]打击新型冠状病毒.sb3
- 具有长距离作用力的新型弦解决方案
- 看住信SBI网上银行如何叩问“新型
- 新型PDE5抑制剂的设计与合成
- IBM推出新型虚拟网格计算磁带及存储
- 一种新型液晶环氧树脂的合成、表征
- 一种新型联萘二酚衍生物的合成及其
- 一种新型准Z源DC/DC变换器
- +GaN与SiC新型功率器件
- 新型板料成形极限测试装置的设计
- 一种新型基于多点预瞄的最优路径跟
- 论文研究 - 虚拟同步发电机的新型电
- NIST科学家开发新型光基传感器研究实
- 安森美半导体开发一种新型同步降压
- 新型带式输送机纵向撕裂保护装置设
- 论文研究 - Hantzsch环缩合反应制得的新
- 新型2-羟基苯乙酮类铕配合物的
- 新型旋切式气液两相喷嘴及内部流场
- 浙江省新型农村合作医疗改善农村居
- 商业保险介入新型农村合作医疗的研
- 新型农村合作医疗制度建设中关键性
- 基于COSO理论的新型农村合作医疗内部
- 基于内部控制理论的新型农村合作医
- 新型农村合作医疗制度报销比例、起
- 新型二自由度永磁轮毂电机偏摆力研
- 新型外转子开关磁阻轮毂电机分析设
- 新型丙烯酸树脂超疏水材料研究
- 新型宽带城域网技术IEEE802.16
- 全电飞机新型双有源桥双向DC_DC变换器
评论
共有 条评论