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

📄 keyboard.lst

📁 用51单片机实现IR解码
💻 LST
📖 第 1 页 / 共 3 页
字号:
              
              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 + -