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

📄 lock.lst

📁 单片机实现4×4键盘及8位数码管显示构成的电子密码锁
💻 LST
📖 第 1 页 / 共 2 页
字号:
 272   4                    if((key>=0) && (key<10)) 
 273   4                      { 
 274   5                        if(keycount<6) 
 275   5                          { 
 276   6                            getps[keycount]=key; 
 277   6                            dispbuf[keycount+2]=19; 
 278   6                          } 
 279   5                        keycount++; 
 280   5                        if(keycount==6) 
 281   5                          { 
 282   6                            keycount=6; 
 283   6                          } 
 284   5                          else if(keycount>6) 
 285   5                            { 
 286   6                              keycount=6; 
 287   6                              keyoverflag=1;//key overflow                        
 288   6                            } 
 289   5                      } 
 290   4                      else if(key==12)//delete key 
 291   4                        { 
 292   5                          if(keycount>0) 
 293   5                            { 
 294   6                              keycount--; 
 295   6                              getps[keycount]=0; 
 296   6                              dispbuf[keycount+2]=16; 
 297   6                            } 
 298   5                            else 
 299   5                              { 
 300   6                                keyoverflag=1; 
 301   6                              } 
 302   5                        } 
 303   4                        else if(key==15)//enter key 
C51 COMPILER V8.02   LOCK                                                                  08/22/2007 22:27:56 PAGE 6   

 304   4                          { 
 305   5                            if(keycount!=pslen) 
 306   5                              { 
 307   6                                errorflag=1; 
 308   6                                rightflag=0; 
 309   6                                second3=0; 
 310   6                              } 
 311   5                              else 
 312   5                                { 
 313   6                                  for(i=0;i<keycount;i++) 
 314   6                                    { 
 315   7                                      if(getps[i]!=ps[i]) 
 316   7                                        { 
 317   8                                          i=keycount; 
 318   8                                          errorflag=1; 
 319   8                                          rightflag=0; 
 320   8                                          second3=0; 
 321   8                                          goto a3; 
 322   8                                        } 
 323   7                                    } 
 324   6                                  errorflag=0; 
 325   6                                  rightflag=1; 
 326   6      a3:                          i=keycount; 
 327   6                                } 
 328   5                          } 
 329   4                    temp=temp & 0x0f;              
 330   4                    while(temp!=0x0f) 
 331   4                      { 
 332   5                        temp=P3; 
 333   5                        temp=temp & 0x0f;              
 334   5                      } 
 335   4                    keyoverflag=0;
 336   4                  } 
 337   3              } 
 338   2        
 339   2            P3=0xff; 
 340   2            P3_7=0; 
 341   2            temp=P3; 
 342   2            temp=temp & 0x0f; 
 343   2            if (temp!=0x0f) 
 344   2              { 
 345   3                for(i=10;i>0;i--) 
 346   3                for(j=248;j>0;j--); 
 347   3                temp=P3; 
 348   3                temp=temp & 0x0f; 
 349   3                if (temp!=0x0f) 
 350   3                  { 
 351   4                    temp=P3; 
 352   4                    temp=temp & 0x0f;              
 353   4                    switch(temp) 
 354   4                      { 
 355   5                        case 0x0e: 
 356   5                          key=0; 
 357   5                          break; 
 358   5                        case 0x0d: 
 359   5                          key=13; 
 360   5                          break; 
 361   5                        case 0x0b: 
 362   5                          key=14; 
 363   5                          break; 
 364   5                        case 0x07: 
 365   5                          key=15; 
C51 COMPILER V8.02   LOCK                                                                  08/22/2007 22:27:56 PAGE 7   

 366   5                          break; 
 367   5                      } 
 368   4                    temp=P3; 
 369   4                    P1_1=~P1_1; 
 370   4                    if((key>=0) && (key<10)) 
 371   4                      { 
 372   5                        if(keycount<6) 
 373   5                          { 
 374   6                            getps[keycount]=key; 
 375   6                            dispbuf[keycount+2]=19; 
 376   6                          } 
 377   5                        keycount++; 
 378   5                        if(keycount==6) 
 379   5                          { 
 380   6                            keycount=6; 
 381   6                          } 
 382   5                          else if(keycount>6) 
 383   5                            { 
 384   6                              keycount=6; 
 385   6                              keyoverflag=1;//key overflow                        
 386   6                            } 
 387   5                      } 
 388   4                      else if(key==12)//delete key 
 389   4                        { 
 390   5                          if(keycount>0) 
 391   5                            { 
 392   6                              keycount--; 
 393   6                              getps[keycount]=0; 
 394   6                              dispbuf[keycount+2]=16; 
 395   6                            } 
 396   5                            else 
 397   5                              { 
 398   6                                keyoverflag=1; 
 399   6                              } 
 400   5                        } 
 401   4                        else if(key==15)//enter key 
 402   4                          { 
 403   5                            if(keycount!=pslen) 
 404   5                              { 
 405   6                                errorflag=1; 
 406   6                                rightflag=0; 
 407   6                                second3=0; 
 408   6                              } 
 409   5                              else 
 410   5                                { 
 411   6                                  for(i=0;i<keycount;i++) 
 412   6                                    { 
 413   7                                      if(getps[i]!=ps[i]) 
 414   7                                        { 
 415   8                                          i=keycount; 
 416   8                                          errorflag=1; 
 417   8                                          rightflag=0; 
 418   8                                          second3=0; 
 419   8                                          goto a2; 
 420   8                                        } 
 421   7                                    } 
 422   6                                  errorflag=0; 
 423   6                                  rightflag=1; 
 424   6      a2:                          i=keycount; 
 425   6                                } 
 426   5                          } 
 427   4                    temp=temp & 0x0f;              
C51 COMPILER V8.02   LOCK                                                                  08/22/2007 22:27:56 PAGE 8   

 428   4                    while(temp!=0x0f) 
 429   4                      { 
 430   5                        temp=P3; 
 431   5                        temp=temp & 0x0f;              
 432   5                      } 
 433   4                    keyoverflag=0;
 434   4                  }                          
 435   3              } 
 436   2            
 437   2          } 
 438   1      } 
 439          void t0(void) interrupt 1 using 0 
 440          { 
 441   1        TH0=(65536-500)/256; 
 442   1        TL0=(65536-500)%256; 
 443   1        
 444   1        flashcount++; 
 445   1        if(flashcount==8) 
 446   1          { 
 447   2            flashcount=0; 
 448   2            P0=dispcode[dispbuf[dispcount]]; 
 449   2            P2=dispbit[dispcount]; 
 450   2            dispcount++; 
 451   2            if(dispcount==8) 
 452   2              { 
 453   3                dispcount=0; 
 454   3              } 
 455   2          } 
 456   1        
 457   1        if((errorflag==1) && (rightflag==0)) 
 458   1          { 
 459   2            bb++; 
 460   2            if(bb==800) 
 461   2              { 
 462   3                bb=0; 
 463   3                alarmflag=~alarmflag; 
 464   3              } 
 465   2            if(alarmflag==1)//sound alarm signal 
 466   2              { 
 467   3                P1_7=~P1_7; 
 468   3              } 
 469   2        
 470   2            aa++; 
 471   2            if(aa==800)//light alarm signal 
 472   2              { 
 473   3                aa=0; 
 474   3                P1_0=~P1_0; 
 475   3              } 
 476   2            second3++; 
 477   2            if(second3==6400) 
 478   2              { 
 479   3                second3=0; 
 480   3                errorflag=0; 
 481   3                rightflag=0; 
 482   3                alarmflag=0; 
 483   3                bb=0; 
 484   3                aa=0; 
 485   3              }      
 486   2          } 
 487   1          else if((errorflag==0) && (rightflag==1)) 
 488   1            { 
 489   2              P1_0=0; 
C51 COMPILER V8.02   LOCK                                                                  08/22/2007 22:27:56 PAGE 9   

 490   2              cc++; 
 491   2              if(cc<1000) 
 492   2                { 
 493   3                  okflag=1; 
 494   3                } 
 495   2                else if(cc<2000) 
 496   2                  { 
 497   3                    okflag=0; 
 498   3                  } 
 499   2                  else 
 500   2                    { 
 501   3                      errorflag=0; 
 502   3                      rightflag=0; 
 503   3                      P1_7=1; 
 504   3                      cc=0; 
 505   3                      oka=0; 
 506   3                      okb=0; 
 507   3                      okflag=0; 
 508   3                      P1_0=1; 
 509   3                    } 
 510   2              if(okflag==1) 
 511   2                { 
 512   3                  oka++; 
 513   3                  if(oka==2) 
 514   3                    { 
 515   4                      oka=0; 
 516   4                      P1_7=~P1_7; 
 517   4                    } 
 518   3                } 
 519   2                else 
 520   2                  { 
 521   3                    okb++; 
 522   3                    if(okb==3) 
 523   3                      { 
 524   4                        okb=0; 
 525   4                        P1_7=~P1_7; 
 526   4                      } 
 527   3                  } 
 528   2            } 
 529   1        
 530   1        if(keyoverflag==1) 
 531   1          { 
 532   2            P1_7=~P1_7; 
 533   2          } 
 534   1      } 
 535          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1343    ----
   CONSTANT SIZE    =     28    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     35    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      6    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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