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

📄 keys.lst

📁 8051单片机对八位LED显示芯片以及温度传感器芯片DS1620的驱动程序。
💻 LST
字号:
C51 COMPILER V7.06   KEYS                                                                  08/04/2008 00:24:35 PAGE 1   


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

stmt level    source

   1          /**********************************************
   2          *   File: Keys.C
   3          *   Description: Tri-Angle  
   4          *   Created Date:  2007-10-01
   5          *   Last Modified: 2007-10-01
   6          *   Author: Jeffrey - Schicksal@126.com
   7          *   Notes: None
   8          **********************************************/
   9          //#include "Atmel/AT89X51.h"
  10          #include "SST/SST89x5x4.H"
  11          #include "INTRINS.H"
  12          #include "Keys.h"
  13          
  14          
  15          
  16          
  17          /**********************************************
  18          *   Function: void DelayMs(unsigned int i)
  19          *   Input Variables: unsigned int i
  20          *   Return Variables: void
  21          *   Usage: Delay Function
  22          **********************************************/
  23          void DelayMs(unsigned int i)  // Delay Function 1
  24          { 
  25   1        unsigned char j;
  26   1        for (; i!=0; i--)
  27   1          for (j=2000; j!=0; j--) {;}
  28   1      }
  29          
  30          /**********************************************
  31          *   Function: void SetBuzzer(unsigned char B)
  32          *   Input Variables: unsigned char B
  33          *   Return Variables: void
  34          *   Usage: Buzzer Driver
  35          **********************************************/
  36          void SetBuzzer(unsigned char B)
  37          {
  38   1              if(B>0x01)
  39   1                      return;                                 // 输入值超限
  40   1              Buzzer = B;                                     // 改变Buzzer状态
  41   1      }
  42          
  43          /**********************************************
  44          *   Function: unsigned char read_keys(void)
  45          *   Input Variables: void
  46          *   Return Variables: None
  47          *   Usage: Read keys
  48          **********************************************/
  49          unsigned char read_keys()
  50          {
  51   1              unsigned char keys;                             // 返回键值变量
  52   1              P1 = 0xff;                                              // 置高P1,准备读取
  53   1              keys = P1;                                              // 读取键值
  54   1              return keys;                                    // 返回键值
  55   1      }
C51 COMPILER V7.06   KEYS                                                                  08/04/2008 00:24:35 PAGE 2   

  56          
  57          extern volatile unsigned char time[4];
  58          extern volatile unsigned char alarm[2];
  59          volatile unsigned char flag=0;
  60          volatile unsigned char alarm_flag=1;
  61          volatile unsigned char change_timeflag=0;
  62          volatile unsigned char change_adjustflag=0;
  63          
  64          /**********************************************
  65          *   Function:void KeyProcess()
  66          *   Input Variables: void
  67          *   Return Variables: None
  68          *   Usage: key process
  69          **********************************************/
  70          void KeyProcess()
  71          {
  72   1      
  73   1        unsigned char Key, keyMODE, keySET, keyUP, keyDOWN;
  74   1        Key = read_keys();
  75   1        if (Key != 0x0f)
  76   1        {
  77   2          DelayMs(180);
  78   2          Key = read_keys();
  79   2          if (Key != 0x0f)
  80   2          {
  81   3            keyMODE = Key & 0x01;
  82   3            keySET =  Key & 0x08;
  83   3            keyUP =   Key & 0x04;
  84   3            keyDOWN = Key & 0x02;
  85   3            
  86   3              SetBuzzer(Buzzer_OFF);        //闹表不响
  87   3              alarm_flag=0;                // 取消闹表标示
  88   3            
  89   3            if (keyMODE==0)                // MODE键被按下
  90   3            {
  91   4               if (change_adjustflag==0)   // 当前是时钟模式
  92   4                 change_adjustflag=1;      // 改变为闹表模式
  93   4              else
  94   4                change_adjustflag=0;       // 改变为时钟模式
  95   4              change_timeflag=0;
  96   4            }
  97   3          
  98   3            if (keySET==0)                 // SET键被按下
  99   3            {
 100   4              if (change_adjustflag==0)    // 时钟模式
 101   4              {
 102   5                change_timeflag++;
 103   5                if (change_timeflag>=3)
 104   5                  change_timeflag=0;
 105   5              }
 106   4              else                         // 闹表模式
 107   4              {
 108   5                if (alarm_flag==0)
 109   5                {
 110   6                  alarm_flag=1;
 111   6                  change_timeflag=0;
 112   6                  flag=1;
 113   6                }
 114   5                else
 115   5                {
 116   6                  if (change_timeflag==0)
 117   6                  {
C51 COMPILER V7.06   KEYS                                                                  08/04/2008 00:24:35 PAGE 3   

 118   7                    if (flag==1)  // 进入修改闹钟程序
 119   7                    {
 120   8                      change_timeflag++;
 121   8                      flag=0;
 122   8                    }
 123   7                    else    // 退出闹钟修改程序
 124   7                    {
 125   8                      change_timeflag=0;
 126   8                      alarm_flag=0;
 127   8                    }
 128   7                  }  
 129   6                  else
 130   6                  {
 131   7                    change_timeflag++;
 132   7                    if (change_timeflag>=3)
 133   7                      change_timeflag=0;
 134   7                  }
 135   6                }
 136   5              }
 137   4            }
 138   3          
 139   3            if (keyUP==0)            // UP键被按下
 140   3            {
 141   4              if (change_adjustflag == 0)
 142   4              {
 143   5                // 调整时钟
 144   5                time[change_timeflag-1]++;
 145   5                if (time[1]==0xff)
 146   5                        {
 147   6                          time[1]=59;
 148   6                        }
 149   5      
 150   5                        if (time[0]==0xff)
 151   5                        {
 152   6                          time[0]=23;
 153   6                        }
 154   5      
 155   5                        if (time[3]>1)
 156   5                        {
 157   6                          time[3]=0;
 158   6                          time[2]++;
 159   6                        }
 160   5      
 161   5                        if (time[2]>=60)
 162   5                        { 
 163   6                          time[2]-=60;
 164   6                        }
 165   5                        if (time[1]>=60)
 166   5                        { 
 167   6                          time[1]-=60;
 168   6                        }
 169   5                        if (time[0]>=24)
 170   5                          time[0]-=24;  
 171   5      
 172   5              }
 173   4              else
 174   4              {
 175   5                // 调整闹表
 176   5                alarm[change_timeflag-1]++;
 177   5                if (time[1]==0xff)
 178   5                        {
 179   6                          time[1]=59;
C51 COMPILER V7.06   KEYS                                                                  08/04/2008 00:24:35 PAGE 4   

 180   6                        }
 181   5      
 182   5                        if (time[0]==0xff)
 183   5                        {
 184   6                          time[0]=23;
 185   6                        }
 186   5      
 187   5                        if (time[3]>1)
 188   5                        {
 189   6                          time[3]=0;
 190   6                          time[2]++;
 191   6                        }
 192   5      
 193   5                        if (time[2]>=60)
 194   5                        { 
 195   6                          time[2]-=60;
 196   6                        }
 197   5                        if (time[1]>=60)
 198   5                        { 
 199   6                          time[1]-=60;
 200   6                        }
 201   5                        if (time[0]>=24)
 202   5                          time[0]-=24; 
 203   5              }
 204   4            }  
 205   3          
 206   3            if (keyDOWN==0)          // DOWN键被按下
 207   3            {
 208   4               if (change_adjustflag == 0)
 209   4                      {
 210   5                // 调整时钟
 211   5                time[change_timeflag-1]--;
 212   5                          if (time[1]==0xff)
 213   5                        {
 214   6                          time[1]=59;
 215   6                        }
 216   5      
 217   5                        if (time[0]==0xff)
 218   5                        {
 219   6                          time[0]=23;
 220   6                        }
 221   5      
 222   5                        if (time[3]>1)
 223   5                        {
 224   6                          time[3]=0;
 225   6                          time[2]++;
 226   6                        }
 227   5      
 228   5                        if (time[2]>=60)
 229   5                        { 
 230   6                          time[2]-=60;
 231   6                        }
 232   5                        if (time[1]>=60)
 233   5                        { 
 234   6                          time[1]-=60;
 235   6                        }
 236   5                        if (time[0]>=24)
 237   5                          time[0]-=24; 
 238   5              }
 239   4              else
 240   4              {
 241   5                // 调整闹表
C51 COMPILER V7.06   KEYS                                                                  08/04/2008 00:24:35 PAGE 5   

 242   5                alarm[change_timeflag-1]--;
 243   5                  if (alarm[1]==0xff)
 244   5                                  alarm[1]=59;
 245   5                              if (alarm[0]==0xff)
 246   5                                  alarm[0]=23;
 247   5      
 248   5                              if (alarm[1]>=60)
 249   5                              {
 250   6                                  alarm[1]-=60;
 251   6                              }
 252   5                              if (alarm[0]>=24)
 253   5                                  alarm[0]-=24;
 254   5      
 255   5              }
 256   4            }
 257   3          }
 258   2        }
 259   1      }
 260          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    461    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   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 + -