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

📄 key.lst

📁 内部HFGHGFHGFHGFHGFHGFHGFHGFHG
💻 LST
字号:
C51 COMPILER V7.50   KEY                                                                   05/11/2009 22:41:49 PAGE 1   


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

line level    source

   1          #include "config.h"
   2          
   3          #define  KEY_ON    0
   4          #define  KEY_OFF   1
   5          
   6          #define  KEY1 (1<<0)
   7          #define  KEY2 (1<<1)
   8          #define  KEY3 (1<<2)
   9          
  10          #define  NOKEY  (~(KEY1|KEY2|KEY3))
  11          
  12          uint8 KeyCode;           //按键码,确认按下以后赋值
  13          uint8 KeyStatus;         //按键扫描状态机变量
  14          uint8 KeyDone;           //的确有键按下标志位,1为有键
  15          
  16          uint8 KeyDownTime;       //按下计时
  17          uint8 KeyReleaseTime;    //释放计时
  18          
  19          void KeyScan(void);
  20          void KeyProcess(void);
  21          
  22          void KeyInit(void);
  23          
  24          
  25          
  26          void   KeyInit(void)
  27          {
  28   1          KeyCode = 0;
  29   1          KeyStatus = 0;
  30   1          KeyDone = 0;
  31   1          KeyDownTime = 0;
  32   1          KeyReleaseTime = 0;
  33   1      }
  34          
  35          void   KeyScan(void)
  36          {
  37   1          uint8 temp;
  38   1          
  39   1          temp = P2;
  40   1          temp = (temp & 0x07);
  41   1      
  42   1          switch(KeyStatus)
  43   1          {
  44   2              case 0:                  //等待是否有按键按下,如果有键按下就进入状态1
  45   2                  if( temp != 7 )
  46   2                  {
  47   3                      KeyStatus = 1;
  48   3                  }
  49   2                  break;
  50   2              case 1:                  //进行延时消抖,进入状态2再次判断
  51   2                  if( KeyDownTime > 2)
  52   2                  {
  53   3                      KeyStatus = 2;
  54   3                      KeyDownTime = 0;
  55   3                  }
C51 COMPILER V7.50   KEY                                                                   05/11/2009 22:41:49 PAGE 2   

  56   2                  break;
  57   2              case 2:                  //若检测到确实是按下了,读取键值,进入状态3;否则到状态0等待
  58   2                  if( temp != (KEY1|KEY2|KEY3) )
  59   2                  {
  60   3                      KeyCode = (KEY1|KEY2|KEY3) - temp;
  61   3                      KeyStatus = 3;
  62   3                      KeyDone = 1;
  63   3                  }
  64   2                  else
  65   2                  {
  66   3                      KeyStatus = 0;
  67   3                  }
  68   2                  break;
  69   2              case 3:                  //若按键释放,进入状态4
  70   2                  if( temp == 0x07 )
  71   2                  {
  72   3                      KeyStatus = 4;
  73   3                  }    
  74   2                  break;
  75   2              case 4:                  //延时消抖,进入状态5
  76   2                  if( KeyReleaseTime > 2 )
  77   2                  {
  78   3                      KeyStatus = 5;
  79   3                      KeyReleaseTime = 0;                        
  80   3                  }       
  81   2                  break;
  82   2              case 5:         //确实是按键释放了,进入状态0再次等待按键的按下;否则继续在状态4等待释放
  83   2                  if( temp == 0x07 )
  84   2                  {
  85   3                      KeyStatus = 0;
  86   3                      
  87   3                  }
  88   2                  else
  89   2                  {
  90   3                      KeyStatus = 4;
  91   3                  }
  92   2                  break;
  93   2              default:
  94   2                  break;
  95   2          }       
  96   1      }
  97          
  98          void   KeyProcess(void)
  99          {
 100   1          KeyScan();
 101   1          if( KeyDone != 0 )
 102   1          {   //判断是否有键按下
 103   2              KeyDone = 0;
 104   2              switch( KeyCode )
 105   2              {    
 106   3                  case KEY1:  //+键,下翻页功能
 107   3                      switch( DisValue_Status )
 108   3                      {
 109   4                          case DIS00_HMC: //显示时分秒
 110   4                              DisValue_Status = DIS00_YMD;    //+ 切换到年月日
 111   4                              break;
 112   4                          case DIS00_YMD:
 113   4                              DisValue_Status = DIS00_HMC;
 114   4                              break;
 115   4                          case 2:
 116   4                          
 117   4                              break;
C51 COMPILER V7.50   KEY                                                                   05/11/2009 22:41:49 PAGE 3   

 118   4                          case 3:
 119   4                          
 120   4                              break;
 121   4                          case 4:
 122   4                          
 123   4                              break;
 124   4                          case 5:
 125   4                          
 126   4                              break;
 127   4                          case 6:
 128   4                          
 129   4                              break;
 130   4                          default:
 131   4                              break;
 132   4                      }
 133   3                          
 134   3                      
 135   3                  
 136   3                      break;               
 137   3                  case KEY2:
 138   3                  
 139   3                  
 140   3                      break;               
 141   3                  case KEY3:
 142   3                  
 143   3                  
 144   3                      break;         
 145   3                  case (KEY1|KEY2):
 146   3                      break;
 147   3                  case (KEY2|KEY3):
 148   3                      break;
 149   3                  case (KEY1|KEY3):
 150   3                      break;
 151   3                  case (KEY1|KEY2|KEY3):
 152   3                      break;            
 153   3                  default:
 154   3                      break;           
 155   3              }
 156   2          }
 157   1      }
 158           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    140    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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