亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? kbd_drv.c

?? ATMEL全套MP3設計資料,包括電路圖.源程序.下載工具.元器件列表
?? C
字號:
/*C**************************************************************************
* $RCSfile: kbd_drv.c,v $
*----------------------------------------------------------------------------
* Copyright (c) 2002 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      $Name: DEMO_FAT_1_9_9 $      
* REVISION:     $Revision: 1.5 $     
* FILE_CVSID:   $Id: kbd_drv.c,v 1.5 2002/07/16 09:54:55 njourdan Exp $       
*----------------------------------------------------------------------------
* PURPOSE:
* This file contains the keypad driver routines
*
* NOTES:
* Driver Configuration:
*   - KBD_EXIT_PD in config.h define as:
*      TRUE:  to allow exit of power down by keyboard
*      FALSE: to disallow exit of power down by keyboard
*   - LOCK_ROW in config.h
*   - KEY_LOCK in config.h
* Global Variables:
*   - gl_kbd_lock in bdata space
*****************************************************************************/

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

#include "config.h"                         /* lib configuration header */
#include "kbd_drv.h"                        /* Keyboard driver definition */


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


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

extern  bdata   bit     gl_kbd_lock;

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

static  void    kbd_set_prio (Byte);
static  void    kbd_install (void);


/*F**************************************************************************
* NAME: kbd_init
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Keyboard initialisation function
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
* ram/xram:
* cycle:
* stack: 
* code:
*****************************************************************************/
void kbd_init (void)
{
  P_KBD |= MSK_COL;             /* all columns inactive */
  gl_kbd_lock = (!LOCK_ROW);    /* Lock Key decoding */

  #if KBD_EXIT_PD == TRUE
  Kbd_enable_pd_exit();         /* enable keyboard Power-Down exit */
  kbd_set_prio(KBD_PRIO);
  Kbd_enable_int();             /* enable or re-enable the keyboard interrupt */
  #endif

  kbd_install();
}


/*F**************************************************************************
* NAME: kbd_install
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Keyboard IT and columns mask init
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
* ram/xram:
* cycle:
* stack: 
* code:

*****************************************************************************/
void kbd_install (void)
{
  if (gl_kbd_lock)
  {
    KBCON = KB_LCK;
    P_KBD &= MSK_LCK;
  }
  else
  {
    KBCON = KB_STD;
    P_KBD &= MSK_STD;
  }
  KBSTA = KBSTA;                /* dummy read for clearing pending interrupt */

  #if KBD_EXIT_PD
  Kbd_enable_int();             /* enable or re-enable the kbd interrupt */
  #endif
}


/*F**************************************************************************
* NAME: kbd_set_prio
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Set the keyboard interface priority interrupt
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
* ram/xram:
* cycle:
* stack: 
* code:
*****************************************************************************/
#if KBD_EXIT_PD
void kbd_set_prio (Byte priority)
{
  if ((priority == 1) || (priority == 3))     /* set LSB priority bit */
  {
    IPL1 |=  MSK_EKB;
  }
  if ((priority == 2) || (priority == 3))     /* set MSB priority bit */
  {
    IPH1 |= MSK_EKB;
  }
}
#endif


/*F**************************************************************************
* NAME: kbd_decode
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   Decoded key pressed
*----------------------------------------------------------------------------
* PURPOSE: 
*   Decode the key that generated an IT
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
* ram/xram:
* cycle:
* stack: 
* code:
*****************************************************************************/
Byte kbd_decode (void)
{
Byte key;

  if (gl_kbd_lock)
  {
    gl_kbd_lock = FALSE;
    kbd_install();
    return (KEY_LOCK);
  }
  else
  {
    P_KBD |= MSK_COL;           /* all columns inactive */
 
    /* COL3 = 0;                /* COL3 test (always 0) */
    key = (P_KBD & MSK_PKB);
    if (key != NK_COL3)
    {
      if (key == KEY_LOCK)
      {
        gl_kbd_lock = TRUE;     /* signal key locked */
      }
      kbd_install();
      return (key);
    }

    COL2 = 0;                   /* COL2 test */
    key = (P_KBD & MSK_PKB);
    if (key != NK_COL2)
    {
      kbd_install();
      return (key);
    }

    COL1 = 0;                   /* COL1 test */
    key = (P_KBD & MSK_PKB);
    if (key != NK_COL1)
    {
      kbd_install();
      return (key);
    }
  
    COL0 = 0;                   /* COL0 test */
    key = (P_KBD & MSK_PKB);
    if (key != NK_COL0)
    {
      kbd_install();
      return (key);
    }
  }
}


/*F**************************************************************************
* NAME: kbd_int
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE: 
*   Keyboard interrupt function
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   This isr is called when a key is pressed to get out power-down Interrupt
*   is re-enable in the install routine
*----------------------------------------------------------------------------
* REQUIREMENTS:
* ram/xram:
* cycle:
* stack: 
* code:
*****************************************************************************/
#if KBD_EXIT_PD
Interrupt(kbd_int (void), IRQ_KBD)
{
  Kbd_disable_int();              /* disable interrupt */
}
#endif



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
首页综合国产亚洲丝袜| 久久久蜜桃精品| 亚洲一二三专区| 欧美日韩国产一区| 亚洲成人免费电影| 欧美一卡二卡在线观看| 激情综合色综合久久综合| 精品久久久久久久久久久院品网| 国模套图日韩精品一区二区| 欧美激情一区二区三区在线| 99re成人精品视频| 亚洲国产精品久久久久秋霞影院| 欧美日韩国产精选| 久久国内精品自在自线400部| 欧美成人三级在线| 成人小视频在线| 亚洲精品成a人| 91麻豆精品国产91久久久久| 国产在线播精品第三| 国产精品国产三级国产三级人妇| 日本乱人伦aⅴ精品| 青青草国产成人99久久| 国产日本一区二区| 欧美性一区二区| 精品在线一区二区三区| 亚洲视频在线观看一区| 日韩视频免费观看高清在线视频| 国产福利一区在线| 亚洲一区在线视频观看| 日韩你懂的在线播放| 99麻豆久久久国产精品免费优播| 五月天精品一区二区三区| 国产视频一区二区在线观看| 欧美怡红院视频| 国产曰批免费观看久久久| 一区二区三区国产豹纹内裤在线| 欧美v日韩v国产v| 色爱区综合激月婷婷| 久草热8精品视频在线观看| 亚洲欧美激情在线| 久久婷婷色综合| 欧美日韩精品专区| 成人av资源网站| 捆绑紧缚一区二区三区视频| 亚洲欧美日韩系列| 久久精品视频一区二区三区| 欧洲精品在线观看| 成人国产在线观看| 国产在线精品免费| 日韩中文字幕区一区有砖一区 | 国产在线精品一区二区不卡了| 国产精品国产三级国产aⅴ原创 | 久久成人麻豆午夜电影| 亚洲国产欧美在线| 综合精品久久久| 国产情人综合久久777777| 日韩天堂在线观看| 制服丝袜国产精品| 欧美性欧美巨大黑白大战| av资源站一区| 国产成人精品一区二| 极品销魂美女一区二区三区| 欧美aaa在线| 午夜电影网亚洲视频| 一区二区视频在线看| 偷拍日韩校园综合在线| 一级做a爱片久久| 亚洲欧洲www| 国产精品成人网| 中文字幕免费不卡在线| 国产欧美日韩视频在线观看| 久久亚洲精品国产精品紫薇| 精品精品欲导航| 欧美不卡视频一区| 精品乱人伦小说| 日韩精品中文字幕在线不卡尤物 | 3d动漫精品啪啪一区二区竹菊| 欧美在线观看视频在线| 欧美日韩一区二区三区不卡| 在线精品视频免费播放| 欧美影视一区在线| 在线成人免费观看| 日韩欧美另类在线| 久久这里只有精品首页| 久久精品夜色噜噜亚洲aⅴ| 国产亚洲综合在线| 国产精品欧美久久久久无广告| 久久精品一区二区三区不卡牛牛| 国产三级欧美三级日产三级99| 久久精品亚洲国产奇米99| 国产欧美一区二区在线| 中文字幕一区在线观看| 一区二区高清视频在线观看| 亚洲国产日韩a在线播放性色| 五月激情六月综合| 激情av综合网| 国产成人精品午夜视频免费| 91在线观看下载| 欧美性大战久久久久久久蜜臀| 欧美裸体一区二区三区| 亚洲精品在线网站| 国产精品久久福利| 亚洲国产精品一区二区久久恐怖片| 天天操天天色综合| 国产精品一区免费视频| 色婷婷综合中文久久一本| 欧美色视频一区| www国产成人| 亚洲免费大片在线观看| 视频一区在线播放| 国产精品亚洲一区二区三区在线 | 国产综合久久久久影院| 99天天综合性| 欧美日韩国产a| 久久九九全国免费| 亚洲成av人在线观看| 国产专区综合网| 在线观看免费视频综合| 久久网这里都是精品| 亚洲激情图片一区| 国产在线精品一区二区夜色| 色噜噜久久综合| 2023国产精华国产精品| 亚洲激情中文1区| 国产一区二区在线免费观看| 91久久精品日日躁夜夜躁欧美| 日韩西西人体444www| 中文字幕亚洲综合久久菠萝蜜| 日韩黄色一级片| 91老师片黄在线观看| 日韩视频永久免费| 亚洲一区二区三区四区在线观看| 国产真实乱子伦精品视频| 欧美熟乱第一页| 中文字幕在线不卡| 国产精品自产自拍| 欧美精品xxxxbbbb| 亚洲欧美日韩国产综合在线| 国产一区二区三区免费在线观看| 欧美视频一区二| 亚洲欧洲精品一区二区三区| 极品尤物av久久免费看| 欧美日韩精品免费观看视频| 国产精品第四页| 国产福利精品导航| 日韩欧美国产综合一区| 亚洲一区av在线| 99国产精品国产精品久久| 国产亚洲一区二区三区在线观看 | 日韩精品免费视频人成| 91黄色激情网站| 自拍偷拍欧美精品| 成人性生交大合| 国产丝袜欧美中文另类| 国产毛片精品视频| 欧美va在线播放| 美女脱光内衣内裤视频久久网站 | 亚洲免费高清视频在线| 成人黄色在线网站| 国产亚洲精品中文字幕| 精品一区二区免费| 精品日本一线二线三线不卡| 男女性色大片免费观看一区二区| 欧洲精品一区二区三区在线观看| 亚洲精品综合在线| 在线国产亚洲欧美| 樱桃视频在线观看一区| 91麻豆产精品久久久久久| 日韩伦理电影网| 一本色道**综合亚洲精品蜜桃冫| 亚洲色图第一区| 91久久精品一区二区二区| 一区二区三区四区激情| 欧美在线三级电影| 成人小视频在线观看| 久久综合九色综合97婷婷| 国产精品资源在线看| 国产婷婷色一区二区三区| 波多野结衣中文字幕一区 | 日韩精品中文字幕一区二区三区| 免费成人在线视频观看| 日韩精品一区二区三区四区视频| 久久精品国产一区二区三| 精品国产a毛片| 国产91露脸合集magnet| 中文字幕一区二区不卡| 欧美综合色免费| 日本不卡一二三| 久久毛片高清国产| 99精品国产99久久久久久白柏 | 亚洲免费看黄网站| 欧美日韩免费一区二区三区视频| 爽爽淫人综合网网站| 久久久亚洲精品石原莉奈| 成人av片在线观看| 亚洲va欧美va国产va天堂影院| 欧美第一区第二区| 成人免费高清视频| 亚洲成人一二三| 久久综合九色综合欧美亚洲|