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

📄 键盘扫描程序.txt

📁 收集了一些按键扫描程序,希望对大家在按键学习上有所帮助
💻 TXT
字号:
#define  KEYPAD_PORT  P2
sbit   C1=KEYPAD_PORT^0;
sbit   C2=KEYPAD_PORT^1;
sbit   C3=KEYPAD_PORT^2;

sbit   R1=KEYPAD_PORT^6;
sbit   R2=KEYPAD_PORT^5;
sbit   R3=KEYPAD_PORT^4;
sbit   R4=KEYPAD_PORT^3;

bit    KEYPAD_Scan(char* const pkey, char*const pFuncKey)
   { 
     static data  char Old_Key;
     char   Key=KEYPAD_NO_NEW_DATA;
     char   Fn_key=(char) 0x00;
     C1=0;  //扫描列1
        if (R1==0)  Key='1';
        if (R2==0)  Key='4';
        if (R3==0)  Key='7';
        if (R4==0)  Fn_Key='*';
     C1=1;
     C2=0;  //扫描列2
        if (R1==0)  Key='2';
        if (R2==0)  Key='5';
        if (R3==0)  Key='8';
        if (R4==0)  Key='0';
     C2=1;
     C3=0;  //扫描列3
        if (R1==0)  Key='3';
        if (R2==0)  Key='6';
        if (R3==0)  Key='9';
        if (R4==0)  Fn_Key='#';  
     C3=1;
     if (Key==KEYPAD_NO_NEW_DATA)
        { //没有按键被按下(或只是功能键)
          Old_Key=KEYPAD_NO_NEW_DATA;
          Last_voilid_key_G=KEYPAD_NO_NEW_DATA;
          return  0;   //no new data
        }
     //一个按键被按下.通过检查两次来消抖
     if  (Key==Old_Key)
        {  //检测到一个有效的(经过消抖)键按下
           //必须是一个新的按键才有效,不允许"自动重复"
           if (Key !=Last_valid_key_G)
              {  //新的按键!
                 *pKey=Key;
                 Last_valid_key_G=Key;
                 //功能键是否也被按下?
                 if (Fn_key)
                   {  //功能键与另一个按键被同时按下
                      *pFunckey=Fn_key;
                   }
                  else 
                      { 
                        *pFunckey=(char)  0x00;
                      }
                 return  1;
               }
             }   //没有新的数据
       Old_Key=Key;
       return 0;
   }


     

⌨️ 快捷键说明

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