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

📄 osdkey.c

📁 MST720-DEMO程序
💻 C
字号:
/******************************************************************************
 Copyright (c) 2005 MStar Semiconductor, Inc.
 All rights reserved.

 [Module Name]: OSDKey.c
 [Date]:	04-Feb-2005
 [Comment]:
   OSD Key scan Functions.
 [Reversion History]:
*******************************************************************************/
#define _OSDKEY_C_
/********************
* INCLUDE FILES     *
*********************/
#include "Project.h"
#include "Global.h"
#include "Mcu_reg.h"
#include "TypeDef.h"
#include "Ms_RWreg.h"
#include "Ms7X_reg.h"
#include "Mst7x.h"
#include "Debug.h"
#include "Misc.h"
#include "OSDFunc.h"
#include "OSDMenu.h"
#include "OSDKey.h"
#include "Mcu.h"
#include "PANEL.h"


/**********************
* FUNCTION PROTOTYPES *
***********************/
BYTE osdKeyGetKeypadStatus(void)
{
	BYTE ucKeyData = 0xFF;
	
#if (KEY_TYPE_SEL == KEY_ADC)//kevin
	BYTE ucADCValue = 0x00;
	BYTE ucADCValueTemp = 0x00;
	BYTE ucDebounce = 0x00;

	ucADCValue = MCUXFR_20_KEY_ADC1 & 0x3F;
	ucADCValueTemp = ucADCValue;

	if (ucADCValue <= (KEY_AD_L3+KEY_AD_DELTA))
	{
		for (ucDebounce = 0 ; ucDebounce<=10; ucDebounce++)
		{
			miscDelay1ms(2);
			ucADCValue = MCUXFR_20_KEY_ADC1 & 0x3F;
			
			if ((ucADCValue > (ucADCValueTemp+1)) ||(ucADCValue < ((char)ucADCValueTemp-1)))
			{
				ucDebounce = 0;
				ucADCValueTemp = ucADCValue;
			}
		}
#if RS232DBG
		printf("-ADC0 value- %x\r\n",ucADCValue);
#endif

		if (ucADCValue < (KEY_AD_L0 + KEY_AD_DELTA))
	        		ucKeyData &= ~KEY_POWER;
	    	else if ((KEY_AD_L1-KEY_AD_DELTA) < ucADCValue && ucADCValue < (KEY_AD_L1+KEY_AD_DELTA))
	        		ucKeyData &= ~KEY_AUTO;
	    	else if ((KEY_AD_L2-KEY_AD_DELTA) < ucADCValue && ucADCValue < (KEY_AD_L2+KEY_AD_DELTA))
	        		ucKeyData &= ~KEY_EXIT;
	    	else if ((KEY_AD_L3-KEY_AD_DELTA) < ucADCValue && ucADCValue < (KEY_AD_L3+KEY_AD_DELTA))
	        		ucKeyData &= ~KEY_MENU;
	}
	
	ucADCValue = MCUXFR_21_KEY_ADC2 & 0x3F;
	ucADCValueTemp = ucADCValue;
	
	if (ucADCValue <= (KEY_AD_L3+KEY_AD_DELTA))
	{
		for (ucDebounce = 0 ; ucDebounce<=10; ucDebounce++)
		{
			miscDelay1ms(2);
			ucADCValue = MCUXFR_21_KEY_ADC2 & 0x3F;
			
			if((ucADCValue > (ucADCValueTemp+1)) ||(ucADCValue < ((char)ucADCValueTemp-1)))
			{
				ucDebounce = 0;
				ucADCValueTemp = ucADCValue;
			}
		}
#if RS232DBG
		printf("-ADC1 value- %x\r\n",ucADCValue);
#endif

		if (ucADCValue < (KEY_AD_L0 + KEY_AD_DELTA))
	        		;//ucKeyData &= ~KEY_MINUS;//Masked 2006-01-09
	    	else if ((KEY_AD_L1-KEY_AD_DELTA) < ucADCValue && ucADCValue < (KEY_AD_L1+KEY_AD_DELTA))
	        		;//ucKeyData &= ~KEY_PLUS;
	    	else if ((KEY_AD_L2-KEY_AD_DELTA) < ucADCValue && ucADCValue < (KEY_AD_L2+KEY_AD_DELTA))
	        		;//ucKeyData &= ~KEY_PLUS;
		else if ((KEY_AD_L3-KEY_AD_DELTA) < ucADCValue && ucADCValue < (KEY_AD_L3+KEY_AD_DELTA))
	        		;//ucKeyData &= ~KEY_MINUS;
	}

	return ucKeyData;
#else
	if (!bPOWER_KEY)
	{
		ucKeyData &= ~KEY_POWER;

		g_ucSystemFlag &= ~ENTER_SPI_DEBUG;//20050920
	}
	if (!bSOURCE_KEY)
	{
		ucKeyData &= ~KEY_EXIT;

		miscDelay1ms(40);//20050920
		if (!bMENU_KEY)//20050920
		{
			g_ucSystemFlag |= ENTER_SPI_DEBUG;
		}
	}
	if (!bLEFT_KEY)
		ucKeyData &= ~KEY_PLUS;
	if (!bRIGHT_KEY)
		ucKeyData &= ~KEY_MINUS;
	if (!bMENU_KEY)
	{
		ucKeyData &= ~KEY_MENU;
		
		miscDelay1ms(40);//20050920
		if (!bSOURCE_KEY)//20050920
		{
			g_ucSystemFlag |= ENTER_SPI_DEBUG;
		}
	}

	//while((KEY_PORT & KEY_PORTMASK) != KEY_PORTMASK);

	return ucKeyData;
#endif
}

void osdKeyScanKeypad(void)
{
	BYTE ucKeypadStatus;

	ucKeypadStatus=(osdKeyGetKeypadStatus()^KEY_PORTMASK)&KEY_PORTMASK;

	if (ucKeypadStatus)
	{ 
		if (ucKeypadStatus==KEY_FACTORY) //&& !PowerOnFlag)
		{
			//Set_FactoryModeFlag();
			g_ucKeypadButton=BTN_POWER;
		}
		else if (ucKeypadStatus==KEY_PLUS)
			g_ucKeypadButton=BTN_PLUS;
		else if (ucKeypadStatus==KEY_MINUS)
			g_ucKeypadButton=BTN_MINUS;
		else if (ucKeypadStatus==KEY_MENU)
		{
			if (g_ucKeypadButton==BTN_MENU || g_ucKeypadButton==BTN_REPEAT)
				g_ucKeypadButton=BTN_REPEAT;
			else
				g_ucKeypadButton=BTN_MENU;
		}
		else if (ucKeypadStatus==KEY_EXIT)
		{
			if (g_ucKeypadButton==BTN_REPEAT)
				g_ucKeypadButton=BTN_REPEAT;
			else
				g_ucKeypadButton=BTN_EXIT;
		}
		else if (ucKeypadStatus==KEY_AUTO)
		{
			if (g_ucKeypadButton==BTN_REPEAT)
				g_ucKeypadButton=BTN_REPEAT;
			else
				g_ucKeypadButton=BTN_AUTO;
		}
		else if (ucKeypadStatus==KEY_POWER)
		{
			if (g_ucKeypadButton==BTN_POWER || g_ucKeypadButton==BTN_REPEAT)
				g_ucKeypadButton=BTN_REPEAT;
			else
				g_ucKeypadButton=BTN_POWER;
		}
		else
			g_ucKeypadButton=BTN_NOTHING;
	}
	else
		g_ucKeypadButton=BTN_NOTHING;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -