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

📄 kbd_task.c

📁 开发工具:keil7 主要IC:at89c51sdnd1(atmel) 说明:mp3播放器详细设计方案
💻 C
字号:
/*C**************************************************************************
* $RCSfile: kbd_task.c,v $
*----------------------------------------------------------------------------
* Copyright (c) 2002 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      $Name: DEMO_FAT_1_9_9 $      
* REVISION:     $Revision: 1.2 $     
* FILE_CVSID:   $Id: kbd_task.c,v 1.2 2002/06/07 15:44:39 ffosse Exp $       
*----------------------------------------------------------------------------
* PURPOSE:
* This file contains the keyboard task and attached routines
*
* NOTES:
* Global Variables:
*   - gl_key_press: bit in bdata space
*   - gl_key:       byte in idata space
*   - gl_kbd_tick:  byte in data space
*****************************************************************************/

/*_____ I N C L U D E S ____________________________________________________*/

#include "config.h"                         /* system configuration */
#include "..\..\..\..\lib_demob\board.h"    /* board definition */
#include "..\..\..\..\lib\kbd\kbd_drv.h"    /* Keyboard driver definition */
#include "kbd_task.h"                       /* Keyboard task definition */


/*_____ M A C R O S ________________________________________________________*/


/*_____ D E F I N I T I O N ________________________________________________*/

extern  bdata   bit     gl_key_press;   /* set to TRUE if a key is decoded */
extern  idata   Byte    gl_key;         /* value of the key pressed */
extern  data    Byte    gl_kbd_tick;    /* keypad tick counter */

static  Byte    kbd_state;              /* keyboard task state */


/*_____ D E C L A R A T I O N ______________________________________________*/


/*F**************************************************************************
* NAME: kbd_task_init
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Keyboard task initialisation
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void kbd_task_init (void)
{
  kbd_state = KBD_IDLE;
  gl_key_press = FALSE;         /* no key pressed */
  gl_key = NO_KEY;
  kbd_init();                   /* keyboard initialization */
}


/*F**************************************************************************
* NAME: kbd_task
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Keyboard task
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void kbd_task (void)
{
  switch (kbd_state)
  {
    case KBD_IDLE:
      if (Kbd_key_pressed())
      {
        gl_kbd_tick = KBD_DEBOUNCE_INIT;  /* init debounce timer */
        kbd_state = KBD_DEBOUNCE;
      }
      break;

    case KBD_DEBOUNCE:
      if (gl_kbd_tick > KBD_DEBOUNCE_TEMPO)
      {
        kbd_state = KBD_DECODE;
      }
      break;

    case KBD_DECODE:
      gl_key = kbd_decode();              /* read key pressed */
      if (gl_key != NO_KEY)               /* if real key pressed */
        gl_key_press = TRUE;              /* signal to other tasks */
      kbd_state = KBD_IDLE;
      break;

    default:
      break;
  }
}

/*F**************************************************************************
* NAME: kbd_set_stop
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Simulate STOP key press
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   Called from mode task before switching to download state
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void kbd_set_stop (void)
{
  gl_key = KEY_STOP;
  gl_key_press = TRUE;
  kbd_state = KBD_IDLE;
}



⌨️ 快捷键说明

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