⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyboard.c

📁 键盘扫描子程序.lcd1602液晶显示子程序.ad子程序
💻 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 + -