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

📄 key.lst

📁 液晶屏显示程序
💻 LST
字号:
C51 COMPILER V7.06   KEY                                                                   02/05/2005 09:08:15 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include        <reg52.h>
   2          #include        <stdlib.h>
   3          #include        <stdio.h>
   4          #include        <math.h>
   5          #include        <intrins.h>
   6          #include    "define.h"
   7          #include    "function.h"
   8          
   9          
  10          extern unsigned char key_dms10;
  11          bit  key_bit_press;
  12          
  13          
  14          
  15          //                                   mode    enter     mode_enter   up      next      mode_down
  16          //                                        set     esc       mode_esc   down      back      mode_up
  17          //                                0    1    2    3    4    5    6    7   8    9   10
  18          //                                0    0    1    2    3    4    5    6   7    8    9
  19          //unsigned char code key_table[]={0x00,0xa8,0xb8,0xb0,0x0a,0x12,0x22,0x21,0xb2,0x09,0x11};   // for fzq
  20          unsigned char code key_table[]={0x00,0x09,0x11,0x21,0x22,0x29,0x2b,0x24,0x0c,0x0a,0x14,0x0d,0x2d};     // 
             -for cpu
  21          unsigned char code key_scan_table[]={0x3e,0x3d,0x3b};
  22          unsigned char key_step,key_add_step;
  23          
  24          unsigned char  key_scan(void)
  25          {
  26   1          unsigned char i,j,k;
  27   1          k=0;
  28   1          i=3;
  29   1          while(i){
  30   2              i--;
  31   2              P2=(P2&0xc0)|key_scan_table[i];
  32   2              _nop_();
  33   2              j=P2;
  34   2              j=(~j)&0x3f;
  35   2              if(j&KEY_CONST)  k=k|j;
  36   2              }
  37   1          if(k){
  38   2              for(j=0;j<KEY_MAX;j++) {
  39   3                  if(k==key_table[j]) return (j);
  40   3                  }
  41   2              }
  42   1              //   如果没有键按下则清除
  43   1          key_dms10=0;
  44   1          key_step=0;
  45   1          key_bit_press=0;
  46   1          key_add_step=0;
  47   1          return 0;
  48   1      }
  49          
  50          
  51          //-----------------------------------------
  52          //-----------------------------------------
  53          unsigned char key_in(void)
  54          {
C51 COMPILER V7.06   KEY                                                                   02/05/2005 09:08:15 PAGE 2   

  55   1              unsigned char j;
  56   1              j=key_scan();
  57   1              if(!j)  return 0;              // have key_press
  58   1              if(!key_bit_press) {
  59   2                      if((j<9)&&(key_dms10>10)) {
  60   3                              key_bit_press=1;
  61   3                              }
  62   2      
  63   2                      if(j>8){
  64   3                              switch(key_step){
  65   4                                      case 0 :
  66   4                                              if(key_dms10>10) {
  67   5                                                   key_bit_press=1;
  68   5                                                   key_add_step++;
  69   5                                                   key_step=1;
  70   5                                                   }
  71   4                                              break;
  72   4                                      case 1 :
  73   4                                              if(key_dms10>120)       {
  74   5                                      key_bit_press=1;
  75   5                        key_add_step++;
  76   5                                                      key_step=2;
  77   5                                                      }
  78   4                                              break;
  79   4                                      case 2:
  80   4                                              if(key_dms10>20)        {
  81   5                                              key_bit_press=1;
  82   5                        if(key_add_step<23)  key_add_step++;
  83   5                                                      }
  84   4                                              break;
  85   4                                      default:        break;
  86   4                                      }
  87   3                              }
  88   2      
  89   2               return(j);
  90   2                       }
  91   1          else return(0);
  92   1      }
  93          
  94          void key_deal(void)
  95          {
  96   1              unsigned char i;
  97   1              i=key_in();
  98   1              if(!key_bit_press) return;
  99   1              if(!i)  return;
 100   1          //    dis_last_time=0;
 101   1              if(GROUND_LED)  GROUND_LED=0;    //    开背景灯
 102   1              switch(i){
 103   2                   case KEY_MODE:
 104   2                      mode_sub();
 105   2                   break;
 106   2                   case KEY_SET:
 107   2                      set_sub();//
 108   2                   break;
 109   2                   case KEY_ENTER:
 110   2                      enter_sub();
 111   2                   break;
 112   2                   case KEY_ESC:
 113   2                      esc_sub();
 114   2                   break;
 115   2                   case KEY_MODE_ENTER:
 116   2                      mode_enter_sub();
C51 COMPILER V7.06   KEY                                                                   02/05/2005 09:08:15 PAGE 3   

 117   2                   break;
 118   2                   case KEY_MODE_ESC:
 119   2                        mode_esc_sub();
 120   2                   break;
 121   2                   case KEY_UP:
 122   2                        up_sub();
 123   2                   break;
 124   2                   case KEY_DOWN:
 125   2                        down_sub();
 126   2                   break;
 127   2                   case KEY_NEXT:
 128   2                       next_sub();
 129   2                   break;
 130   2                   case KEY_BACK:
 131   2                       back_sub();
 132   2                   break;
 133   2                       case KEY_MODE_DOWN:
 134   2                       mode_down_sub();
 135   2                   break;
 136   2                       case KEY_MODE_UP:
 137   2                       mode_up_sub();
 138   2                   break;
 139   2               
 140   2                   default:   break;
 141   2                   }
 142   1      
 143   1      }
 144          
 145          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    273    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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