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

📄 lock.lst

📁 单片机实现4×4键盘及8位数码管显示构成的电子密码锁
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   LOCK                                                                  08/22/2007 22:27:56 PAGE 1   


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

line level    source

   1                                   #include <AT89X52.H> 
   2            
   3          unsigned char ps[]={1,2,3,4,5}; 
   4            
   5          unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7, 
   6                                        0xef,0xdf,0xbf,0x7f}; 
   7          unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 
   8                                         0x6d,0x7d,0x07,0x7f,0x6f, 
   9                                         0x77,0x7c,0x39,0x5e,0x79,0x71, 
  10                                         0x00,0x40,0x73,0xff}; 
  11          unsigned char dispbuf[8]={18,16,16,16,16,16,16,16}; 
  12          unsigned char dispcount; 
  13          unsigned char flashcount; 
  14          unsigned char temp; 
  15          unsigned char key; 
  16          unsigned char keycount; 
  17          unsigned char pslen=5; 
  18          unsigned char getps[6]; 
  19          bit keyoverflag; 
  20          bit errorflag; 
  21          bit rightflag; 
  22          unsigned int second3; 
  23          unsigned int aa,bb; 
  24          unsigned int cc; 
  25          bit okflag; 
  26          bit alarmflag; 
  27          bit hibitflag; 
  28          unsigned char oka,okb; 
  29            
  30            
  31          void main(void) 
  32          { 
  33   1        unsigned char i,j; 
  34   1        
  35   1        TMOD=0x01; 
  36   1        TH0=(65536-500)/256; 
  37   1        TL0=(65536-500)%256; 
  38   1        TR0=1; 
  39   1        ET0=1; 
  40   1        EA=1; 
  41   1        
  42   1        while(1) 
  43   1          { 
  44   2            P3=0xff; 
  45   2            P3_4=0; 
  46   2            temp=P3; 
  47   2            temp=temp & 0x0f; 
  48   2            if (temp!=0x0f) 
  49   2              { 
  50   3                for(i=10;i>0;i--) 
  51   3                for(j=248;j>0;j--); 
  52   3                temp=P3; 
  53   3                temp=temp & 0x0f; 
  54   3                if (temp!=0x0f) 
  55   3                  { 
C51 COMPILER V8.02   LOCK                                                                  08/22/2007 22:27:56 PAGE 2   

  56   4                    temp=P3; 
  57   4                    temp=temp & 0x0f;              
  58   4                    switch(temp) 
  59   4                      { 
  60   5                        case 0x0e: 
  61   5                          key=7; 
  62   5                          break; 
  63   5                        case 0x0d: 
  64   5                          key=8; 
  65   5                          break; 
  66   5                        case 0x0b: 
  67   5                          key=9; 
  68   5                          break; 
  69   5                        case 0x07: 
  70   5                          key=10; 
  71   5                          break; 
  72   5                      } 
  73   4                    temp=P3; 
  74   4                    P1_1=~P1_1; 
  75   4                    if((key>=0) && (key<10)) 
  76   4                      { 
  77   5                        if(keycount<6) 
  78   5                          { 
  79   6                            getps[keycount]=key; 
  80   6                            dispbuf[keycount+2]=19; 
  81   6                          } 
  82   5                        keycount++; 
  83   5                        if(keycount==6) 
  84   5                          { 
  85   6                            keycount=6; 
  86   6        
  87   6                          } 
  88   5                          else if(keycount>6) 
  89   5                            { 
  90   6                              keycount=6; 
  91   6                              keyoverflag=1;//key overflow                        
  92   6                            } 
  93   5                      } 
  94   4                      else if(key==12)//delete key 
  95   4                        { 
  96   5                          if(keycount>0) 
  97   5                            { 
  98   6                              keycount--; 
  99   6                              getps[keycount]=0; 
 100   6                              dispbuf[keycount+2]=16; 
 101   6                            } 
 102   5                            else 
 103   5                              { 
 104   6                                keyoverflag=1; 
 105   6                              } 
 106   5                        } 
 107   4                        else if(key==15)//enter key 
 108   4                          { 
 109   5                            if(keycount!=pslen) 
 110   5                              { 
 111   6                                errorflag=1; 
 112   6                                rightflag=0; 
 113   6                                second3=0; 
 114   6                              } 
 115   5                              else 
 116   5                                { 
 117   6                                  for(i=0;i<keycount;i++) 
C51 COMPILER V8.02   LOCK                                                                  08/22/2007 22:27:56 PAGE 3   

 118   6                                    { 
 119   7                                      if(getps[i]!=ps[i]) 
 120   7                                        { 
 121   8                                          i=keycount; 
 122   8                                          errorflag=1; 
 123   8                                          rightflag=0; 
 124   8                                          second3=0; 
 125   8                                          goto a; 
 126   8                                        } 
 127   7                                    } 
 128   6                                  errorflag=0; 
 129   6                                  rightflag=1; 
 130   6      a:                          i=keycount; 
 131   6                                } 
 132   5                          } 
 133   4                    temp=temp & 0x0f;              
 134   4                    while(temp!=0x0f) 
 135   4                      { 
 136   5                        temp=P3; 
 137   5                        temp=temp & 0x0f;              
 138   5                      } 
 139   4                    keyoverflag=0;
 140   4                  } 
 141   3              } 
 142   2        
 143   2            P3=0xff; 
 144   2            P3_5=0; 
 145   2            temp=P3; 
 146   2            temp=temp & 0x0f; 
 147   2            if (temp!=0x0f) 
 148   2              { 
 149   3                for(i=10;i>0;i--) 
 150   3                for(j=248;j>0;j--); 
 151   3                temp=P3; 
 152   3                temp=temp & 0x0f; 
 153   3                if (temp!=0x0f) 
 154   3                  { 
 155   4                    temp=P3; 
 156   4                    temp=temp & 0x0f;              
 157   4                    switch(temp) 
 158   4                      { 
 159   5                        case 0x0e: 
 160   5                          key=4; 
 161   5                          break; 
 162   5                        case 0x0d: 
 163   5                          key=5; 
 164   5                          break; 
 165   5                        case 0x0b: 
 166   5                          key=6; 
 167   5                          break; 
 168   5                        case 0x07: 
 169   5                          key=11; 
 170   5                          break; 
 171   5                      } 
 172   4                    temp=P3; 
 173   4                    P1_1=~P1_1; 
 174   4                    if((key>=0) && (key<10)) 
 175   4                      { 
 176   5                        if(keycount<6) 
 177   5                          { 
 178   6                            getps[keycount]=key; 
 179   6                            dispbuf[keycount+2]=19; 
C51 COMPILER V8.02   LOCK                                                                  08/22/2007 22:27:56 PAGE 4   

 180   6                          } 
 181   5                        keycount++; 
 182   5                        if(keycount==6) 
 183   5                          { 
 184   6                            keycount=6; 
 185   6                          } 
 186   5                          else if(keycount>6) 
 187   5                            { 
 188   6                              keycount=6; 
 189   6                              keyoverflag=1;//key overflow                        
 190   6                            } 
 191   5                      } 
 192   4                      else if(key==12)//delete key 
 193   4                        { 
 194   5                          if(keycount>0) 
 195   5                            { 
 196   6                              keycount--; 
 197   6                              getps[keycount]=0; 
 198   6                              dispbuf[keycount+2]=16; 
 199   6                            } 
 200   5                            else 
 201   5                              { 
 202   6                                keyoverflag=1; 
 203   6                              } 
 204   5                        } 
 205   4                        else if(key==15)//enter key 
 206   4                          { 
 207   5                            if(keycount!=pslen) 
 208   5                              { 
 209   6                                errorflag=1; 
 210   6                                rightflag=0; 
 211   6                                second3=0; 
 212   6                              } 
 213   5                              else 
 214   5                                { 
 215   6                                  for(i=0;i<keycount;i++) 
 216   6                                    { 
 217   7                                      if(getps[i]!=ps[i]) 
 218   7                                        { 
 219   8                                          i=keycount; 
 220   8                                          errorflag=1; 
 221   8                                          rightflag=0; 
 222   8                                          second3=0; 
 223   8                                          goto a4; 
 224   8                                        } 
 225   7                                    } 
 226   6                                  errorflag=0; 
 227   6                                  rightflag=1; 
 228   6      a4:                          i=keycount; 
 229   6                                } 
 230   5                          } 
 231   4                    temp=temp & 0x0f;              
 232   4                    while(temp!=0x0f) 
 233   4                      { 
 234   5                        temp=P3; 
 235   5                        temp=temp & 0x0f;              
 236   5                      } 
 237   4                    keyoverflag=0;
 238   4                  } 
 239   3              } 
 240   2        
 241   2            P3=0xff; 
C51 COMPILER V8.02   LOCK                                                                  08/22/2007 22:27:56 PAGE 5   

 242   2            P3_6=0; 
 243   2            temp=P3; 
 244   2            temp=temp & 0x0f; 
 245   2            if (temp!=0x0f) 
 246   2              { 
 247   3                for(i=10;i>0;i--) 
 248   3                for(j=248;j>0;j--); 
 249   3                temp=P3; 
 250   3                temp=temp & 0x0f; 
 251   3                if (temp!=0x0f) 
 252   3                  { 
 253   4                    temp=P3; 
 254   4                    temp=temp & 0x0f;              
 255   4                    switch(temp) 
 256   4                      { 
 257   5                        case 0x0e: 
 258   5                          key=1; 
 259   5                          break; 
 260   5                        case 0x0d: 
 261   5                          key=2; 
 262   5                          break; 
 263   5                        case 0x0b: 
 264   5                          key=3; 
 265   5                          break; 
 266   5                        case 0x07: 
 267   5                          key=12; 
 268   5                          break; 
 269   5                      } 
 270   4                    temp=P3; 
 271   4                    P1_1=~P1_1; 

⌨️ 快捷键说明

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