📄 keypad.c
字号:
#include "types.h"
#include "board.h"
#include "keypaddef.h"
#include "ms_reg.h"
#include "global.h"
#include "debug.h"
#include "misc.h"
#include "ms_rwreg.h"
#include "mcu.h"
#include "msosd.h"
#include "menudef.h"
//================================================================
BYTE KeypadButton=0;
BYTE Key_GetKeypadStatus_sub(void)
{
#if Quanta
BYTE keypad=0xFF;
BYTE adcValue;
MADC=0x81;
ForceDelay1ms(1);
adcValue=MADC&0x3F;
if (adcValue<6) // 0
keypad&=~KEY_MINUS;
else if (adcValue<18) // 12
keypad&=~KEY_PLUS;
else if (adcValue<30) // 24
keypad&=~KEY_PLUS;
else if (adcValue<40) // 35
keypad&=~KEY_MINUS;
else if (adcValue<51) // 46
keypad&=~KEY_SELECT;
else if (adcValue<61) // 55
keypad&=~KEY_MENU;
if (!(P6_1&BIT0))
keypad&=~KEY_POWER;
return keypad;//P6_0;
#elif QuantaGateway // Jason
BYTE keypad = 0xFF;
if(!P1_3) // PWR
keypad &= ~KEY_POWER;
if(!P1_4) // Menu
keypad &= ~KEY_MENU;
if(!P1_5) // Select
keypad &= ~KEY_SELECT;
if(!P1_6) // Up
keypad &= ~KEY_UP;
if(!P1_7) // Down
keypad &= ~KEY_DOWN;
if( !( P6_3 & BIT0 )) // Left
keypad &= ~KEY_PLUS;
if( !( P6_2 & BIT0 )) // Right
keypad &= ~KEY_MINUS;
//printData( "Key Pad = ", ( WORD ) keypad );
return keypad;
#elif Lego2 // Jason
//jon information
BYTE keypad = 0xFF;
if(!P1_3) // PWR
keypad &= ~KEY_MENU;//dragonKEY_POWER;
if(!P1_4) // Menu
keypad &= ~KEY_SELECT;//dragonKEY_MENU
if(!P1_5) // Select
keypad &= ~KEY_POWER;//dragonKEY_SELECT;for the right the order key_define for L7B 040419
if(!P1_6) // Up
keypad &= ~KEY_UP;
if(!P1_7) // Down
keypad &= ~KEY_DOWN;
if( !( P6_3 & BIT0 )) // Left
keypad &= ~KEY_PLUS;//dragonKEY_PLUS;
if( !( P6_2 & BIT0 )) // Right
keypad &= ~KEY_MINUS;//dragonKEY_MINUS;
//printData( "Key Pad = ", ( WORD ) keypad );
return keypad;
#elif QuantaL7T
BYTE keypad;
keypad=P1|0xF;
if (!(P5_0&BIT0))
keypad&=~KEY_POWER;
if (!(P6_0&BIT0))
keypad&=~KEY_UP;
if (!(P6_1&BIT0))
keypad&=~KEY_DOWN;
return keypad;
#else
return P0;
#endif
}
BYTE Key_GetKeypadStatus(void)
{
BYTE i, Temp;
i = 5;
while( i-- != 0 )
{
Temp = Key_GetKeypadStatus_sub();
Delay1ms( 1);
if( Temp == Key_GetKeypadStatus_sub())
break;
}
return Temp;
}
#if 0
void CheckFactoryKeyStatus(void)
{ BYTE keypadStatus;
keypadStatus=(Key_GetKeypadStatus()^KeypadMask)&KeypadMask;
Clr_FactoryModeFlag();
if (keypadStatus==KEY_MENU)
{ Set_FactoryModeFlag();
Set_PowerOnFlag();
}
else if (keypadStatus==KEY_ISP)
{ Set_PowerOnFlag();
Set_ISPFlag();
}
}
#endif
void Key_ScanKeypad(void)
{
BYTE keypadStatus;
keypadStatus = ( Key_GetKeypadStatus() ^ KeypadMask ) & KeypadMask;
if (keypadStatus)
{
if( keypadStatus == KEY_PLUS )
{
// no repeat at select 9300 6000 or select language/osd position or factory2menu
if(((MenuPageIndex==ColorMenu && MenuItemIndex==0)
|| MenuPageIndex==OtherMenu || MenuPageIndex==Factory2Menu)
&& (KeypadButton == BTN_Plus||KeypadButton == BTN_Repeat))
KeypadButton=BTN_Repeat;
else
KeypadButton = BTN_Plus;
}
else if( keypadStatus == KEY_MINUS )
{
// no repeat at select 9300 6000 or select language/osd position or factory2menu
if(((MenuPageIndex==ColorMenu && MenuItemIndex==0)
|| MenuPageIndex==OtherMenu || MenuPageIndex==Factory2Menu)
&& (KeypadButton == BTN_Minus||KeypadButton == BTN_Repeat))
KeypadButton=BTN_Repeat;
else
KeypadButton = BTN_Minus;
}
else if (keypadStatus == KEY_UP)
{
if(KeypadButton == BTN_Up||KeypadButton == BTN_Repeat)
KeypadButton=BTN_Repeat;
else
KeypadButton = BTN_Up;
}
else if (keypadStatus == KEY_DOWN)
{
if(KeypadButton == BTN_Down||KeypadButton == BTN_Repeat)
KeypadButton=BTN_Repeat;
else
KeypadButton = BTN_Down;
}
else if (keypadStatus == KEY_MENU)
{
if( KeypadButton == BTN_Menu || KeypadButton == BTN_Repeat )
KeypadButton = BTN_Repeat;
else
KeypadButton = BTN_Menu;
}
else if (keypadStatus == KEY_SELECT)
{
// if at select menu no repeat
if( MenuPageIndex >=MainMenu
&& (KeypadButton == BTN_Select || KeypadButton == BTN_Repeat ))
KeypadButton = BTN_Repeat;
else
KeypadButton = BTN_Select;
}
else if (keypadStatus == KEY_POWER)
{
if (KeypadButton == BTN_Power || KeypadButton==BTN_Repeat)
KeypadButton = BTN_Repeat;
else
{
KeypadButton = BTN_Power;
#if Quanta || QuantaL7T ||QuantaGateway||Lego2
// DisableDDC();
EnableDDC();
#endif
Clr_DoBurninModeFlag(); //ASW stop Burnin function when power off
Clr_BurninModeFlag(); //
mStar_WriteByte(FWC, 0); //
}
}
else if( keypadStatus == KEY_FACTORY )
{
if( KeypadButton == BTN_Power || KeypadButton == BTN_Repeat )
KeypadButton = BTN_Repeat;
else
{
KeypadButton = BTN_Power;
Set_FactoryModeFlag();
#if Quanta || QuantaL7T ||QuantaGateway||Lego2
DisableDDC();
#endif
}
}
else
KeypadButton = BTN_Nothing;
}
else
KeypadButton = BTN_Nothing;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -