/****************************************Copyright (c)**************************************************
**                                 driver program for lpc2100
**
**--------------文件信息--------------------------------------------------------------------------------
** 文件名: key.c
** 创建人: 林傅荣
** 日  期: 2011.8.4
** 描  述: 按键相关函数的实现
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/#include "config.h"//Key_GPIO
#define     K1  8
#define     K2  9
#define     K3  10
#define     K4  11
#define     K5  12
#define     K7  13
#define     K6  14
#define     K8  15
int8u KeyScanLine(int8u column); //按键初始化
void KeyInit(int8u stat)
{if(0 == stat){IO0DIR = IO0DIR & (~((1 << K1) | (1 << K2) | (1 << K3) | (1 << K4) | (1 << K5) | (1 << K6) | (1 << K7) | (1 << K8)));}else{IO0DIR = IO0DIR & (~((1 << K5) | (1 << K6) | (1 << K7) | (1 << K8)));IO0DIR = IO0DIR | (1 << K1) | (1 << K2) | (1 << K3) | (1 << K4);}
}//按键扫描
int8u KeyScan(int8u stat)
{int32u KeyGPIO;int8u key = 0;if(0 == stat){KeyGPIO = ((1 << K1) | (1 << K2) | (1 << K3) | (1 << K4) | (1 << K5) | (1 << K6) | (1 << K7) | (1 << K8));if((KeyGPIO & IO0PIN) != KeyGPIO){OSTimeDly(50);if((KeyGPIO & IO0PIN) != KeyGPIO){if(0 == (IO0PIN & (1 << K1)))key = 1;else if(0 == (IO0PIN & (1 << K2)))key = 2;else if(0 == (IO0PIN & (1 << K3)))key = 3;else if(0 == (IO0PIN & (1 << K4)))key = 4;else if(0 == (IO0PIN & (1 << K5)))key = 5;else if(0 == (IO0PIN & (1 << K6)))key = 6;else if(0 == (IO0PIN & (1 << K7)))key = 7;else if(0 == (IO0PIN & (1 << K8)))key = 8;       while((KeyGPIO & IO0PIN) != KeyGPIO);}}}else{IO0CLR = (1 << K1);IO0SET = (1 << K2) | (1 << K3) | (1 << K4);key = KeyScanLine(1);if(key != 0)return key;IO0CLR = (1 << K2);IO0SET = (1 << K1) | (1 << K3) | (1 << K4);key = KeyScanLine(2);if(key != 0)return key;IO0CLR = (1 << K3);IO0SET = (1 << K1) | (1 << K2) | (1 << K4);key = KeyScanLine(3);if(key != 0)return key;IO0CLR = (1 << K4);IO0SET = (1 << K1) | (1 << K2) | (1 << K3);key = KeyScanLine(4);if(key != 0)return key;}return key;
}//扫描每行
int8u KeyScanLine(int8u column)
{int8u key = 0;if(0 == (IO0PIN & (1 << K5))){key = (column-1)*4 + 1;while(0 == (IO0PIN & (1 << K5)));}else if(0 == (IO0PIN & (1 << K6))){key = (column-1)*4 + 2;while(0 == (IO0PIN & (1 << K6)));}else if(0 == (IO0PIN & (1 << K7))){key = (column-1)*4 + 3;while(0 == (IO0PIN & (1 << K7)));}else if(0 == (IO0PIN & (1 << K8))){key = (column-1)*4 + 4;while(0 == (IO0PIN & (1 << K8)));}return key;
}/***************************************************************************************
**              End File
***************************************************************************************/

  

转载于:https://www.cnblogs.com/flonlen/archive/2011/08/17/arm7_KeyScan.html

arm7 键盘扫描程序相关推荐

  1. c语言键盘驱动程序,c语言键盘扫描程序

    描述 c语言键盘扫描程序 4*4键盘扫描C语言程序 /*  4x4矩阵键盘的扫描程序 测试通过*/ #includesbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2= ...

  2. 基于FPGA的键盘扫描程序的设计

    在现代电子「业的控制电路中,键盘扫描和显示电路时系统的调试和设置有着重要 的作用.随着EDA技术的发展,基于FPGA的扫描键盘因其结构简单,能有效防止机 械键盘按键抖动带来的数据错误等优点在许多电子设 ...

  3. 一个51单片机的键盘扫描程序,算法简单有效

    一个51单片机的键盘扫描程序,算法简单有效 发一个51单片机的键盘扫描程序,算法简单有效                                        再给大家分享一个不错按键程序(来 ...

  4. 4x3矩阵键盘扫描法c语言,4X4矩阵键盘扫描程序

    4X4矩阵键盘扫描程序 4X4矩阵键盘扫描: 1. 4根行线的GIO均设为Output,根列线的GIO均设为Input: 2. 4根行线的GIO分别置为0111.1011.1101.1110,读逐一读 ...

  5. 4*4按键扫描程序c语言,【资料】单片机4*4矩阵键盘扫描程序(c语言+汇编语言2个版本)...

    ;4X4矩阵键盘程序.主要原理为扫描键盘矩阵时,每次只有一行电平拉低.在逐次扫描拉低的这些行的同时,去读那些列的电平. ;被拉低的行上,按下的键对应的列的电平为0 ,其它为1. 用左移位的指令,在进位 ...

  6. 单片机矩阵式键盘扫描程序

    单片机矩阵键盘判断某个按键按下 这是我第一次发表文章,关于51单片机矩阵式键盘逐行逐列扫描是否有按键按下,以及把键号显示用七段数码管显示出来的程序,分享如下. 矩阵键盘 51单片机 数码管显示 程序代 ...

  7. 4x4矩阵键盘扫描c语言程序,单片机4*4矩阵键盘扫描程序(c语言+汇编语言2个版本)...

    ;4X4矩阵键盘程序.主要原理为扫描键盘矩阵时,每次只有一行电平拉低.在逐次扫描拉低的这些行的同时,去读那些列的电平. ;被拉低的行上,按下的键对应的列的电平为0 ,其它为1. 用左移位的指令,在进位 ...

  8. 单片机4x4矩阵键盘c语言,求一个单片机4X4矩阵键盘扫描程序,C语言的。

    满意答案 lfm630228 2013.05.08 采纳率:50%    等级:12 已帮助:8260人 uchar code KeyCodeTable[]= { 0x11,0x12,0x14,0x1 ...

  9. c语言主程序子程序流程图,c语言超经典矩阵式键盘的接法,流程图和扫描程序

    标签:单片机(2591)程序(73)C语言(456) 列线输入端P1.0~P1.3通过电阻接正电源,行线P1.4~P1.7所接的单片机的I/O口作为输出端.将输入端置为高电平,输出端置为低电平.这样, ...

  10. 4x4矩阵键盘工作原理及扫描程序_4X4矩形键盘

    介绍 什么是矩阵键盘 矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组,由于电路设计时需要更多的外部输入,单独的控制一个按键需要浪费很多的IO资源,所以就有了矩阵键盘,常用的矩阵键盘有4X4和 ...

最新文章

  1. 《深入浅出Nodejs》—— 读后总结
  2. Delphi 与 DirectX 之 DelphiX(55): TDIB.DoMosaic();
  3. Mini 容器学习笔记6——组件的获取(应用)
  4. ./NISwGSP: error while loading shared libraries: libopencv_stitching.so.3.0: cannot open shared obje
  5. 页面url带参数_微信小程序云开发教程微信小程序的JS高级页面间数据传递
  6. 百度文库无需VIP和下载券直接下载
  7. java开发职业规划
  8. 二维空间:点到直线距离的计算
  9. matlab 字符查找函数,matlab字符函数
  10. 拯救懒癌患者,京东订单自动写评价脚本!
  11. PD,LGD,EAD
  12. 李兴平中国最牛的个人站长
  13. t.cn新浪短链接 生成
  14. vue3中的watch和watchEffect
  15. 物品冷启动问题解决办法
  16. 梅森旋转(Mersenne twister)及其他随机数生成算法
  17. 构造拉丁方阵和正交拉丁方阵组
  18. 操作系统高级课程-1
  19. python3爬取网易云歌单数据清洗_实例 | 使用网易云音乐数据演示数据整合与数据清洗...
  20. 全国职业技能计算机考试教案,内江职业技术学院2017年中职类—信息技术二类技能测试大纲...

热门文章

  1. hive建表报错JsonSerDe
  2. Windows核心编程_代码段共享_LocalAlloc/GlobalAlloc区别
  3. 3.字符串(string)
  4. FireEye:K3chang行动***欧洲外交部门
  5. 细说PHP:人人都能玩转PHP和MySQL Web开发
  6. 【源码阅读】Java集合之一 - ArrayList源码深度解读
  7. 《设计模式之禅》--设计模式大PK
  8. Uva 11054 - Wine trading in Gergovia(模拟)
  9. SpriteBuilderamp;Cocos2D使用CCEffect特效实现天黑天亮过度效果
  10. HTML5对表单的约束验证