password.lst

来自「RZ-51V20 实例程序」· LST 代码 · 共 828 行 · 第 1/3 页

LST
828
字号
 528   2                      red=1;
 529   2                      bell=1;
 530   2                      //显示FFFFFFFF
 531   2                      write_com(0x01);
 532   2                      write_com(0x80);
 533   2                      for(count3=0;count3<16;count3++)
 534   2                              {
 535   3                                      write_date(table1[count3]);     //显示INPUT THE PASSCODE
 536   3                                      delay(5);
 537   3                              }
 538   2                      write_com(0x80+0x40);
 539   2                      for(count3=0;count3<16;count3++)
 540   2                              {
 541   3                                      write_date(table2[count3]);     //开机显示FFFFFFFF
 542   3                                      delay(5);
 543   3                              }
 544   2              }
 545   1      
 546   1      }
 547          //***********************************************定时0**********************************************
 548          void time_0() interrupt 1
 549          {       
 550   1      
 551   1              TH0=(65536-50000)/256;
C51 COMPILER V8.02   PASSWORD                                                              08/12/2012 20:55:13 PAGE 10  

 552   1              TL0=(65536-50000)%256;
 553   1      if(count4<8)
 554   1      {
 555   2              key_scan();
 556   2      }
 557   1      else
 558   1      {
 559   2              TR0=0;
 560   2              count4=0;
 561   2      }
 562   1      }
 563          
 564          //初始化函数
 565          void init()
 566          {       
 567   1      
 568   1              uchar i;
 569   1              lcden=0;
 570   1              write_com(0x38);                                        //打开显示模式设置
 571   1              write_com(0x0c);                                        //打开显示,光标等等设置未零
 572   1              write_com(0x06);                                        //当读或写一个字符后地址指针加一,且光标加一,当写一个字符后整频显示左移,
 573   1              write_com(0x01);                                        //清零指令
 574   1              write_com(0x80);                                        //指针所指位置
 575   1      
 576   1              //定时器初始化
 577   1              TMOD=0x11;                                                      //T0,T1工作方式1
 578   1              TH0=(65536-2000)/256;
 579   1              TL0=(65536-2000)%256;                           //T0初始化2MS
 580   1      
 581   1              TH1=(65536-50000)/256;
 582   1              TL1=(65536-50000)%256;                          //T1初始化50MS
 583   1      
 584   1              TR1=0;
 585   1              ET1=1;
 586   1              EA=1;
 587   1              TR0=0;
 588   1              ET0=1;
 589   1      
 590   1              count0=0;                                                       //初始没有密码输入,故为零
 591   1              enterflag=0;                                            //没有确认键按下
 592   1              mimaflag=0;                                                     //密码正确与否键先置零
 593   1                                              
 594   1              red=1;                                                          //红灯不亮
 595   1      //************密码存入EPROM中**********************************
 596   1              sda=1;
 597   1              delay(5);
 598   1              scl=1;
 599   1              delay(5);
 600   1              for(i=0;i<8;i++)
 601   1              {
 602   2                      write_add(i,0);
 603   2                      delay2(100);
 604   2              }
 605   1              for(i=0;i<8;i++)
 606   1              {
 607   2                      mima[i]=read_add(i);
 608   2                      delay(5);
 609   2              }
 610   1      
 611   1      }
 612          void main()
 613          {       rw=0;           
C51 COMPILER V8.02   PASSWORD                                                              08/12/2012 20:55:13 PAGE 11  

 614   1              init();
 615   1              write_com(0x80);                                                //指针所指位置
 616   1              for(count3=0;count3<16;count3++)
 617   1              {
 618   2                      write_date(table1[count3]);             //第一行显示INPUT THE PASSPORD:
 619   2                      delay(5);
 620   2              }
 621   1              write_com(0x80+0x40);
 622   1              for(count3=0;count3<16;count3++)
 623   1              {
 624   2                      write_date(table2[count3]);             //开机显示FFFFFFFF
 625   2                      delay(5);
 626   2              }
 627   1              while(1)
 628   1              {
 629   2                      key_scan();                                             //调用键盘扫描函数
 630   2                      lcd_display(); 
 631   2              }
 632   1                       
 633   1      }
 634          //**************************************************键盘扫描函数开始********************************
 635          
 636          //**********扫描第一行*****************************************************************************
 637          void key_scan() //         行扫描
 638          {
 639   1      P1=0xfe; 
 640   1      temp=P1;
 641   1      temp=temp&0xf0;
 642   1      if(temp!=0xf0)
 643   1      {
 644   2      delay(100);
 645   2      if(temp!=0xf0)
 646   2      {
 647   3      temp=P1;
 648   3      switch(temp)
 649   3      {
 650   4      case 0xee:
 651   4      key_manage1();
 652   4      break;
 653   4      
 654   4      case 0xde:
 655   4      key_manage2();
 656   4      break;
 657   4      
 658   4      case 0xbe:
 659   4      key_manage3();
 660   4      break;
 661   4      
 662   4      case 0x7e:
 663   4      key_manage4();
 664   4      break;
 665   4      }
 666   3      while(temp!=0xf0)
 667   3      {
 668   4      temp=P1;
 669   4      temp=temp&0xf0;
 670   4      }
 671   3      }
 672   2      }
 673   1      //**************************************************扫描第二行***********************************
 674   1      P1=0xfd; 
 675   1      temp=P1;
C51 COMPILER V8.02   PASSWORD                                                              08/12/2012 20:55:13 PAGE 12  

 676   1      temp=temp&0xf0;
 677   1      if(temp!=0xf0)
 678   1      {
 679   2      delay(100);
 680   2      if(temp!=0xf0)
 681   2      {
 682   3      temp=P1;
 683   3      switch(temp)
 684   3      {
 685   4      case 0xed:
 686   4      key_manage5();
 687   4      break;
 688   4      
 689   4      case 0xdd:
 690   4      key_manage6();
 691   4      break;
 692   4      
 693   4      case 0xbd:
 694   4      key_manage7();
 695   4      break;
 696   4      
 697   4      case 0x7d:
 698   4      key_manage8();
 699   4      break;
 700   4      }
 701   3      while(temp!=0xf0)
 702   3      {
 703   4      temp=P1;
 704   4      temp=temp&0xf0;
 705   4      }
 706   3      }
 707   2      }
 708   1      //*********************************************扫描第三行***********************************
 709   1      P1=0xfb; 
 710   1      temp=P1;
 711   1      temp=temp&0xf0;
 712   1      if(temp!=0xf0)
 713   1      {
 714   2      delay(100);
 715   2      if(temp!=0xf0)
 716   2      {
 717   3      temp=P1;
 718   3      switch(temp)
 719   3      {
 720   4      case 0xeb:
 721   4      key_manage9();
 722   4      break;
 723   4      
 724   4      case 0xdb:
 725   4      key_manage10();
 726   4      break;
 727   4      
 728   4      case 0xbb:
 729   4      key_manage11();
 730   4      break;
 731   4      
 732   4      case 0x7b:
 733   4      key_manage12();
 734   4      break;
 735   4      }
 736   3      while(temp!=0xf0)
 737   3      {
C51 COMPILER V8.02   PASSWORD                                                              08/12/2012 20:55:13 PAGE 13  

 738   4      temp=P1;
 739   4      temp=temp&0xf0;
 740   4      }
 741   3      }
 742   2      }
 743   1      
 744   1      //***************************************************扫描第四行****************************************
 745   1      P1=0xf7;
 746   1      temp=P1;
 747   1      temp=temp&0xf0;
 748   1      if(temp!=0xf0)
 749   1      {
 750   2      delay(100);
 751   2      if(temp!=0xf0)
 752   2      {
 753   3      temp=P1;
 754   3      switch(temp)
 755   3      {
 756   4      case 0xe7:
 757   4      key_manage13();
 758   4      break;
 759   4      
 760   4      case 0xd7:
 761   4      key_manage14();
 762   4      break;
 763   4      
 764   4      case 0xb7:
 765   4      key_manage15();
 766   4      break;
 767   4      
 768   4      case 0x77:
 769   4      key_manage16();
 770   4      break;
 771   4      }
 772   3      while(temp!=0xf0)
 773   3      {
 774   4      temp=P1;
 775   4      temp=temp&0xf0;
 776   4      }
 777   3      }
 778   2      }
 779   1      } 
 780          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1712    ----
   CONSTANT SIZE    =    188    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     67       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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