key.c

来自「此代码应用与f2812的通讯程序!!方便用户编程!」· C语言 代码 · 共 91 行

C
91
字号
#include "Device.h"

#define KEYVAL  (*( volatile Uint16 *)0x2c00);
#define  UP_KEY    16
#define  DOWN_KEY  32
#define  LEFT_KEY  4
#define  RIGHT_KEY 64
#define  ESC_KEY   8
#define  ENTER_KEY 128
#define  NOKEY     0
Uint16 xCount=0x0;
int    yCount;
Uint16 LastKeyVal;
void ScanKey()
{
   Uint16 tmp,i;
   LastKeyVal=KEYVAL;
   tmp=KEYVAL; 
   tmp&=0xfc;
   if(tmp!=stKey.keyold)
   {  for(i=4;i<=128;i<<=1)
      {  if(!(tmp&i)){ stKey.keydown =i; break; } 
      }
      stKey.keyold=tmp;
   }
}

void HandleKey()
{   
    
    if(stKey.keydown==NOKEY)return ;
    switch(stKey.keydown)
    {   case ENTER_KEY:  
             if(pMenuItem->pEnterItem != NULL)
             {  pMenuItem=pMenuItem->pEnterItem ;
                DispMenu(pMenuItem->ItemPage); DispData();
             }
             break;
        case ESC_KEY:
             if(pMenuItem->pCancelItem != NULL)
             {  pMenuItem=pMenuItem->pCancelItem ;
                DispMenu(pMenuItem->ItemPage); DispData();
             }
             break;
        case UP_KEY:
             if(pMenuItem->pUpItem != NULL)
             {  pMenuItem=pMenuItem->pUpItem;
                DispMenu(pMenuItem->ItemPage); DispData();
             }
             break;
        case DOWN_KEY:
             if(pMenuItem->pDownItem != NULL)
             {  pMenuItem=pMenuItem->pDownItem ;
                DispMenu(pMenuItem->ItemPage); DispData();
             }
             break;
        case LEFT_KEY:
             if( xCount<=0)
                 xCount=3;
             else
                 xCount--;
              
             if(pMenuItem->pLeftItem != NULL)
             {  pMenuItem=pMenuItem->pLeftItem;
                DispMenu(pMenuItem->ItemPage); DispData();
             }
             else
                xCount=0;
             break;
        case RIGHT_KEY:
             if( xCount>=3)
                 xCount=0;
             else
                 xCount++;
              
             if(pMenuItem->pRightItem != NULL)
             {  pMenuItem=pMenuItem->pRightItem;
                DispMenu(pMenuItem->ItemPage); DispData();
             }
             else
                 xCount=0;
             break;
             
        default: 
             break;             
    }
    
    stKey.keydown = NOKEY ;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?