📄 keyboard.lst
字号:
void Get_Keyboard_Key()
{
U8 temp_input;
BOOL has_key_flag;
has_key_flag=0;
//scan the line0
C51 COMPILER V8.02 KEYBOARD 10/16/2006 17:42:27 PAGE 8
SET_KEY_OUT0_LOW;
Delay_xuS(1);
temp_input=KEY_INPUT_REGISTER&0xF0;
if(temp_input!=0xF0)
{
Key_Scan_Buffer0=temp_input>>4;
has_key_flag=1;
// Tuner.FMFreq=Key_Scan_Buffer0+1000; System_Flag_DispEvent=1;
}
//scan the line1
SET_KEY_OUT1_LOW;
Delay_xuS(1);
temp_input=KEY_INPUT_REGISTER&0xF0;
if(temp_input!=0xF0)
{
Key_Scan_Buffer1=temp_input>>4;
has_key_flag=1;
// Tuner.FMFreq=Key_Scan_Buffer1+2000; System_Flag_DispEvent=1;
}
//scan the line2
SET_KEY_OUT2_LOW;
Delay_xuS(1);
temp_input=KEY_INPUT_REGISTER&0xF0;
if(temp_input!=0xF0)
{
Key_Scan_Buffer2=temp_input>>4;
has_key_flag=1;
// Tuner.FMFreq=Key_Scan_Buffer2+3000; System_Flag_DispEvent=1;
}
//scan he line3
SET_KEY_OUT3_LOW;
Delay_xuS(1);
temp_input=KEY_INPUT_REGISTER&0xF0;
if(temp_input!=0xF0)
{
Key_Scan_Buffer3=temp_input>>4;
has_key_flag=1;
// Tuner.FMFreq=Key_Scan_Buffer3+4000; System_Flag_DispEvent=1;
}
SET_KEY_OUT_CANCEL;
if(has_key_flag==1)
{
Get_Key_Counter++;
}
else
{
No_Key_Counter++;
}
if(Enable_Get_Key==1)
{
C51 COMPILER V8.02 KEYBOARD 10/16/2006 17:42:27 PAGE 9
if(Get_Key_Counter>80)
{
if(Get_Key_Counter>No_Key_Counter+10) //No_Key_Counter+10-100))
{
Get_Panel_Click_key();
//Tuner.FMFreq=Key_Code-0x40+9000; System_Flag_DispEvent=1;
//Key_Code=0xff;
}
//process the repeat key input
if(Key_Code==KEY_FP_TRACK_DOWN
||Key_Code==KEY_FP_TRACK_UP)
{
if(Flag_Get_Hold_Key)
{
//when get hold key ,we mask some key
if(Get_Key_Counter>80)
{
//the key is hold
No_Key_Counter=0;
Get_Key_Counter=0;
// Key_Code=0xFF;
}
else
Key_Code=0xFF;
Need_Send_Single_Key=0;
}
else
{
Need_Send_Single_Key=1;
Panel_Key_Backup=Key_Code;
Key_Code=0xFF;
if(Get_Key_Counter>1000)
Flag_Get_Hold_Key=1;
}
Enable_Get_Key=1;
}
else if(FP_Key_Hold_Enable_Table[Key_Code-0x40])
// ==KEY_FP_TUNER_AREA||Key_Code==KEY_FP_PROGRAM)
{//process the Hold key
//get the hold key and send it ,then disable the input until key release
if(Get_Key_Counter>3000)
{
Enable_Get_Key=0;
Need_Send_Single_Key=0;
Key_Code=Key_Code+0x80;
}
else
{//only get the single press key,send the key after key release
C51 COMPILER V8.02 KEYBOARD 10/16/2006 17:42:27 PAGE 10
Enable_Get_Key=1;
Need_Send_Single_Key=1;
Panel_Key_Backup=Key_Code;
Key_Code=0xFF;
}
}
else
{
Enable_Get_Key=0;
Get_Key_Counter=0;
No_Key_Counter=0;//No_Key_Counter=100;
Flag_Get_Hold_Key=0;
}
}
}
if(No_Key_Counter>10)//No_Key_Counter>130)
{
//Tuner.FMFreq=Get_Key_Counter; System_Flag_DispEvent=1;
Enable_Get_Key=1;
No_Key_Counter=0;//No_Key_Counter=100;
Get_Key_Counter=0;
Flag_Get_Hold_Key=0;
//send the backup key
if( Need_Send_Single_Key)
{
Key_Code= Panel_Key_Backup;
Need_Send_Single_Key=0;
}
else
Key_Code=0xFF;
Key_Scan_Buffer0=0xFF;
Key_Scan_Buffer1=0xFF;
Key_Scan_Buffer2=0xFF;
Key_Scan_Buffer3=0xFF;
}
}
#endif
598
599
600
601
602
603
604
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 601 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 16 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
C51 COMPILER V8.02 KEYBOARD 10/16/2006 17:42:27 PAGE 11
BIT SIZE = ---- 1
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -