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

📄 keypad.h

📁 GM5621原代码
💻 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 + -