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

📄 key.lst

📁 set(key6) left(key5) right(key4) up(key3) down(key2) OK(key1) 功能一:时钟 时钟计时; 按下set(一次)键即可调时间
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   KEY                                                                   09/11/2008 08:45:57 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 DEBUG OBJECTEXTEND

line level    source

   1          #define SET             0x20
   2          #define LEFT            0x10
   3          #define RIGHT       0x08
   4          #define UP              0x04
   5          #define DOWN        0x02
   6          #define OK          0x01
   7          
   8          #include <reg51.h>
   9          extern unsigned char sec,min,hour;
  10          extern unsigned char code table[16]; // 字形数据
  11          extern unsigned char DispBuf[6];
  12          unsigned char sec1,min1,hour1;       //闹钟值
  13          unsigned char Alarmsec,Alarmmin,Alarmhour;
  14          unsigned char Alarm;
  15          bit p1,p2;                             //12.24时转换标志位
  16          
  17          unsigned char EditSec,EditMin,EditHour;
  18          extern unsigned char KeyVal;
  19          unsigned char CurKey,LastKey;
  20          unsigned char KeySts;
  21          void DisplayEdit()                     
  22          {
  23   1          DispBuf[0] = table[EditSec % 10];
  24   1          DispBuf[1] = table[EditSec / 10];
  25   1          DispBuf[2] = table[EditMin % 10];
  26   1          DispBuf[3] = table[EditMin / 10];
  27   1          DispBuf[4] = table[EditHour % 10];
  28   1          DispBuf[5] = table[EditHour / 10];
  29   1          DispBuf[6-KeySts] &= 0x7F;
  30   1      }  // 编辑期间的显示
  31          void DisplayEditAlarm()              //编辑闹钟期间的显示        
  32          {
  33   1          DispBuf[0] = table[Alarmsec % 10];
  34   1          DispBuf[1] = table[Alarmsec/ 10];
  35   1          DispBuf[2] = table[Alarmmin % 10];
  36   1          DispBuf[3] = table[Alarmmin / 10];
  37   1          DispBuf[4] = table[Alarmhour % 10];
  38   1          DispBuf[5] = table[Alarmhour / 10];
  39   1              DispBuf[12-KeySts] &= 0x7F;
  40   1      }
  41          void Copy()
  42          {
  43   1           sec =EditSec;
  44   1           min =EditMin;
  45   1           hour =EditHour;
  46   1      }  // 编辑值刷新当前时间
  47          void CopyAlarm()
  48          {
  49   1            sec1=Alarmsec;
  50   1            min1=Alarmmin;
  51   1            hour1=Alarmhour;
  52   1      }  // 编辑值刷新当前闹钟时间
  53          void KeyPro(void)
  54          {
  55   1      unsigned char KeyPressed;
C51 COMPILER V7.50   KEY                                                                   09/11/2008 08:45:57 PAGE 2   

  56   1      
  57   1          LastKey = CurKey;
  58   1          CurKey = KeyVal;
  59   1          KeyPressed = CurKey^LastKey;
  60   1      
  61   1          if(KeyPressed==0) return; //检测键的变化
  62   1          if(CurKey==0) return;//  键释放忽略
  63   1          switch(KeySts)
  64   1          {
  65   2              case 0:     // Set Key pressed while running
  66   2                  p1=p2=0;
  67   2                  if(KeyPressed==SET) 
  68   2                          {
  69   3                        KeySts++;
  70   3                                        
  71   3                              }
  72   2                                    EditSec = sec;
  73   2                        EditMin = min; 
  74   2                                EditHour = hour;
  75   2                  if(KeyPressed==UP)
  76   2                                    {
  77   3                          p1=1;
  78   3                        }
  79   2                              if(KeyPressed==DOWN)
  80   2                                    {
  81   3                         p2=1;
  82   3                        }
  83   2                                        break;        
  84   2      case 1:     // hourHi edit status;
  85   2                  switch(KeyPressed)
  86   2                  {
  87   3                              case SET:KeySts+=6; Alarmsec =sec1;Alarmmin=min1;Alarmhour=hour1;break;//进入闹钟设定状态
  88   3                  case RIGHT: KeySts++;       break;
  89   3                  case UP:  if(EditHour<13) EditHour += 10; 
  90   3                              else EditHour = 23;
  91   3                                     break;
  92   3                  case DOWN:  if(EditHour>10) EditHour -= 10;     
  93   3                                    else EditHour = 0;
  94   3                                    break;
  95   3                  case OK:    Copy();    
  96   3                                     KeySts=0;                
  97   3                                    break;             
  98   3                  }
  99   2                  break;
 100   2              
 101   2      case 2:     // hourLo edit status;
 102   2                  switch(KeyPressed)
 103   2                  {
 104   3                  case RIGHT: KeySts++;
 105   3                                      break;
 106   3                  case LEFT:  KeySts--;
 107   3                                      break;
 108   3                  case UP:    if(EditHour<23) EditHour++;    
 109   3                                      break;
 110   3                  case DOWN:  if(EditHour>0) EditHour--;
 111   3                                         break;
 112   3                  case OK:       Copy();    
 113   3                                        KeySts=0;                
 114   3                                        break;             
 115   3                  }
 116   2                  break;
 117   2              
C51 COMPILER V7.50   KEY                                                                   09/11/2008 08:45:57 PAGE 3   

 118   2      case 3:     // minHi edit status;
 119   2                  switch(KeyPressed)
 120   2                  {
 121   3                  case RIGHT: KeySts++;
 122   3                              break;
 123   3                  case LEFT:  KeySts--;
 124   3                              break;
 125   3                  case UP:    if(EditMin<49) EditMin+=10;
 126   3                              else EditMin = 59; 
 127   3                              break;
 128   3                  case DOWN:  if(EditMin>10) EditMin-=10;
 129   3                              else EditMin = 0;
 130   3                              break;
 131   3                  case OK:    Copy();    
 132   3                              KeySts=0;                
 133   3                              break;             
 134   3                  } break;
 135   2            case 4:     // minLo edit status;
 136   2                  switch(KeyPressed)
 137   2                  {
 138   3                  case RIGHT: KeySts++;
 139   3                              break;
 140   3                  case LEFT:  KeySts--;
 141   3                              break;
 142   3                  case UP:    if(EditMin<59) EditMin++;
 143   3                              break;
 144   3                  case DOWN:  if(EditMin>0) EditMin--;
 145   3                              break;
 146   3                  case OK:    Copy();    
 147   3                              KeySts=0;                
 148   3                              break;             
 149   3                  }
 150   2                  break;
 151   2              
 152   2           
 153   2      

⌨️ 快捷键说明

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