资源简介
增加去抖动的新型的按键扫描程序的测试程序
配合文章:
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
相关资源
- 多功能电子时钟设计
- 《新理念新模式新动能——新型智慧
- 一种新型低纹波高精度数控直流电流
- 一种信号采集隔离器:实用新型专利
- 新型三维空间矢量脉宽调制在三相四
- 基于CAN总线的新型智能阀门电动执行
- 一种新型基于TEC的精密温控器设计
- 无线电遥控器遥控信号 单片机 发射
- 新型智能垃圾桶的设计方案
- 一种新型非线性PID控制器
- PSCAD 新型 故障限流器FCL仿真短路电流
- 新型的图像分割方法综述
- 论文研究-新型改进果蝇优化算法.pd
- 一种新型基于多点预瞄的最优路径跟
- 发明专利和实用新型专利模板
- 一种新型径向基函数神经网络学习算
- 一种新型的零水印技术
- 新型矿井无线多通道三分量分布式地
- 新型免疫抑制剂的作用机制及应用
- 论文研究 - 新型烘焙生物质和生物炭
- 论文研究 - X连锁的球蛋白血症的俄罗
- 论文研究 - 一种新型的治疗优化系统
- 新型双苯并咪唑钳形铂化合物的合成
- 基于DFT方法的新型苯并咪唑基金属介
- 新型FSK/DTMF兼容电话主叫显示器的设计
- 基于单片机的新型液晶显示控制电路
- KJ333新型煤矿安全监控系统上位机软件
- 一种新型矿用通信与控制系统的设计
- L-吡咯烷-2-羧酸硫酸盐LPCAS:一种在无
- 论文研究 - 基于丙烯酰胺和N-11-二甲基
评论
共有 条评论