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

📄 key.lst

📁 Bitek 公司 bit1611b模拟屏驱动芯片外接MCU驱动DEMO源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
                  KEY_iMENU       = 1;
                  KEY_iSELECT     = 1;
                  KEY_iUP         = 1;
                  KEY_iDOWN       = 1;
              
                  #else
                      #error KEY.C - Invalid PLATFORM_CFG !
              
                  #endif /* PROJECT */
 234   1      
 235   1      
 236   1      
 237   1          #if (KEY_AUTO_REPEAT)
 238   1          bTimerKeyAuto       = 0;    /* For key auto repeat feature */
 239   1          #endif // KEY_AUTO_REPEAT
 240   1      
C51 COMPILER V7.50   KEY                                                                   02/05/2007 16:33:25 PAGE 5   

 241   1          #if (KEY_STILL_DETECTION)
 242   1          // Pressed key duration !
 243   1          bKEY_STILL_INTERVAL = KEY_STILL_INTERVAL;
 244   1          bTimerKeyPressed    = bKEY_STILL_INTERVAL;
 245   1          #endif
 246   1      
 247   1          KEY_BufferFlush();
 248   1      
 249   1          fKeyReleased    = TRUE;
 250   1      
 251   1          bKeyScanState   = KEY_STATE_UP;
 252   1      
 253   1          #if (KEY_VR_AIN21)
                  bKEY_VR_ADJUSTMENT  = KEY_VR_DEFAULT;
                  #endif
 256   1      
 257   1      } /* KEY_Init */
 258          
 259          
 260          /* -------------------------------------------------------------------
 261              Name: KEY_Pressed - To check whether any keys are pressed.
 262              Purpose: .
 263              Passed: None.
 264              Returns:
 265                  FALSE if no key pressed.
 266               Notes:
 267             ------------------------------------------------------------------- */
 268          BOOL KEY_Pressed (void)
 269          {
 270   1          return( (KEY_IOPORT & KEY_MASK) != KEY_MASK );
 271   1      } /* KEY_Pressed */
 272          
 273          
 274          /* -------------------------------------------------------------------
 275              Name: KEY_Scan -
 276              Purpose: To scan the keypad periodically.
 277              Passed: None.
 278              Returns: None.
 279              Notes:
 280                  1) THIS ONE IS USUALLY CALLED FROM TIMER ISR ONLY
 281                  2) Local variables are allowed if it is NOT called by other ISRs
 282                     or code !
 283                  3) The duration is at least 30ms between each call of this scan
 284                     function for avoiding de-bounce failure.
 285          
 286             ------------------------------------------------------------------- */
 287          void KEY_Scan (void)
 288          {
 289   1          #if (KEY_AUTO_REPEAT)
 290   1          if (bTimerKeyAuto)
 291   1              bTimerKeyAuto--;
 292   1          #endif // KEY_AUTO_REPEAT
 293   1      
 294   1          if (bTimerKeyPressed)
 295   1              bTimerKeyPressed--;
 296   1      
 297   1          #if (KEY_STILL_DETECTION)
 298   1          if (bTimerKeyPressed == 1)
 299   1          {
 300   2              KEY_BufferFlush();
 301   2              KEY_BufferIn(bLastKey | KEY_MASK_STILL);
 302   2      
C51 COMPILER V7.50   KEY                                                                   02/05/2007 16:33:25 PAGE 6   

 303   2              #if (NO_RELEASE_AFTER_STILL)
 304   2              fKeyNO_STILL = FALSE;
 305   2              #endif
 306   2          }
 307   1          #endif // KEY_STILL_DETECTION
 308   1      
 309   1      
 310   1          switch (bKeyScanState)
 311   1          {
 312   2              case KEY_STATE_UP:
 313   2                  if (KEY_Pressed())
 314   2                  {
 315   3                      bKeyScanState = KEY_STATE_DEBOUNCE;
 316   3      
 317   3                      #if (NO_RELEASE_AFTER_STILL)
 318   3                      fKeyNO_STILL = TRUE;
 319   3                      #endif
 320   3                  }
 321   2                  #if (KEY_STILL_DETECTION)
 322   2                  else
 323   2                  {
 324   3                      bTimerKeyPressed = 0;
 325   3                      fKeyReleased = TRUE;
 326   3                  }
 327   2                  #endif // KEY_STILL_DETECTION
 328   2                  break;
 329   2      
 330   2      
 331   2              case KEY_STATE_DEBOUNCE:
 332   2                  if (KEY_Pressed())
 333   2                  {
 334   3                      KEY_BufferIn(KEY_Decode());
 335   3      
 336   3                      #if (KEY_AUTO_REPEAT)
 337   3                      bTimerKeyAuto = KEY_REPEAT_START_DELAY;
 338   3                      #endif // KEY_AUTO_REPEAT
 339   3      
 340   3                      bLastKey = KEY_Decode();
 341   3      
 342   3                      #if (KEY_STILL_DETECTION)
 343   3                      if (bLastKey == KEY_POWER)
 344   3                          bTimerKeyPressed = bKEY_STILL_INTERVAL;
 345   3                      #endif // KEY_STILL_DETECTION
 346   3      
 347   3                      bKeyScanState = KEY_STATE_REPEAT_START_DELAY;
 348   3                  }
 349   2                  else
 350   2                  {
 351   3                      bTimerKeyPressed = 0;
 352   3                      fKeyReleased = TRUE;
 353   3      
 354   3                      bKeyScanState = KEY_STATE_UP;
 355   3                  }
 356   2                  break;
 357   2      
 358   2      
 359   2              case KEY_STATE_REPEAT_START_DELAY:
 360   2                  if (KEY_Pressed())
 361   2                  {
 362   3                      #if (KEY_AUTO_REPEAT)
 363   3                      if (bTimerKeyAuto == 0)
 364   3                      {
C51 COMPILER V7.50   KEY                                                                   02/05/2007 16:33:25 PAGE 7   

 365   4                          KEY_BufferIn(KEY_Decode());
 366   4      
 367   4                          bTimerKeyAuto = KEY_REPEAT_INTERVAL;
 368   4      
 369   4                          bKeyScanState = KEY_STATE_REPEAT_DELAY;
 370   4                      } /* if */
 371   3                      #endif // KEY_AUTO_REPEAT
 372   3                  }
 373   2                  else
 374   2                  {
 375   3                      #if (NO_RELEASE_AFTER_STILL)
 376   3                      if (fKeyNO_STILL)
 377   3                      #endif
 378   3                      {
 379   4                          KEY_BufferFlush();
 380   4                          KEY_BufferIn(bLastKey | KEY_MASK_RELEASE);
 381   4                      }
 382   3      
 383   3                      bTimerKeyPressed = 0;
 384   3                      fKeyReleased = TRUE;
 385   3      
 386   3                      bKeyScanState = KEY_STATE_DEBOUNCE;
 387   3                  } /* if */
 388   2                  break;
 389   2      
 390   2      
 391   2              #if (KEY_AUTO_REPEAT)
 392   2              case KEY_STATE_REPEAT_DELAY:
 393   2                  if (KEY_Pressed())
 394   2                  {
 395   3                      if (bTimerKeyAuto == 0)
 396   3                      {
 397   4                          KEY_BufferIn(KEY_Decode());
 398   4      
 399   4                          bTimerKeyAuto = KEY_REPEAT_INTERVAL;
 400   4                      } /* if */
 401   3                  }
 402   2                  else
 403   2                  {
 404   3                      #if (NO_RELEASE_AFTER_STILL)
 405   3                      if (fKeyNO_STILL)
 406   3                      #endif
 407   3                      {
 408   4                          KEY_BufferFlush();
 409   4                          KEY_BufferIn(bLastKey | KEY_MASK_RELEASE);
 410   4                      }
 411   3      
 412   3                      bTimerKeyPressed = 0;
 413   3                      fKeyReleased = TRUE;
 414   3      
 415   3                      bKeyScanState = KEY_STATE_DEBOUNCE;
 416   3                  }
 417   2                  break;
 418   2              #endif // KEY_AUTO_REPEAT
 419   2      
 420   2              default :
 421   2                  break;
 422   2          } /* switch */
 423   1      } /* KEY_Scan */
 424          
 425          
 426          /* -------------------------------------------------------------------
C51 COMPILER V7.50   KEY                                                                   02/05/2007 16:33:25 PAGE 8   

 427              Name:  -
 428              Purpose: .
 429              Passed: None.
 430              Returns: None.
 431              Notes:
 432             ------------------------------------------------------------------- */
 433          
 434          /* **********************************************************************
 435          
 436              Description:
 437          
 438          
 439             ********************************************************************** */
 440          
 441          /* %% End Of File %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    303    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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