module.lst

来自「程序是智能指纹锁的」· LST 代码 · 共 617 行 · 第 1/3 页

LST
617
字号
 392   3                                      return;}}
 393   1                      //接收第二次按手指
 394   1                      if(Add_Deal3&&ReceiveOK)
 395   1                      {       Add_Deal3 = 0;
 396   2                              Add_Deal = 0;
 397   2                              Clear_Uart_Variable();
 398   2                              if(SCC==CommBuf[CommBuf[3]+4])                                  //数据包和校验判断
 399   2                              {       if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
 400   3                      {//接收正确                                     
 401   4                                              switch(CommBuf[5])
 402   4                                              {       case ANSWER_OK:
 403   5                                                              DisplayOK();
 404   5                                                      //4 更改指纹记录
 405   5                                                              for(i = 0;i<MAX_FINGER;i++)
 406   5                                                              {       AH = i/8;AL = i%8;
 407   6                                                                      t = FingerRecord[AH]<<(7-AL);
 408   6                                                                      t = t>>7;
 409   6                                                                      if(0 == t)break;}//找到空位
 410   5                                                      FingerRecord[AH] |= 1<<AL;
 411   5                                                              t = WriteFingerFlash(FingerRecord,sizeof(FingerRecord),0,0);
 412   5                                                              UARTSendByte(t);
 413   5                                                      if(OK == t);else DisplayErr();
 414   5                                                              break;
 415   5                                                      case ANSWER_OUT_TIME:
 416   5                                                              DisplayOutTime();
 417   5                                      break;
 418   5                                                      case ANSWER_FAIL:
 419   5                                                      case ANSWER_NUMBER_E:
 420   5                                                              DisplayFail();//增加失败
 421   5                                                              break;}}
 422   3                      else DisplayErr();}
 423   2                              else DisplayErr();
 424   2                      FingerOff();
 425   2                              NowKey = NO_KEY;}}
 426          void AddFingerModule(void)
 427          {       static uchar i;
C51 COMPILER V8.02   MODULE                                                                12/04/2008 06:31:13 PAGE 8   

 428   1              static uchar AH;//字节号
 429   1              static uchar AL;//位号
 430   1              uchar t = 0;
 431   1                      if(!Add_Deal)
 432   1                              {FingerOn();
 433   2                              BellOn();
 434   2                      DelayNmS(200);
 435   2                              BellOff();
 436   2                      //1 读取模块Flash
 437   2                      if(ReadFingerFlash(FingerRecord,sizeof(FingerRecord),0,0) != OK)
 438   2                      {       DisplayErr();
 439   3                              FingerOff();
 440   3                                              NowKey = NO_KEY;
 441   3                              return;}                                
 442   2                      //2 寻找下一个空位
 443   2                      for(i = 0;i<MAX_FINGER;i++)
 444   2                      {       AH = i/8;
 445   3                              AL = i%8;
 446   3                              t = FingerRecord[AH]<<(7-AL);
 447   3                              t = t>>7;
 448   3                              if(0 == t)break;}//找到空位                             
 449   2                      if(i == MAX_FINGER)
 450   2                      {       //记录已满
 451   3                              DisplayErr();
 452   3                              FingerOff();
 453   3                                              NowKey = NO_KEY;
 454   3                              return;}
 455   2                              //发送ADD指令
 456   2                      CommBuf[0] = C_ADD_FINGER;
 457   2                      CommBuf[1] = 0;
 458   2                      CommBuf[2] = i;
 459   2                              Clear_Uart_Variable();
 460   2                      SendCommand(C_COMMAND,3,CommBuf);//发送增加指纹命令
 461   2                              //等待正确返回
 462   2                              Tc = 2;
 463   2                              while(!ReceiveOK&&Tc);
 464   2                              Clear_Uart_Variable();
 465   2      
 466   2                              if((SCC==CommBuf[CommBuf[3]+4])&&Tc)    //数据包和校验判断 和 接收超时判断
 467   2                              {       if((C_ANSWER==CommBuf[2])&&(0x01==CommBuf[4]))
 468   3                                      {       //返回正确
 469   4                                              //UARTSendByte(0xFF);
 470   4                                              Add_Deal = 1;
 471   4                                              Add_Deal2 = 1;}
 472   3                                      else{   
 473   4                                              Add_Deal = 0;
 474   4                                              Add_Deal2 = 0;
 475   4                                              DisplayErr();
 476   4                              FingerOff();
 477   4                                              NowKey = NO_KEY;
 478   4                                              return;}}
 479   2                              else{
 480   3                                      Add_Deal = 0;
 481   3                                      Add_Deal2 = 0;
 482   3                                      DisplayErr();
 483   3                          FingerOff();
 484   3                                      NowKey = NO_KEY;
 485   3                                      return;}}
 486   1                      //接收第一次按手指指令
 487   1                      if(Add_Deal2&&ReceiveOK)
 488   1                      {       Clear_Uart_Variable();
 489   2                              if(SCC==CommBuf[CommBuf[3]+4])                                  //数据包和校验判断
C51 COMPILER V8.02   MODULE                                                                12/04/2008 06:31:13 PAGE 9   

 490   2                              {   if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
 491   3                      {   //接收正确
 492   4                                              //UARTSendByte(0xFC);                                   
 493   4                                              switch(CommBuf[5])
 494   4                                              {       case ANSWER_OK:
 495   5                                                          BellOn();
 496   5                                  BellTimer = 6;//中断中关闭Bell
 497   5                                                              Add_Deal2 = 0;
 498   5                                                              Add_Deal3 = 1;
 499   5                                                              break;  
 500   5                                                      case ANSWER_OUT_TIME:
 501   5                                                              DisplayOutTime();
 502   5                                      break;  
 503   5                                                      case ANSWER_NUMBER_E:
 504   5                                                              DisplayFail();//增加失败
 505   5                                                              break;}
 506   4                                              if(Add_Deal2)
 507   4                                              {       Add_Deal = 0;
 508   5                                                      Add_Deal2 = 0;
 509   5                              FingerOff();
 510   5                                                      NowKey = NO_KEY;                                        
 511   5                                                      return;}}
 512   3                      else{
 513   4                                              Add_Deal = 0;
 514   4                                              Add_Deal2 = 0;
 515   4                                              DisplayErr();
 516   4                              FingerOff();
 517   4                                              NowKey = NO_KEY;                                        
 518   4                          return;}}
 519   2                              else{
 520   3                                      Add_Deal = 0;
 521   3                                      Add_Deal2 = 0;
 522   3                                      DisplayErr();
 523   3                          FingerOff();
 524   3                                      NowKey = NO_KEY;
 525   3                                      return;}}
 526   1                      //接收第二次按手指
 527   1                      if(Add_Deal3&&ReceiveOK)
 528   1                      {       Add_Deal3 = 0;
 529   2                              Add_Deal = 0;
 530   2                              Clear_Uart_Variable();
 531   2                              if(SCC==CommBuf[CommBuf[3]+4])                                  //数据包和校验判断
 532   2                              {   if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
 533   3                      {  //接收正确                                   
 534   4                                              switch(CommBuf[5])
 535   4                                              {       case ANSWER_OK:
 536   5                                                              DisplayOK();
 537   5                                                      //4 更改指纹记录
 538   5                                                              for(i = 0;i<MAX_FINGER;i++)
 539   5                                                              {       AH = i/8;
 540   6                                                                      AL = i%8;
 541   6                                                                      t = FingerRecord[AH]<<(7-AL);
 542   6                                                                      t = t>>7;
 543   6                                                                      if(0 == t) break;}//找到空位
 544   5                                                      FingerRecord[AH] |= 1<<AL;
 545   5                                                              t = WriteFingerFlash(FingerRecord,sizeof(FingerRecord),0,0);
 546   5                                                              UARTSendByte(t);
 547   5                                                      if(OK == t);else DisplayErr();
 548   5                                                              break;                                            
 549   5                                                              case ANSWER_OUT_TIME:
 550   5                                                              DisplayOutTime();
 551   5                                      break;
C51 COMPILER V8.02   MODULE                                                                12/04/2008 06:31:13 PAGE 10  

 552   5                                                      case ANSWER_FAIL:
 553   5                                                      case ANSWER_NUMBER_E:
 554   5                                                              DisplayFail();//增加失败
 555   5                                                              break;}}
 556   3                      else DisplayErr();}
 557   2                              else DisplayErr();
 558   2                      FingerOff();
 559   2                              NowKey = NO_KEY;}}
 560          void EmptyFingerModule(void)
 561          {       //1 指纹标识全部清零
 562   1              memset(FingerRecord,0,sizeof(FingerRecord));
 563   1              FingerOn();
 564   1                      BellOn();
 565   1              DelayNmS(200);
 566   1                      BellOff();
 567   1              //2 写入模块Flash中
 568   1              if(OK == WriteFingerFlash(FingerRecord,sizeof(FingerRecord),0,0));
 569   1              else{   DisplayErr();
 570   2                      FingerOff();
 571   2                      return;}
 572   1                      //3 清空指纹库
 573   1              if(OK == EmptyFinger())DisplayOK();
 574   1              else DisplayErr();
 575   1              FingerOff();}


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2113    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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