📄 key4x4al.h
字号:
#ifndef __KEY4X4_h__
#define __KEY4X4_h__
// write your header here
#include "easyIO.h"
//======================================================================
//使用说明
//首先调用Key_InitIO()函数对Key4x4的IO口做配置
//然后调用KeyScan()函数扫描键盘,取返回值
//有键按下则调用GetKey()函数对KeyScan()返回的键值进行翻译,得到你要的值
//====================================================================
//********************************************************
// 对Key4x4的IO口做配置
//IOA0-----IOA7
//********************************************************
void Key_InitIO()
{
*P_IOA_Dir |= 0x00f0;
*P_IOA_Dir &= 0xfff0;
*P_IOA_Attrib|= 0x00f0;
*P_IOA_Attrib&= 0xfff0;
*P_IOA_Data |= 0x00f0;
*P_IOA_Data &= 0xfff0;
}
//************************************************************
//延时去抖
//***********************************************************
void Delay(unsigned int i)
{
for(;i>0;i--)
{
*P_Watchdog_Clear = 0x0001;
}
}
//***************************************************************
//全键盘扫描 有键按下则返回键值,无键按下则返回0
//***************************************************************
unsigned int KeyScan()
{
unsigned int f;
*P_IOA_Data |= 0x00f0;
*P_IOA_Data &= 0xfff0;
f=*P_IOA_Data&0x000f;
if(f==0) //无键按下
{
return f;
}
else
{
Delay(5000); //去抖,对按键再次全扫描
f=*P_IOA_Data&0x000f;
if(f==0)
{
return f;
}
else
{
f=rowScan(); //有键按下,进行逐行扫描
return f;
}
}
}
//*************************************************************
//逐行扫描函数
//*************************************************************
unsigned int rowScan()
{
unsigned int f;
//**********扫描IOB7******************
*P_IOA_Data &= 0xff00;
Set_IO_Data(A,7,1);
f=*P_IOA_Data&0x000f;
if(f!=0) //有键按下
{
f=*P_IOA_Data&0x00ff;
return f;
}
//**********扫描IOB6******************
*P_IOA_Data &= 0xff00;
Set_IO_Data(A,6,1);
f=*P_IOA_Data&0x000f;
if(f!=0) //有键按下
{
f=*P_IOA_Data&0x00ff;
return f;
}
//**********扫描IOB5******************
*P_IOA_Data &= 0xff00;
Set_IO_Data(A,5,1);
f=*P_IOA_Data&0x000f;
if(f!=0) //有键按下
{
f=*P_IOA_Data&0x00ff;
return f;
}
//**********扫描IOB4******************
*P_IOA_Data &= 0xff00;
Set_IO_Data(A,4,1);
f=*P_IOA_Data&0x000f;
if(f!=0) //有键按下
{
f=*P_IOA_Data&0x00ff;
return f;
}
}
//*********************************************
//翻译键值 可自行设置
//************************************************
unsigned int GetKey(unsigned int x)
{
switch(x)
{
case 0x0088:return 0x0000;
case 0x0084:return 0x0001;
case 0x0082:return 0x0002;
case 0x0081:return 0x0003;
case 0x0048:return 0x0004;
case 0x0044:return 0x0005;
case 0x0042:return 0x0006;
case 0x0041:return 0x0007;
case 0x0028:return 0x0008;
case 0x0024:return 0x0009;
case 0x0022:return 0x000a;
case 0x0021:return 0x000b;
case 0x0018:return 0x000c;
case 0x0014:return 0x000d;
case 0x0012:return 0x000e;
case 0x0011:return 0x000f;
default:break;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -