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

📄 keypad.c

📁 mcu for gm5621带遥控,键盘输入的单片机代码.供学习参考使用.谢谢.
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "board.h"
#include "global.h"
#include "misc.h"
#include "keypaddef.h"
#include "ir.h"
#include "power.h"
#include "Gm_rwreg.h"
#include "debug.h"
#include "keypad.h"
//#include ""
#if DebugIRCode
extern BYTE xdata IRDebugCode0;
extern BYTE xdata IRDebugCode1;
extern BYTE xdata IRDebugData;
#endif

#if TEST_IR_KEY
extern BYTE IR_Data_Backup;
#endif

BYTE KeypadButton = BTN_Nothing;

BYTE Key_GetKeypadStatus(void)
{ 
  	return hwKeyPort;
}


void Key_ScanKeypad(void)
{ 
	BYTE keypadStatus,keypadStatus2;
							

  	keypadStatus=(Key_GetKeypadStatus()^KeypadMask)&KeypadMask;

  	if(keypadStatus)//remove jitter
	{
		ForceDelay1ms(20);
	
		keypadStatus2=(Key_GetKeypadStatus()^KeypadMask)&KeypadMask;
		
		if(keypadStatus!=keypadStatus2)
	  		keypadStatus = 0;
		
		Clr_IRKeyReceiveFlag();
	
	}
  	else
     	{

		
     		keypadStatus = Get_IR_Key();
		//printData("IR-Key=0x%x", keypadStatus);
		//Tom added it to solve the ir value is not zero when there is no input	
		//so the ir value can't be defined as zero
  		//if (keypadStatus == KEY_NOTHING)
		//	keypadStatus = 0;
		//end

	#if TEST_IR_KEY
		printData("IR_Data_Backup=0x%x", IR_Data_Backup);
	#endif
		
	 	//if(keypadStatus)
		if (keypadStatus != KEY_NOTHING)
		{
     			printData("IR-Key=0x%x", keypadStatus);
			Set_IRKeyReceiveFlag();
     		}
     		else
      			Clr_IRKeyReceiveFlag();   
     	}
	


  
  	//if (keypadStatus)
  	if (keypadStatus != KEY_NOTHING)
    	{
    		if (keypadStatus==KEY_PLUS)
        	{
			gm_sendByte(Key_VolumeUp|CMD_HEAD_KEY);
        	}
      		else if (keypadStatus==KEY_MINUS)
        	{
			gm_sendByte(Key_VolumeDown|CMD_HEAD_KEY);
        	}
      		else if (keypadStatus==KEY_MENUENTER)
        	{
        		//if (KeypadButton==BTN_MenuEnter|| KeypadButton==BTN_Repeat)
            		//	KeypadButton=BTN_Repeat;
      	  		//else
      	  		//{
            		//	KeypadButton=BTN_MenuEnter;
			gm_sendByte(Key_MenuEnter|CMD_HEAD_KEY);
      	  		//}
      		}
     		else if (keypadStatus==KEY_SOURCESWITCH)
        	{
        	 	//if (KeypadButton==BTN_SourceSwitch|| KeypadButton==BTN_Repeat)
            		//	KeypadButton=BTN_Repeat;
      	  		//else
      	  		//{
            		//KeypadButton=BTN_SourceSwitch;
        			gm_sendByte(Key_SourceKey|CMD_HEAD_KEY);
      	  		//}
      		}
      		else if (keypadStatus==KEY_POWER)
      		{ 
      			if (KeypadButton == BTN_Power || KeypadButton == BTN_Repeat)
					KeypadButton = BTN_Repeat;
				else
				{
				
				#if 1
					if (gm_StandbyHi())
					//if (!PowerOnFlag)
					{
					//	printMsg("standby high, standby high");
						Clr_gm_Standby();
						Set_DoPowerOnFlag();
						Set_PowerOnStatus();
						ForceDelay1ms(1);
					//	cmd_Power_Handler = POWER_ON_SYSTEM;
					}
					else
					{
						Clr_DoPowerOnFlag();
					}
				#endif
			
			       KeypadButton=BTN_Power;
      				gm_sendByte(Key_PowerKey|CMD_HEAD_KEY);
			#if 0
				if (!PowerOnFlag)
				{
					//Set_gm_Standby();
					Set_PowerOnFlag();
					ForceDelay1ms(1);
					cmd_Power_Handler = POWER_ON_SYSTEM;
				}
			#endif
			}
      		}
      		else if (keypadStatus==KEY_UP)
        	{
        		//if (KeypadButton == BTN_Up||KeypadButton == BTN_Repeat)
			//		KeypadButton = BTN_Repeat;
			//else
			//{
			//	KeypadButton = BTN_Up;
        			gm_sendByte(Key_ChannelUp|CMD_HEAD_KEY);
			//}
        	}
      		else if (keypadStatus==KEY_DOWN)
        	{
        		//if (KeypadButton == BTN_Down||KeypadButton == BTN_Repeat)
			//		KeypadButton = BTN_Repeat;
			//else
			//{
			//	KeypadButton = BTN_Down;
        			gm_sendByte(Key_ChannelDown|CMD_HEAD_KEY);
			//}

        	}
		else if (keypadStatus == KEY_ENTERKEY)
		{
			//if (KeypadButton == BTN_EnterKey || KeypadButton == BTN_Repeat)
			//		KeypadButton = BTN_Repeat;
			//else
			//{
			//        KeypadButton=BTN_EnterKey;
				gm_sendByte(Key_EnterKey|CMD_HEAD_KEY);
			//}
		}


     //IR KEY----------------
      else if (keypadStatus == KEY_IR_0)
      	{
      	  	//if (KeypadButton==BTN_IR_0 || KeypadButton==BTN_Repeat)
            	//	KeypadButton=BTN_Repeat;
      	  	//else
      	  	//{
         	//	KeypadButton=BTN_IR_0;
			gm_sendByte(Key_IR_Zero);
      	  	//}
        }
      	else if (keypadStatus == KEY_IR_1)
      	{

      	  	//if (KeypadButton==BTN_IR_1 || KeypadButton==BTN_Repeat)
            	//	KeypadButton=BTN_Repeat;
      	  	//else
      	  	//{
            	//	KeypadButton=BTN_IR_1;
		  	gm_sendByte(Key_IR_One);
      	  	//}
        }
      	else if (keypadStatus == KEY_IR_2)
      	{
      	  	//if (KeypadButton==BTN_IR_2 || KeypadButton==BTN_Repeat)
            	//	KeypadButton=BTN_Repeat;
      	  	//else
      	  	//{
            	//	KeypadButton=BTN_IR_2;
			gm_sendByte(Key_IR_Two);
      	  	//}
       }
      	else if (keypadStatus == KEY_IR_3)
      	{
      	  	//if (KeypadButton==BTN_IR_3 || KeypadButton==BTN_Repeat)
            	//	KeypadButton=BTN_Repeat;
      	  	//else
      	  	//{
            	//	KeypadButton=BTN_IR_3;
			gm_sendByte(Key_IR_Three);
      	  	//}
        }
      	else if (keypadStatus == KEY_IR_4)
      	{
      	  	//if (KeypadButton==BTN_IR_4 || KeypadButton==BTN_Repeat)
            	//	KeypadButton=BTN_Repeat;
      	  	//else
      	  	//{
            	//	KeypadButton=BTN_IR_4;
		  	gm_sendByte(Key_IR_Four);
      	  	//}
        }
      	else if (keypadStatus == KEY_IR_5)
      	{
      	  	//if (KeypadButton==BTN_IR_5 || KeypadButton==BTN_Repeat)
            	//	KeypadButton=BTN_Repeat;
      	  	//else
          	//{
            	//	KeypadButton=BTN_IR_5;
		  	gm_sendByte(Key_IR_Five);
      	  	//}
        }
      	else if (keypadStatus == KEY_IR_6)
      	{
      	  	//if (KeypadButton==BTN_IR_6 || KeypadButton==BTN_Repeat)
            	//	KeypadButton=BTN_Repeat;
      	  	//else
           	//{
            	//	KeypadButton=BTN_IR_6;
		  	gm_sendByte(Key_IR_Six);
      	  	//}
        }
      	else if (keypadStatus == KEY_IR_7)
      	{
      	  	//if (KeypadButton==BTN_IR_7 || KeypadButton==BTN_Repeat)
            	//	KeypadButton=BTN_Repeat;
      	  	//else
            	//{
            	//	KeypadButton=BTN_IR_7;
		  	gm_sendByte(Key_IR_Seven);
      	  	//}
        }
      	else if (keypadStatus == KEY_IR_8)
      	{
      	  	//if (KeypadButton==BTN_IR_8 || KeypadButton==BTN_Repeat)
            	//	KeypadButton=BTN_Repeat;
      	  	//else
            	//{
            	//	KeypadButton=BTN_IR_8;
		  	gm_sendByte(Key_IR_Eight);
      	  	//}
        }
      	else if (keypadStatus == KEY_IR_9)
      	{
      	  	//if (KeypadButton==BTN_IR_9 || KeypadButton==BTN_Repeat)
            	//	KeypadButton=BTN_Repeat;
      	  	//else
            	//{
            	//	KeypadButton=BTN_IR_9;
		  	gm_sendByte(Key_IR_Nine);
      	  	//}
        }
	else if (keypadStatus==KEY_IR_VOLUMEUP)
       {
	  	gm_sendByte(Key_VolumeUp|CMD_HEAD_IR);
        }
      	else if (keypadStatus==KEY_IR_VOLUMEDOWN)
      	{
	  	gm_sendByte(Key_VolumeDown|CMD_HEAD_IR);
	}
	else if (keypadStatus==KEY_IR_CHANNELUP)
       {
	  	gm_sendByte(Key_ChannelUp|CMD_HEAD_IR);
        }
      	else if (keypadStatus==KEY_IR_CHANNELDOWN)
      	{
	  	gm_sendByte(Key_ChannelDown|CMD_HEAD_IR);
	}
	else if (keypadStatus == KEY_IR_UP)	
	{
	//	if (KeypadButton == BTN_IR_Up ||KeypadButton == BTN_Repeat)
	//		KeypadButton = BTN_Repeat;
	//	else
	//	{
	//		KeypadButton = BTN_IR_Up;
			gm_sendByte(Key_Up|CMD_HEAD_IR);
	//	}

⌨️ 快捷键说明

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