📄 kbi.c
字号:
#include "freescale_radio_hardware.h"
#include "kbi.h"
#include "eventDefs.h"
extern UINT16 gu16Events;
extern UINT16 gu16msTimer;
extern UINT16 gu16timerEvent[2];
UINT8 u8keys;
#if defined (HCS08Q)
#pragma CODE_SEG __NEAR_SEG NON_BANKED
__interrupt void KBIisr (void) {
u8keys = ~PTDD;
u8keys = u8keys & 0x0F;
switch (u8keys)
{
case KBI_SW1:
gu16timerEvent[1] = gu16msTimer + KBI_DEBOUNCE;
gu16Events |= KBI2_EVENT;
break;
case KBI_SW2:
gu16timerEvent[1] = gu16msTimer + KBI_DEBOUNCE;
gu16Events |= KBI3_EVENT;
break;
case KBI_SW3:
gu16timerEvent[1] = gu16msTimer + KBI_DEBOUNCE;
gu16Events |= KBI4_EVENT;
break;
case KBI_SW4:
gu16timerEvent[1] = gu16msTimer + KBI_DEBOUNCE;
gu16Events |= KBI5_EVENT;
break;
default:
gu16timerEvent[1] = gu16msTimer + KBI_DEBOUNCE;
gu16Events |= KBI2_EVENT;
break;
}
KBI2SC_KBACK = 1;
}
#pragma CODE_SEG DEFAULT
#else
interrupt void KBIisr (void) {
u8keys = ~PTAD;
/* Still in debounce time - just return */
if (gu16timerEvent[1] != 0) {
KBI1SC_KBACK = 1;
return;
}
if ((u8keys & KBI_SW1) == KBI_SW1) {
gu16timerEvent[1] = gu16msTimer + KBI_DEBOUNCE;
gu16Events |= KBI2_EVENT;
}
if ((u8keys & KBI_SW2) == KBI_SW2) {
gu16timerEvent[1] = gu16msTimer + KBI_DEBOUNCE;
gu16Events |= KBI3_EVENT;
}
if ((u8keys & KBI_SW3) == KBI_SW3) {
gu16timerEvent[1] = gu16msTimer + KBI_DEBOUNCE;
gu16Events |= KBI4_EVENT;
}
if ((u8keys & KBI_SW4) == KBI_SW4) {
gu16timerEvent[1] = gu16msTimer + KBI_DEBOUNCE;
gu16Events |= KBI5_EVENT;
}
KBI1SC_KBACK = 1;
}
#endif
void KBIInit(void) {
PB0IE = 1; /* Enable KBI PB0 */
PB1IE = 1;
PB2IE = 1;
PB3IE = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -