📄 key.c
字号:
#define KEY_FUNC
#include "..\include\DSP281x_Device.h" // DSP281x Headerfile Include File
#include "..\include\LEU_Master_Test.h" //SelfDefine Headerfile Include File
#include "..\include\KEY.h"
void delayms(Uint16 x)
{
Uint16 i,j;
for(j=0;j<=x;j++)
{
for(i=0;i<=1500;i++);
}
}
void delayus(Uint16 x)
{
Uint16 i,j;
for(j=0;j<=x;j++)
{ for(i=0;i<=150;i++);
}
}
uchar key_read(void)
{
uchar keytemp1=0;
uchar keytemp2=0;
uchar keyavil=0;
EALLOW;
KEY_DIR=0xff00 & KEY_DIR;//as input 取前八位
EDIS;
delayus(50);
EALLOW;
KEY_DIR=KEY_DIR | 0x000f;//low 4bit as out 先取低四位
EDIS;
KEY_CLEAR=0x000f;//out low level
delayus(10);
keytemp1=KEY_DAT & 0x00f0;//read high 4bit
EALLOW;
KEY_DIR=0xff00 & KEY_DIR;//as input
EDIS;
delayus(50);
EALLOW;
KEY_DIR=KEY_DIR|0x00f0;//high 4bit as out
EDIS;
KEY_CLEAR=0x00f0;//out low level
delayus(10);
keytemp1+=KEY_DAT & 0x000f;//read low 4bit
switch(keytemp1)
{
case NUM1:
case NUM2:
case NUM3:
case NUM4:
case NUM5:
case NUM6:
case NUM7:
case NUM8:
case NUM9:
case NUM0:
case UP:
case DOWN:
case LEFT:
case RIGHT:
case OK:
case ESC:
delayms(10);
// TSK_sleep(10);
EALLOW;
KEY_DIR=0xff00 & KEY_DIR;//as input
EDIS;
delayus(50);
EALLOW;
KEY_DIR=KEY_DIR | 0x000f;//low 4bit as out
EDIS;
KEY_CLEAR=0x000f;//out low level
delayus(10);
keytemp2=KEY_DAT & 0x00f0;//read high 4bit
EALLOW;
KEY_DIR=0xff00 & KEY_DIR;//as input
EDIS;
delayus(50);
EALLOW;
KEY_DIR=KEY_DIR|0x00f0;//high 4bit as out
EDIS;
KEY_CLEAR=0x00f0;//out low level
delayus(10);
keytemp2+=KEY_DAT & 0x000f;//read low 4bit
if(keytemp1==keytemp2)
{
while((KEY_DAT & 0x000f)!=0x000f);
delayms(10);
//TSK_sleep(10);
while((KEY_DAT & 0x000f)!=0x000f);
keyavil=1;
}
else
keyavil=0;
break;
default:
keyavil=0;
break;
}
EALLOW;
KEY_DIR=0xff00 & KEY_DIR;//as input
EDIS;
if(keyavil==1)
return keytemp1;
else
return 0;
}
uchar key_testnumber(void)
{
uchar keynumber,keynum;
keynumber = key_read();
switch(keynumber)
{
case NUM1: keynum=1;break;
case NUM2: keynum=2;break;
case NUM3: keynum=3;break;
case NUM4: keynum=4;break;
case NUM5: keynum=5;break;
case NUM6: keynum=6;break;
case NUM7: keynum=7;break;
case NUM8: keynum=8;break;
case NUM9: keynum=9;break;
case NUM0: keynum=0;break;
case UP: keynum=11;break;
case DOWN: keynum=12;break;
case LEFT: keynum=13;break;
case RIGHT:keynum=14;break;
case OK: keynum=15;break;
case ESC: keynum=16;break;
}
return keynum;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -