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

📄 keyboard.c

📁 Jan 04, 2007 1. Add SPI support, see spi.h and spi.c 2. Add driver.h 3. Modified keyboard modu
💻 C
字号:
/** * Copyright (c) 2006-2008 iWESUN (ShenZhen) Inf. * All rights reserved.  *  * Redistribution and use in source and binary forms, with or without modification,  * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, *    this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, *    this list of conditions and the following disclaimer in the documentation *    and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products *    derived from this software without specific prior written permission.  * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY  * OF SUCH DAMAGE. * * This file is part of the AvrcX MTOS *  * Author: Winter Hu  <winter.hu@gmail.com> * Create: Dec 26, 2006 */#include "keyboard.h"#include "avrcx.h"#if __KEYBOARD__ == 1KEYBOARD(keyboard);#define KBD_STATUS_NOKEY 0#define KBD_STATUS_DOWN  1#define KBD_STATUS_DOWN1 2#define KBD_STATUS_UP    3INTERFACE void init_keyboard(Driver* kbd, Driver* irc){  #if KEYBOARD_KBD == 1  keyboard.kbddrv = kbd;  keyboard.kbddrv->_drv_init_hardware();  #endif    #if KEYBOARD_IRC == 1  keyboard.ircdrv = irc;  keyboard.ircdrv->_drv_init_hardware();  #endif}/** * Scan keyboard, this method should be invoked every 30ms * * @return unsigned char, The key value, if 0xFF, no key down */INTERFACE unsigned char kbd_getchar(void){  unsigned char key;  #if KEYBOARD_KBD == 1  key = _kbd_getchar(keyboard)();  switch(keyboard.status){  case KBD_STATUS_NOKEY:    if (key != keyboard.mask){      keyboard.mask = key;      keyboard.status = KBD_STATUS_DOWN;      key = 0xFF;    }    break;  case KBD_STATUS_DOWN:    if (key != keyboard.mask){      keyboard.mask = 0xFF;      keyboard.status = KBD_STATUS_NOKEY;      key = 0xFF;    }else{      keyboard.status = KBD_STATUS_DOWN1;    }    break;  case KBD_STATUS_DOWN1:    if (key != keyboard.mask){      keyboard.status = KBD_STATUS_UP;      key = keyboard.mask;    }    break;  case KBD_STATUS_UP:    if (key != keyboard.mask){      keyboard.status = KBD_STATUS_NOKEY;      keyboard.mask = 0xFF;      key = 0xFF;    }else{      keyboard.status = KBD_STATUS_DOWN1;    }    break;  }  #endif  #if KEYBOARD_IRC == 1  key = (key == 0xFF) ? _irc_getchar(keyboard)() : key;  #endif  return key;}#endif /* __KEYBOARD__ == 1 */

⌨️ 快捷键说明

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