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

📄 module.lst

📁 this progam is used with e_lock,and so on.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   MODULE                                                                12/04/2008 15:12:02 PAGE 5   

 242   5                                                      case ANSWER_OUT_TIME:
 243   5                                                              DisplayOutTime();
 244   5                                      break;
 245   5      
 246   5                                                      case ANSWER_FAIL:
 247   5                                                      case ANSWER_SEARCH_FAIL:
 248   5                                                              DisplayFail();//增加失败
 249   5                                                              break; 
 250   5                                              }
 251   4      
 252   4                      }
 253   3                      else
 254   3                      {         
 255   4                                              DisplayErr();
 256   4                      }
 257   3                              }
 258   2                              else
 259   2                              {
 260   3                                      DisplayErr();
 261   3                              }
 262   2      
 263   2                      FingerOff();
 264   2                              NowKey = NO_KEY;                                                        
 265   2                      }
 266   1      }
 267          
 268          void AddFingerModule(void)
 269          {
 270   1              static unsigned char i;
 271   1              static unsigned char AH;//字节号
 272   1              static unsigned char AL;//位号
 273   1              unsigned char t = 0;
 274   1      
 275   1                      if(!Add_Deal)
 276   1                      {        
 277   2                      FingerOn();
 278   2      //                      BellOn();DelayNmS(200);BellOff();
 279   2                      //1 读取模块Flash
 280   2                      if(ReadFingerFlash(FingerRecord,sizeof(FingerRecord),0,0) != OK)
 281   2                      {
 282   3                              DisplayErr();
 283   3                              FingerOff();
 284   3                                              NowKey = NO_KEY;
 285   3                              return;
 286   3                      }                               
 287   2                      //2 寻找下一个空位
 288   2                      for(i = 0;i<MAX_FINGER;i++)
 289   2                      {
 290   3                              AH = i/8;
 291   3                              AL = i%8;
 292   3                              t = FingerRecord[AH]<<(7-AL);
 293   3                              t = t>>7;
 294   3                              if(0 == t)
 295   3                              {
 296   4                                      //找到空位
 297   4                                      break;
 298   4                              }
 299   3                      }                               
 300   2                      if(i == MAX_FINGER)
 301   2                      {
 302   3                              //记录已满
 303   3                              DisplayErr();
C51 COMPILER V7.06   MODULE                                                                12/04/2008 15:12:02 PAGE 6   

 304   3                              FingerOff();
 305   3                                              NowKey = NO_KEY;
 306   3                              return;
 307   3                      }
 308   2                              //发送ADD指令
 309   2                      CommBuf[0] = C_ADD_FINGER;
 310   2                      CommBuf[1] = 0;
 311   2                      CommBuf[2] = i;
 312   2              
 313   2                              Clear_Uart_Variable();
 314   2                      SendCommand(C_COMMAND,3,CommBuf);//发送增加指纹命令
 315   2      
 316   2                              //等待正确返回
 317   2                              Tc = 2;
 318   2                              while(!ReceiveOK&&Tc);
 319   2                              Clear_Uart_Variable();
 320   2      
 321   2                              if((SCC==CommBuf[CommBuf[3]+4])&&Tc)    //数据包和校验判断 和 接收超时判断
 322   2                              {
 323   3                                      if((C_ANSWER==CommBuf[2])&&(0x01==CommBuf[4]))
 324   3                                      {
 325   4                                              //返回正确
 326   4                                              //UARTSendByte(0xFF);
 327   4                                              Add_Deal = 1;
 328   4                                              Add_Deal2 = 1;  
 329   4                                      }
 330   3                                      else
 331   3                                      {       
 332   4                                              Add_Deal = 0;
 333   4                                              Add_Deal2 = 0;
 334   4                                              DisplayErr();
 335   4                              FingerOff();
 336   4                                              NowKey = NO_KEY;
 337   4                                              return;
 338   4                                      }
 339   3                              }
 340   2                              else
 341   2                              {
 342   3                                      Add_Deal = 0;
 343   3                                      Add_Deal2 = 0;
 344   3                                      DisplayErr();
 345   3                          FingerOff();
 346   3                                      NowKey = NO_KEY;
 347   3                                      return;
 348   3                              }
 349   2                      }
 350   1                      //接收第一次按手指指令
 351   1                      if(Add_Deal2&&ReceiveOK)
 352   1                      {
 353   2                              Clear_Uart_Variable();
 354   2                              if(SCC==CommBuf[CommBuf[3]+4])                                  //数据包和校验判断
 355   2                              {
 356   3                      if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
 357   3                      {
 358   4                          //接收正确
 359   4                                              //UARTSendByte(0xFC);                                   
 360   4                                              switch(CommBuf[5])
 361   4                                              {
 362   5                                                      case ANSWER_OK:
 363   5      //                                                  BellOn();
 364   5      //                          BellTimer = 6;//中断中关闭Bell
 365   5                                                              PLAY_A();
C51 COMPILER V7.06   MODULE                                                                12/04/2008 15:12:02 PAGE 7   

 366   5                                                              Add_Deal2 = 0;
 367   5                                                              Add_Deal3 = 1;
 368   5                                                              break;
 369   5      
 370   5                                                      case ANSWER_OUT_TIME:
 371   5                                                              DisplayOutTime();
 372   5                                      break;
 373   5      
 374   5                                                      case ANSWER_NUMBER_E:
 375   5                                                              DisplayFail();//增加失败
 376   5                                                              break;
 377   5                                              }
 378   4                                              if(Add_Deal2)
 379   4                                              {
 380   5                                                      Add_Deal = 0;
 381   5                                                      Add_Deal2 = 0;
 382   5                              FingerOff();
 383   5                                                      NowKey = NO_KEY;                                        
 384   5                                                      return;
 385   5                                              }
 386   4                      }
 387   3                      else
 388   3                      {
 389   4                                              Add_Deal = 0;
 390   4                                              Add_Deal2 = 0;
 391   4                                              DisplayErr();
 392   4                              FingerOff();
 393   4                                              NowKey = NO_KEY;                                        
 394   4                          return;
 395   4                      }                               
 396   3                              }
 397   2                              else
 398   2                              {
 399   3                                      Add_Deal = 0;
 400   3                                      Add_Deal2 = 0;
 401   3                                      DisplayErr();
 402   3                          FingerOff();
 403   3                                      NowKey = NO_KEY;
 404   3                                      return;
 405   3                              }               
 406   2                      }
 407   1      
 408   1                      //接收第二次按手指
 409   1                      if(Add_Deal3&&ReceiveOK)
 410   1                      {
 411   2                              Add_Deal3 = 0;
 412   2                              Add_Deal = 0;
 413   2                              Clear_Uart_Variable();
 414   2                              if(SCC==CommBuf[CommBuf[3]+4])                                  //数据包和校验判断
 415   2                              {
 416   3                      if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
 417   3                      {
 418   4                          //接收正确                                  
 419   4                                              switch(CommBuf[5])
 420   4                                              {
 421   5                                                      case ANSWER_OK:
 422   5                                                              DisplayOK();
 423   5      
 424   5                                                      //4 更改指纹记录
 425   5                                                              for(i = 0;i<MAX_FINGER;i++)
 426   5                                                              {
 427   6                                                                      AH = i/8;
C51 COMPILER V7.06   MODULE                                                                12/04/2008 15:12:02 PAGE 8   

 428   6                                                                      AL = i%8;
 429   6                                                                      t = FingerRecord[AH]<<(7-AL);
 430   6                                                                      t = t>>7;
 431   6                                                                      if(0 == t)
 432   6                                                                      {
 433   7                                                                              //找到空位
 434   7                                                                              break;
 435   7                                                                      }
 436   6                                                              }
 437   5                                                      FingerRecord[AH] |= 1<<AL;
 438   5                                                              t = WriteFingerFlash(FingerRecord,sizeof(FingerRecord),0,0);
 439   5                                                              UARTSendByte(t);
 440   5                                                      if(OK == t)
 441   5                                                      {
 442   6                                                              PLAY_A();
 443   6                                                      }
 444   5                                                              else
 445   5                                                              {
 446   6                                                                      
 447   6                                                              DisplayErr();                                                   
 448   6                                                              }
 449   5                                                              break;
 450   5      
 451   5                                                      case ANSWER_OUT_TIME:
 452   5                                                              DisplayOutTime();
 453   5                                      break;
 454   5      
 455   5                                                      case ANSWER_FAIL:
 456   5                                                      case ANSWER_NUMBER_E:
 457   5                                                              DisplayFail();//增加失败
 458   5                                                              break;
 459   5                                              }
 460   4                      }
 461   3                      else
 462   3                      {
 463   4                                              DisplayErr();                                   
 464   4                      }                               
 465   3                              }
 466   2                              else
 467   2                              {
 468   3                                      DisplayErr();
 469   3                              }
 470   2                              
 471   2                      FingerOff();
 472   2                              NowKey = NO_KEY;                                                
 473   2                      }
 474   1      }


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


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

⌨️ 快捷键说明

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