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

📄 keypad.c

📁 LCD OSD 程序用於8051 開發lcd
💻 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 + -