📄 keyboard.c
字号:
/*+++++++++++++++++++++++++++++++++++++++++++++++++++/
程序名 :KeyBoard.c 键盘扫描子程序
入口:
出口:键盘值
+++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "CPLD.h"
//===============================================
unsigned char idata ucKeyState;
void ISR_int1(void) interrupt 2 using 0
{ // unsigned char ucSKey=0; //ucSKey初始化
unsigned int uiI;
for (uiI=0;uiI<10000;uiI++); //延时,去掉抖动
if(INT1==1) goto end01; //读入int0,
//关闭外部中断
// for (uiI=0;uiI<10000;uiI++); //延时,去掉抖动
//ucSKey=GetKey();
ucKeyState=GetKey();
// ucKeyState=ucSKey; //按键所对应的符号
while(INT1==0); //按键是否弹起?
//DispOneChar(ucLcdPosX,ucLcdPosY,ucKeyState); //按下后显示按键所对应的单个字符
//NextPos();
end01:;
}
unsigned char GetKey(void)
{
unsigned char kc,ucRetKc;
unsigned char m;
m=1;
ucRetKc=XBYTE[0x8000]& 0x0f;
if(ucRetKc!=0x0f)
while(m<=0x10){
if(m==0x01)ucRetKc=XBYTE[0x80f7]&0x0f;
if(m==0x02)ucRetKc=XBYTE[0x80ef]&0x0f;
if(m==0x04)ucRetKc=XBYTE[0x80df]&0x0f;
if(m==0x08)ucRetKc=XBYTE[0x80bf]&0x0f;
if(m==0x10)ucRetKc=XBYTE[0x807f]&0x0f;
if(ucRetKc!=0x0f)
{ucRetKc=ucRetKc<<4;
kc=ucRetKc+m;
goto end00;}
m*=2;}
end00:
switch (kc) //按键所在的具体位置对应于相应的符号
{
case 0xE1: kc='+' ;
break;
case 0xD1: kc='9' ;
break;
case 0xB1: kc='8' ; //--- + 9 8 7 ---
break;
case 0x71: kc='7'; //--- - 6 5 4 ---
break;
case 0xE2: kc='-' ; //--- * 3 2 1 ---
break;
case 0xD2: kc='6' ; //--- / = . 0 ---
break;
case 0xB2: kc='5' ;
break;
case 0x72: kc='4' ;
break;
case 0xE4: kc= '*';
break;
case 0xD4: kc= '3';
break;
case 0xB4: kc='2' ;
break;
case 0x74: kc='1' ;
break;
case 0xE8: kc='/' ;
break;
case 0xD8: kc='=' ;
break;
case 0xB8: kc= '.';
break;
case 0x78: kc='0' ;
break;
case 0xF0: kc='a' ;
break;
case 0xE0: kc='b' ;
break;
case 0xC0: kc='c' ;
break;
case 0x80: kc='d' ;
break;
default: kc='q';
}
return kc;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -