而是通过隔一段时间调用(比如10毫秒)来扫描按键,以尽

而是通过隔一段时间调用(比如10毫秒)来扫描按键,以尽

ID:14135527

大小:106.00 KB

页数:22页

时间:2018-07-26

而是通过隔一段时间调用(比如10毫秒)来扫描按键,以尽_第1页
而是通过隔一段时间调用(比如10毫秒)来扫描按键,以尽_第2页
而是通过隔一段时间调用(比如10毫秒)来扫描按键,以尽_第3页
而是通过隔一段时间调用(比如10毫秒)来扫描按键,以尽_第4页
而是通过隔一段时间调用(比如10毫秒)来扫描按键,以尽_第5页
资源描述:

《而是通过隔一段时间调用(比如10毫秒)来扫描按键,以尽》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1、一般都不在键盘程序中延时,而是通过隔一段时间调用(比如10毫秒)来扫描按键,以尽量释放CPU资源;2、所有键盘程序基本上都是一个模式,可以处理加速键、一键多功能等情况;3、对外接口只有2个,换用不同硬件的键盘只需把该键盘程序加入工程编译即可,其他不需要作任何改动,非常方便。基本上都是一个模式:有键?--YES——和上次相同?--No--Keyold=0;退出

2、

3、

4、YES--Keyold;

5、

6、

7、Keyold==首键延时KEYDELAY?--No--退出

8、

9、

10、YES--Keyok=1;//按下不放一定时间

11、发首键,后面发加速键

12、保存键值到Keydata;(必要时译码)

13、Keyold=KEYDELAY-KEYLOOP(按住不放的延时);--退出

14、No--Keyold==0?--YES--退出

15、N0--Keyok=1;//不为0说明按了键再放开,当然作按键有效处理保存键值到Keydata;(必要时译码)Keyold=0;--退出所有键盘程序对外接口:unsignedcharKeyGetCode(void)//返回按键码{key_ok=0;return(key_data);}bitKeyTest(void)//检

16、查有无按键{KeyScan();//键扫描return(key_ok);}//--------------------------------------------------------------------------////源程序大公开////(c)Copyright2001-2005xuwenjun////AllRightsReserved////V1.00////-----------------------------------------------------------------

17、---------////标 题:P1口行列式键盘程序////文件名:xwj_hlkey.c////版 本:V1.00////修改人:徐文军E-mail:xuwenjun@21cn.com////日 期:05-05-13////描 述:P1口行列式键盘程序////声 明:////以下代码仅免费提供给学习用途,但引用或修改后必须在文件中声明出处.////如用于商业用途请与作者联系.E-mail:xuwenjun@21cn.com////有问题请mailtoxuwenjun@21cn.com欢迎与我交流!//

18、//--------------------------------------------------------------------------////老版本:无老版本文件名:////创建人:徐文军E-mail:xuwenjun@21cn.com////日 期:05-05-13////--------------------------------------------------------------------------//#include#include"xwj_hl

19、key.h"//P1口行列式键盘////#include"xwj_bp.h"//峰鸣器#defineKEYDELAY25/*首键延迟次数*/#defineKEYLOOP10/*连续键间隔次数,需小于KEYDELAY*/unsignedcharkey_bak;unsignedcharkey_temp;unsignedcharkey_old;unsignedcharkey_data;bitkey_ok;//P1口行列式键盘//#defineKEYPIN_LP1//定义键扫描列端口为P1低四位输入//#defi

20、neKEYPIN_HP1//定义键扫描行端口为P1高四位扫描输出////内部私有函数//unsignedcharfnKeycode(unsignedcharkey);//根据键盘映射表输出顺序键值////P1口行列式键盘////---------------------------------------------------------------------------//voidKeyScan(void)//键扫描{unsignedcharsccode,recode;KEYPIN_L=KEYPIN

21、_L

22、0x0f;//P1低四位为列线输入//KEYPIN_H=KEYPIN_H&0x0f;//P1高四位为行线发全零扫描码//if((KEYPIN_L&0x0f)!=0x0f)//有键按下{key_temp=键值;//键扫描,获得键值if(key_temp==key_bak){key_old;if(key_old==KEYDELAY)//连续键,不要则把此if屏蔽{key_ok=1;key_data=fnKeycode(key

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。