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

📄 keyboard.lst

📁 用51单片机实现IR解码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 204   2                      }
 205   1                      else
 206   1                      {
 207   2                      No_Key_Counter++;
 208   2                      }
 209   1                      
 210   1                  if(Enable_Get_Key==1)
 211   1                      {
 212   2                      
 213   2                              if(Get_Key_Counter>80)
 214   2                                      {
 215   3      
 216   3                                         if(Get_Key_Counter>No_Key_Counter+10)    //No_Key_Counter+10-100))
 217   3                                              {
 218   4                                                      Get_Panel_Click_key();
 219   4                                                      //Tuner.FMFreq=Key_Code-0x40+9000;       System_Flag_DispEvent=1;   
 220   4                                                      //Key_Code=0xff;
 221   4                                      }
 222   3                                            
 223   3                                              //process  the repeat key input 
 224   3                                             if(Key_Code==KEY_FP_TRACK_DOWN
 225   3                                                      ||Key_Code==KEY_FP_TRACK_UP)
 226   3                                                {
 227   4                                                         
 228   4                                         
 229   4                                                                if(Flag_Get_Hold_Key)
 230   4                                                              {
 231   5                                                                         //when get hold key ,we mask some key
 232   5                                                                            if(Get_Key_Counter>80)
 233   5                                                                               {
 234   6                                                                                               //the key is hold
 235   6                                                                                               No_Key_Counter=0;
 236   6                                                                                               Get_Key_Counter=0;
 237   6                                                                                              // Key_Code=0xFF;
 238   6                                                                                              
 239   6                                                                                                
 240   6                                                                         }
 241   5                                                                              else            
C51 COMPILER V8.02   KEYBOARD                                                              10/16/2006 17:42:27 PAGE 5   

 242   5                                                                                      Key_Code=0xFF;
 243   5                                                                              
 244   5                                                                               Need_Send_Single_Key=0;        
 245   5                                                                                      
 246   5                                                                              
 247   5                                                              }
 248   4                                                               else
 249   4                                                                {      
 250   5                                                                        Need_Send_Single_Key=1;
 251   5                                                                               Panel_Key_Backup=Key_Code;
 252   5                                                                               Key_Code=0xFF;
 253   5                                                                          if(Get_Key_Counter>1000)
 254   5                                                                                Flag_Get_Hold_Key=1;
 255   5                                                                }
 256   4                                                                                                      
 257   4                                                               Enable_Get_Key=1;
 258   4                                                          
 259   4      
 260   4                                               }
 261   3                                              else if(FP_Key_Hold_Enable_Table[Key_Code-0x40])    
 262   3                                                      //      ==KEY_FP_TUNER_AREA||Key_Code==KEY_FP_PROGRAM) 
 263   3                                                {//process the Hold key
 264   4      
 265   4                                                                              //get the hold key and send it ,then disable the input until key release
 266   4                                                                          if(Get_Key_Counter>3000)
 267   4                                                                           {
 268   5                                                                                Enable_Get_Key=0;
 269   5                                                                               Need_Send_Single_Key=0;
 270   5                                                                               Key_Code=Key_Code+0x80;
 271   5                                                                              
 272   5                                                                              }
 273   4                                                                              else
 274   4                                                                              {//only get the single press key,send the key after key release
 275   5                                                                                 Enable_Get_Key=1;
 276   5                                                                               Need_Send_Single_Key=1;
 277   5                                                                               Panel_Key_Backup=Key_Code;
 278   5                                                                               Key_Code=0xFF;
 279   5      
 280   5                                                                              }
 281   4      
 282   4                                                }
 283   3                                                 else
 284   3                                               {
 285   4                                                     Enable_Get_Key=0;
 286   4                                                       Get_Key_Counter=0;
 287   4                                                   No_Key_Counter=0;//No_Key_Counter=100;
 288   4                                               Flag_Get_Hold_Key=0;
 289   4                                              }
 290   3      
 291   3                                      }
 292   2                      }
 293   1      
 294   1                      
 295   1                      if(No_Key_Counter>10)//No_Key_Counter>130)
 296   1                      {
 297   2                              //Tuner.FMFreq=Get_Key_Counter;  System_Flag_DispEvent=1;       
 298   2                          Enable_Get_Key=1;
 299   2                              No_Key_Counter=0;//No_Key_Counter=100;
 300   2                              Get_Key_Counter=0;
 301   2                              Flag_Get_Hold_Key=0;
 302   2                              //send the backup key
 303   2                              if( Need_Send_Single_Key)
C51 COMPILER V8.02   KEYBOARD                                                              10/16/2006 17:42:27 PAGE 6   

 304   2                               {
 305   3                               Key_Code= Panel_Key_Backup;
 306   3                               Need_Send_Single_Key=0;
 307   3                              }
 308   2                              else
 309   2                                 Key_Code=0xFF;
 310   2                              
 311   2                              Key_Scan_Buffer0=0xFF;
 312   2                              Key_Scan_Buffer1=0xFF;
 313   2                              Key_Scan_Buffer2=0xFF;
 314   2                              Key_Scan_Buffer3=0xFF;
 315   2                      }
 316   1                              
 317   1      
 318   1      } 
 319          
 320          #else
              
              #define  SET_KEY_OUT0_LOW       P2=0xFE   //KEY_OUT0=0;// KEY_OUT1=1;KEY_OUT2=1;KEY_OUT3=1;
              #define  SET_KEY_OUT1_LOW             P2=0xFD //KEY_OUT0=1; KEY_OUT1=0;KEY_OUT2=1;KEY_OUT3=1;
              #define  SET_KEY_OUT2_LOW        P2=0xFB  //KEY_OUT0=1; KEY_OUT1=1;KEY_OUT2=0;KEY_OUT3=1;
              #define  SET_KEY_OUT3_LOW        P2=0xF7 //KEY_OUT0=1; KEY_OUT1=1;KEY_OUT2=1;KEY_OUT3=0;
              #define  SET_KEY_OUT_CANCEL     P2=0xFF //KEY_OUT0=1; KEY_OUT1=1;KEY_OUT2=1;KEY_OUT3=1;
              #define   KEY_INPUT_REGISTER      P2
              #define GET_SIGNLE_KEY_TIMER            0x80
              
              void Get_Panel_Click_key()
              {
                      U8 get_key_flag,  temp_key_code;
                      
                      get_key_flag=0;
                      temp_key_code=0xff;
                      //check the first line input
                                   switch(Key_Scan_Buffer0)
                                      {
                                      case 0x7:    //key4 presss
                                                              Key_Code=0x44; // 0b 0100 0100
                                      //Tuner.FMFreq=4+9000;   System_Flag_DispEvent=1; 
                                                              break;
                                    case 0xB:     //key3  press
                                                              Key_Code=0x43;  // 0b 0100 0011 
                                      //      Tuner.FMFreq=3+9000;     System_Flag_DispEvent=1; 
                                                              break;
                                      case 0xD:        //key2 presss
                                                              Key_Code=0x42; // 0b 0100 0010
                                      //      Tuner.FMFreq=2+9000;     System_Flag_DispEvent=1; 
                                                      break;
                                      case 0xE:   //key1 presss
                                                              Key_Code=0x41; // 0b 0100 0001
                                      //Tuner.FMFreq=1+9000;   System_Flag_DispEvent=1;       
              
                                                              break;
                                      default:
                                                              break;
                                        }
              
                                      switch(Key_Scan_Buffer1)
                                      {
                                      case 0x7:    //key4 presss
                                                              Key_Code=0x48; // 0b 0100 0100
                                                              break;
                                    case 0xB:     //key3  press
C51 COMPILER V8.02   KEYBOARD                                                              10/16/2006 17:42:27 PAGE 7   

                                                              Key_Code=0x47;  // 0b 0100 0011 
                                                              break;
                                      case 0xD:        //key2 presss
                                                              Key_Code=0x46; // 0b 0100 0010
                                                      break;
                                      case 0xE:   //key1 presss
                                                              Key_Code=0x45; // 0b 0100 0001
                                                              break;
                                      default:
                                                              break;
                                        }
                                      switch(Key_Scan_Buffer2)
                                      {
                                      case 0x7:    //key4 presss
                                                              Key_Code=0x4C; // 0b 0100 0100
                                                              break;
                                    case 0xB:     //key3  press
                                                              Key_Code=0x4B;  // 0b 0100 0011 
                                                              break;
                                      case 0xD:        //key2 presss
                                                              Key_Code=0x4A; // 0b 0100 0010
                                                      break;
                                      case 0xE:   //key1 presss
                                                              Key_Code=0x49; // 0b 0100 0001
                                                              break;
                                      default:
                                                              break;
                                        }
                                      switch(Key_Scan_Buffer3)
                                      {
                                      case 0x7:    //key4 presss
                                                              Key_Code=0x50; // 0b 0100 0100
                                                              break;
                                    case 0xB:     //key3  press
                                                              Key_Code=0x4F;  // 0b 0100 0011 
                                                              break;
                                      case 0xD:        //key2 presss
                                                              Key_Code=0x4E; // 0b 0100 0010
                                                      break;
                                      case 0xE:   //key1 presss
                                                              Key_Code=0x4D; // 0b 0100 0001
                                                              break;
                                      default:
                                                              break;
                                        }
              
                                      
              
                                      
              }

⌨️ 快捷键说明

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