📄 key_drv.c
字号:
#include "config.h" /* lib configuration header */
#include "key_drv.h" /* Keyboard driver definition */
#include "modules\song\song_drv.h"
#include "lib_mcu\lcd\lcd_drv.h"
#include "lib_mcu\timer\timer_drv.h"
#include "lib_mcu\ide\ide_drv.h"
#include "modules\mass\usb_task.h"
#include "modules\file\fat.h"
#include "lib_mcu\remote\remote_drv.h"
extern bdata bit gl_key_press; /* TRUE when a key is decoded */
extern Byte gl_key; /* value of the key pressed */
Byte key_int;
static void kbd_set_prio (Byte);
static void kbd_install (void);
///////////////////////////////////////////////////////////////////////////////////
void kbd_init (void)
{
#if KBD_EXIT_PD
Kbd_enable_pd_exit(); /* enable keyboard Power-Down exit */
kbd_set_prio(KBD_PRIO);
#endif
Kbd_disable_int();
gl_key_press = FALSE;
// Kbd_enable_int();
kbd_install();
}
///////////////////////////////////////////////////////////////////////////////////
void kbd_install (void)
{
// KBSTA = KBSTA; /* dummy read for clearing pending interrupt */
key_int = 0;
#if KBD_EXIT_PD
// Kbd_enable_int(); /* enable or re-enable the kbd interrupt */
Kbd_unmask_int();
Kbd_low_int();
#endif
}
///////////////////////////////////////////////////////////////////////////////////
#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
///////////////////////////////////////////////////////////////////////////////////
Byte kbd_decode(void)
{
Byte key;
//key_int = KBSTA;
switch (key_int & 0x0f)
{
case KEY_0:
gl_key_press = TRUE;
key = KEY_0;
kbd_install();
return (key);
break;
case KEY_1:
gl_key_press = TRUE;
key = KEY_1;
kbd_install();
return (key);
break;
case KEY_2:
gl_key_press = TRUE;
key = KEY_2;
kbd_install();
return (key);
break;
case KEY_3:
gl_key_press = TRUE;
key = KEY_3;
kbd_install();
return (key);
break;
default :
gl_key_press = FALSE;
key = NO_KEY;
kbd_install();
return(0);
break;
}
}
///////////////////////////////////////////////////////////////////////////////////
#if KBD_EXIT_PD
Interrupt(kbd_int (void), IRQ_KBD)
{
// key_int = KBSTA;
// Kbd_disable_int(); /* disable interrupt */
//T0_start();
}
#endif
///////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -