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

📄 keyboard.lst

📁 用51单片机实现IR解码
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.02   KEYBOARD                                                              10/16/2006 17:42:27 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c OMF2 BROWSE DEBUG

line level    source

   1          /**********************************************************************
   2          *File           Name            :       
   3          *Creat          Time            :       
   4          *Program        Author          :       
   5          *File           Discreption     :        
   6          ************************************************************************/
   7          
   8          #include "common.h"
   9          #include "main.h"
  10          #include "key.h"
  11          #include "Var.h"
  12          #include "keyboard.h"
  13          
  14          /*************************************************************
  15           Title:                  Parse_Input_Key_Timer
  16           
  17                  1.The timer is  increased by hardware TIMER2 with an unit  about 20ms.
  18                  2.Once MCU check some key is pressed ,it the start.
  19                  3.After MCU do not check any key for 150ms ,the timer is reseted.
  20                  
  21          ***************************************************************/
  22           EX_DATA U8  FP_Key_Hold_Enable_Table[]=
  23          {
  24                  0,      //                                              KEY_FP_0=0x40,
  25                  0,      //                                              KEY_FP_NEXT             =0x41,
  26                  0,      //                                              KEY_FP_SEEK_DOWN                =        0x42,
  27                  0,      //                                              KEY_FP_STEREO           =0x43,
  28                  0,      //                                              KEY_FP_RDS_DISPALY      =       0x44,
  29                  0,      //                                              KEY_FP_PREVIOUS                  =       0x45,
  30                  0,      //                                              KEY_FP_TRACK_DOWN          =            0x46,
  31                  0,      //                                              KEY_FP_AUTO_ALL           =             0x47,
  32                  0,      //                                              KEY_FP_RDS_PTY      =            0x48,
  33                  0,      //                                              KEY_FP_NOP1=    0x49,
  34                  0,      //                                              KEY_FP_SEEK_UP    =     0x4A,
  35                  0,      //                                              KEY_FP_MUTE       =     0x4B,
  36                  1,      //                                              KEY_FP_TUNER_AREA       =       0x4C,
  37                  0,      //                                              KEY_FP_NOP=     0x4D,
  38                  0,      //                                              KEY_FP_TRACK_UP     =   0x4E,
  39                  1       //                                              KEY_FP_PROGRAM          =0x4F,
  40          
  41          };
  42          #define HIGH_OUT_LOW_INPUT
  43          #ifdef HIGH_OUT_LOW_INPUT
  44          #define  SET_KEY_OUT0_LOW       P2=0xEF   //KEY_OUT0=0;// KEY_OUT1=1;KEY_OUT2=1;KEY_OUT3=1;
  45          #define  SET_KEY_OUT1_LOW             P2=0xDF //KEY_OUT0=1; KEY_OUT1=0;KEY_OUT2=1;KEY_OUT3=1;
  46          #define  SET_KEY_OUT2_LOW        P2=0xBF  //KEY_OUT0=1; KEY_OUT1=1;KEY_OUT2=0;KEY_OUT3=1;
  47          #define  SET_KEY_OUT3_LOW        P2=0x7F //KEY_OUT0=1; KEY_OUT1=1;KEY_OUT2=1;KEY_OUT3=0;
  48          #define  SET_KEY_OUT_CANCEL     P2=0xFF //KEY_OUT0=1; KEY_OUT1=1;KEY_OUT2=1;KEY_OUT3=1;
  49          #define   KEY_INPUT_REGISTER      P2
  50          #define GET_SIGNLE_KEY_TIMER            0x80
  51          
  52          void Get_Panel_Click_key()
  53          {
  54   1              U8 get_key_flag,  temp_key_code;
  55   1              
C51 COMPILER V8.02   KEYBOARD                                                              10/16/2006 17:42:27 PAGE 2   

  56   1              get_key_flag=0;
  57   1              temp_key_code=0xff;
  58   1              //check the first line input
  59   1                           switch(Key_Scan_Buffer0)
  60   1                              {
  61   2                              case 0x7:    //key4 presss
  62   2                                                      Key_Code=0x44; // 0b 0100 0100
  63   2                              //Tuner.FMFreq=4+9000;   System_Flag_DispEvent=1; 
  64   2                                                      break;
  65   2                            case 0xB:     //key3  press
  66   2                                                      Key_Code=0x43;  // 0b 0100 0011 
  67   2                              //      Tuner.FMFreq=3+9000;     System_Flag_DispEvent=1; 
  68   2                                                      break;
  69   2                              case 0xD:        //key2 presss
  70   2                                                      Key_Code=0x42; // 0b 0100 0010
  71   2                              //      Tuner.FMFreq=2+9000;     System_Flag_DispEvent=1; 
  72   2                                              break;
  73   2                              case 0xE:   //key1 presss
  74   2                                                      Key_Code=0x41; // 0b 0100 0001
  75   2                              //Tuner.FMFreq=1+9000;   System_Flag_DispEvent=1;       
  76   2      
  77   2                                                      break;
  78   2                              default:
  79   2                                                      break;
  80   2                                }
  81   1      
  82   1                              switch(Key_Scan_Buffer1)
  83   1                              {
  84   2                              case 0x7:    //key4 presss
  85   2                                                      Key_Code=0x48; // 0b 0100 0100
  86   2                                                      break;
  87   2                            case 0xB:     //key3  press
  88   2                                                      Key_Code=0x47;  // 0b 0100 0011 
  89   2                                                      break;
  90   2                              case 0xD:        //key2 presss
  91   2                                                      Key_Code=0x46; // 0b 0100 0010
  92   2                                              break;
  93   2                              case 0xE:   //key1 presss
  94   2                                                      Key_Code=0x45; // 0b 0100 0001
  95   2                                                      break;
  96   2                              default:
  97   2                                                      break;
  98   2                                }
  99   1                              switch(Key_Scan_Buffer2)
 100   1                              {
 101   2                              case 0x7:    //key4 presss
 102   2                                                      Key_Code=0x4C; // 0b 0100 0100
 103   2                                                      break;
 104   2                            case 0xB:     //key3  press
 105   2                                                      Key_Code=0x4B;  // 0b 0100 0011 
 106   2                                                      break;
 107   2                              case 0xD:        //key2 presss
 108   2                                                      Key_Code=0x4A; // 0b 0100 0010
 109   2                                              break;
 110   2                              case 0xE:   //key1 presss
 111   2                                                      Key_Code=0x49; // 0b 0100 0001
 112   2                                                      break;
 113   2                              default:
 114   2                                                      break;
 115   2                                }
 116   1                              switch(Key_Scan_Buffer3)
 117   1                              {
C51 COMPILER V8.02   KEYBOARD                                                              10/16/2006 17:42:27 PAGE 3   

 118   2                              case 0x7:    //key4 presss
 119   2                                                      Key_Code=0x50; // 0b 0100 0100
 120   2                                                      break;
 121   2                            case 0xB:     //key3  press
 122   2                                                      Key_Code=0x4F;  // 0b 0100 0011 
 123   2                                                      break;
 124   2                              case 0xD:        //key2 presss
 125   2                                                      Key_Code=0x4E; // 0b 0100 0010
 126   2                                              break;
 127   2                              case 0xE:   //key1 presss
 128   2                                                      Key_Code=0x4D; // 0b 0100 0001
 129   2                                                      break;
 130   2                              default:
 131   2                                                      break;
 132   2                                }
 133   1      
 134   1                              
 135   1      
 136   1                              
 137   1      }
 138          
 139          
 140          void Get_Keyboard_Key()
 141          {
 142   1      
 143   1                U8 temp_input;
 144   1                BOOL  has_key_flag;
 145   1      
 146   1                    has_key_flag=0;
 147   1      
 148   1                              
 149   1                      
 150   1              //scan the line0
 151   1              SET_KEY_OUT0_LOW;
 152   1              
 153   1                    Delay_xuS(1);
 154   1                      temp_input=KEY_INPUT_REGISTER&0x0F;
 155   1                      
 156   1                      if(temp_input!=0x0F)
 157   1                              {
 158   2                              Key_Scan_Buffer0=temp_input;
 159   2                              has_key_flag=1;
 160   2                      //         Tuner.FMFreq=Key_Scan_Buffer0+1000;   System_Flag_DispEvent=1;
 161   2                              }
 162   1      
 163   1              //scan the line1                        
 164   1                      SET_KEY_OUT1_LOW;
 165   1      
 166   1                    Delay_xuS(1);
 167   1                      temp_input=KEY_INPUT_REGISTER&0x0F;
 168   1                      if(temp_input!=0x0F)
 169   1                              {
 170   2                              Key_Scan_Buffer1=temp_input;
 171   2                              has_key_flag=1;
 172   2                              //   Tuner.FMFreq=Key_Scan_Buffer1+2000;         System_Flag_DispEvent=1;
 173   2                              }
 174   1              //scan the line2
 175   1                      SET_KEY_OUT2_LOW;
 176   1              
 177   1                    Delay_xuS(1);
 178   1                      temp_input=KEY_INPUT_REGISTER&0x0F;
 179   1                      if(temp_input!=0x0F)
C51 COMPILER V8.02   KEYBOARD                                                              10/16/2006 17:42:27 PAGE 4   

 180   1                                {
 181   2                                Key_Scan_Buffer2=temp_input;
 182   2                                has_key_flag=1;
 183   2                                  // Tuner.FMFreq=Key_Scan_Buffer2+3000;       System_Flag_DispEvent=1;
 184   2                                }
 185   1              //scan he line3
 186   1                     SET_KEY_OUT3_LOW;
 187   1                     Delay_xuS(1);
 188   1                      temp_input=KEY_INPUT_REGISTER&0x0F;
 189   1                      if(temp_input!=0x0F)
 190   1                              {
 191   2                              Key_Scan_Buffer3=temp_input;
 192   2                              has_key_flag=1;
 193   2                               //  Tuner.FMFreq=Key_Scan_Buffer3+4000;         System_Flag_DispEvent=1;
 194   2                              }
 195   1      
 196   1                      SET_KEY_OUT_CANCEL;
 197   1      
 198   1                      
 199   1              
 200   1      
 201   1                      if(has_key_flag==1)
 202   1                      {
 203   2                       Get_Key_Counter++;

⌨️ 快捷键说明

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