📄 keypad.h
字号:
/*
$Workfile: keypad.h $
$Revision: 1.24 $
$Date: Jan 03 2006 06:40:12 $
*/
#ifndef __KEYPAD_H__
#define __KEYPAD_H__
//******************************************************************************
//
// Copyright (C) 2002. GENESIS MICROCHIP INC. CONFIDENTIAL
// All rights reserved. No part of this program may be reproduced.
//
// Genesis Microchip Corp., 2150 Gold Street
// Alviso, CA 95002 USA
// Genesis Microchip Inc., 165 Commerce Valley Dr. West
// Thornhill, Ontario, Canada, L3T 7V8
//
//==============================================================================
//
// MODULE: keypad.h
//
// USAGE:
//
//******************************************************************************
#ifdef PHOENIX_U
#include "Osd\GenFiles57xx\osd_ctype.h"
#elif defined(TUCSON) // For 26xx
#include "Osd\GenFiles26xx\osd_ctype.h"
#elif defined(PHOENIX) // For 56xx
#include "Osd\GenFiles56xx\osd_ctype.h"
#else // For 52xx
#include "Osd\GenFiles\osd_ctype.h"
#endif
#if (WB_MAJOR >= 4)
#define USE_KEYPAD_DRV_MODEL 1
#endif
#if USE_KEYPAD_DRV_MODEL
// sweng1230: Add for IR remote control
#define IR_RC5 1
#define IR_RECS80 2
#define IR_NEC 3
#define IR_RECS80_EXT 4
#define IR_RECS80_EXT_INV 5
#define IR_TYPE IR_RC5
BYTE far GetIRValue(BYTE ROM* Bp_Data);
BYTE far InitIRDriver(BYTE ROM* Bp_Data);
void far KeypadInit(void);
//#define WBK_EXTRACT_CODE_BYTE(a) a
//typedef gmt_KEY_INDEX (* KeypadFunc)(BYTE ROM*);
#if !defined(PHOENIX) && !defined(TUCSON) && !defined(PHOENIX_U)
#undef PORT_GPIO_1_USED
#undef GPIOKEYPAD_ALLOWED
#endif
BYTE far GetGPIOValue(BYTE ROM* Bp_Data);
BYTE far GetADCValue(BYTE ROM* Bp_Data);
BYTE far InitGPIODriver(BYTE ROM* Bp_Data);
BYTE far InitADCDriver(BYTE ROM* Bp_Data);
BYTE GetLBAdcValue(BYTE B_Channel);
void far KeypadInit(void);
#define DIV_BY_1 0x00
#define DIV_BY_2 0x20
#define DIV_BY_4 0x40
#define LBADC_IN1 0x00
#define LBADC_IN2 0x04
#define LBADC_IN3 0x08
#define ScanAdcKey GetLBAdcValue
#define StopGetKeyISR()
#define StartGetKeyISR()
#else
//******************************************************************************
// G L O B A L D E F I N I T I O N S
//******************************************************************************
// Defines for keypad handler ISR.
#define GETKEY_TIME_MS 20 // keypad poll interval in ms.
#define GET_KEY_TIMER_ISR TIMER0_VECTOR // Set to use desired timer.
// NOTE: Curretnly Timer0 is the
// only free timer. Timer1 is used
// for the IR remote, if no IR is
// needed, then Timer1 can be used.
// if Timer2 is used, then it is
// hooked on to the system timer.
// Using Timer2 can cause serial ISP
// to malfunction because ISP relies
// on Timer2 ISR being in IROM.
#define NUMBER_OF_INPUT_SOURCE 7
#define NUMBER_OF_KEYS 6
#define SINGLE 0xFF
// LBADC control bits
#define DIV_BY_1 0x00
#define DIV_BY_2 0x20
#define DIV_BY_4 0x40
#define LBADC_IN1 0x00
#define LBADC_IN2 0x04
#define LBADC_IN3 0x08
//
// LBADC key port number
//
enum
{
ADC_KEY1,
ADC_KEY2,
ADC_KEY3,
MAX_ADC_KEY
};
enum
{
IR_KEY=1,
GPIO_KEY,
ADC_KEY
};
#define ADC_KBD_NOISE_FILTER 0x10 // Up to 0.2 volts is keypad noise.
#define KeyDataPresent(B_Key) ((B_Key) > ADC_KBD_NOISE_FILTER)
#define IdentityFilter(AdcInput,X) (X) // (no special filtering)
#define KeyFilter IdentityFilter
#define ADC_DELTA 8
//
// IR remote control settings
//
#define USE_SONY_RC 0
#define USE_HT6222_RC 1
#define USE_RC5 2
#define IR_DRIVER USE_RC5
#if IR_DRIVER == USE_HT6222_RC
#define IR_DATA_LENGTH 32
#define IR_DEVICE_LENGTH 0
#define IR_AUTOREPEAT_RESET 1100
#define IR_DEVICE_CODE 0x00
#define IR_LEADER 130
#define IR_REPEAT 110
#define IR_LOGIC0_MIN 9
#define IR_LOGIC0_MAX 13
#define IR_LOGIC1_MIN 20
#define IR_LOGIC1_MAX 24
#elif IR_DRIVER == USE_SONY_RC
#define IR_DATA_LENGTH 14
#define IR_DEVICE_LENGTH 0
#define IR_AUTOREPEAT_RESET 600
#define IR_DEVICE_CODE 0x2b
#define IR_LEADER 48
#define IR_REPEAT 0
#define IR_LOGIC0_MIN 19
#define IR_LOGIC0_MAX 25
#define IR_LOGIC1_MIN 36
#define IR_LOGIC1_MAX 44
#elif IR_DRIVER == USE_RC5
#define IR_DATA_LENGTH 26
#define IR_DEVICE_CODE 0
#define IR_DEVICE_MASK 0x7c0
#define IR_AUTOREPEAT_RESET 128
#define INPUT_BIT_MASK 0x80
#define ZERRO_KEY_CODE 0x80
#endif
//******************************************************************************
// T Y P E D E F I N I T I O N S
//******************************************************************************
//
// Key mappping table for key scanning.
//
typedef struct KeyMapTableStruct
{
WORD W_GpioPortAddr;
WORD W_GpioPinPos;
} ST_KEY_MAP_TABLE;
typedef struct ST_ADCStruct
{
BYTE Code;
gmt_KEY_INDEX KeyIndex;
} ST_ADC;
typedef struct ST_IRStruct
{
BYTE Code;
gmt_KEY_INDEX KeyIndex;
} ST_IR;
typedef struct ST_PORTS_MIXED_TRANSLATIONStruct
{
BYTE Codes[NUMBER_OF_INPUT_SOURCE];
gmt_KEY_INDEX KeyIndex;
} ST_PORTS_MIXED_TRANSLATION;
//******************************************************************************
// E X T E R N A L V A R I A B L E S
//******************************************************************************
//******************************************************************************
// M A C R O D E F I N I T I O N
//******************************************************************************
//******************************************************************************
// G L O B A L M A C R O D E F I N I T I O N S
//******************************************************************************
//******************************************************************************
// G L O B A L F U N C T I O N P R O T O T Y P E S
//******************************************************************************
void InitGpioKeyMap(void);
void far IRInit(DWORD D_CpuClock);
BYTE far ScanAdcKey(BYTE B_Channel);
#if (USE_GETKEY_TIMER_ISR == 0)
#define StopGetKeyISR()
#define StartGetKeyISR()
#else
void StartGetKeyISR(void);
void StopGetKeyISR(void);
#endif
gmt_KEY_INDEX far GetKey(void);
#endif
#endif // __KEYPAD_H__
//********************************* END **************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -