module.lst

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

LST
617
字号
 192   2                      FingerOff();
 193   2                              NowKey = NO_KEY;}}
 194          //2号键具有的功能,添加管理员
 195          void Add_Adm(void) 
 196          {
 197   1                      if(NOFINGER==Find_Finger())
 198   1                      {       AddFingerModule();//如果没有记录在(0,0)处,添加一个指纹到(0,0)处
 199   2                              NowKey = NO_KEY;
 200   2                              FingerOff();}
 201   1                      if(OK==Find_Finger())
 202   1                      {       /*相应语音提示*/
 203   2                              if(OK==Search_Super_Adm())
 204   2                              {       AddFinger_Adm();//增加一般管理员指纹信息
 205   3                                      NowKey = NO_KEY;
 206   3                                      DisplayWater();
 207   3                                      FingerOff();}
 208   2                              else    {   FingerOff();
 209   3                                                      NowKey = NO_KEY;}}}
 210          //查找高级管理员
 211          //返回值:
 212          //OK:找到对应的指纹信息
 213          //其他:出错了
 214          uchar Search_Super_Adm(void)
 215          {               if(!Add_Deal)
 216   1                      {       FingerOn();
 217   2                              CommBuf[0] = C_SEARCH_FINGER;//0x44搜索指纹
 218   2                      CommBuf[1] = 0;
 219   2                      CommBuf[2] = 0;
 220   2                      CommBuf[3] = 0;
 221   2                      CommBuf[4] = 0;//高级管理员
 222   2                              Clear_Uart_Variable();
 223   2                      SendCommand(C_COMMAND,5,CommBuf);//发送搜索命令 
 224   2                              //等待接收返回
 225   2                              Tc = 2;
 226   2                              while(!ReceiveOK&&Tc);
 227   2                              Clear_Uart_Variable();
 228   2                              if((SCC==CommBuf[CommBuf[3]+4])&&Tc)//数据包和校验判断 和 接收超时判断
 229   2                              {
 230   3                                      if((C_ANSWER==CommBuf[2])&&(0x01==CommBuf[4]))//正确
 231   3                                      {       Add_Deal = 1;
 232   4                                              Add_Deal2 = 1;}
 233   3                                      else{
 234   4                                              Add_Deal = 0;
 235   4                                              Add_Deal2 = 0;
 236   4                                              FingerOff();
 237   4                                              return FALSE;}}
 238   2                              else{
 239   3                                      Add_Deal = 0;
 240   3                                      Add_Deal2 = 0;
 241   3                      FingerOff();
C51 COMPILER V8.02   MODULE                                                                12/04/2008 06:31:13 PAGE 5   

 242   3                                      return FALSE;}}
 243   1                      //探测手指
 244   1                      if(Add_Deal2&&ReceiveOK)
 245   1                      {       Clear_Uart_Variable();
 246   2                              if(SCC==CommBuf[CommBuf[3]+4])//数据包和校验判断
 247   2                              {   if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_SEARCH_FINGER == CommBuf[4]))
 248   3                      {       //接收正确
 249   4                                                      switch(CommBuf[5])
 250   4                                                      {       //指纹处理成功
 251   5                                                              case ANSWER_OK://0X31
 252   5                                                                      /*提示声音*/
 253   5                                                                      Add_Deal2 = 0;
 254   5                                                                      Add_Deal3 = 1;
 255   5                                                                      break;
 256   5                                                              case ANSWER_OUT_TIME:
 257   5                                                                      FingerOff();
 258   5                                                                      return FALSE;   
 259   5                                                              case ANSWER_FAIL:
 260   5                                                              case ANSWER_NUMBER_E:
 261   5                                                                      FingerOff();
 262   5                                                                      return FALSE;}
 263   4                                                      if(Add_Deal2){
 264   5                                                              Add_Deal = 0;
 265   5                                                              Add_Deal2 = 0;
 266   5                                      FingerOff();            
 267   5                                                              return FALSE;}}else{
 268   4                                                      Add_Deal = 0;
 269   4                                                      Add_Deal2 = 0;
 270   4                                          FingerOff();
 271   4                                                      return FALSE;}} else{
 272   3                                      Add_Deal = 0;
 273   3                                      Add_Deal2 = 0;
 274   3                          FingerOff();
 275   3                                      return FALSE;}}
 276   1                      //等待搜索结果
 277   1                      if(Add_Deal3&&ReceiveOK)
 278   1                      {       Add_Deal3 = 0;
 279   2                              Add_Deal = 0;
 280   2                              if(SCC==CommBuf[CommBuf[3]+4])//数据包和校验判断
 281   2                              {   if((C_ANSWER == CommBuf[2])&&(C_SEARCH_FINGER == CommBuf[4]))
 282   3                      {//接收正确
 283   4                                              switch(CommBuf[5])
 284   4                                              {       //指纹处理成功
 285   5                                                      case ANSWER_SEARCH_OK:DisplayFinger();//提示按指纹
 286   5                                                              return OK;
 287   5                                                      case ANSWER_OUT_TIME:
 288   5                                      FingerOff();
 289   5                                                              return FALSE;
 290   5                                                      case ANSWER_FAIL:
 291   5                                                      case ANSWER_SEARCH_FAIL:
 292   5                                                              FingerOff();
 293   5                                                              return FALSE;}}}
 294   2                      FingerOff();}}
 295          //增加一般管理员指纹信息
 296          void AddFinger_Adm(void)
 297          {       static uchar i;
 298   1              static uchar AH;//字节号
 299   1              static uchar AL;//位号
 300   1              uchar t = 0;
 301   1                      if(!Add_Deal)
 302   1                      {   FingerOn();
 303   2                              BellOn();
C51 COMPILER V8.02   MODULE                                                                12/04/2008 06:31:13 PAGE 6   

 304   2                      DelayNmS(200);
 305   2                              BellOff();
 306   2                      //1 读取模块Flash
 307   2                      if(ReadFingerFlash(FingerRecord,sizeof(FingerRecord),0,0) != OK)
 308   2                      {       DisplayErr();
 309   3                              FingerOff();
 310   3                                              NowKey = NO_KEY;
 311   3                              return;}                                
 312   2                      //2 寻找下一个空位
 313   2                      for(i = 10;i<MAX_FINGER;i++)
 314   2                      {       AH = i/8;AL = i%8;
 315   3                              t = FingerRecord[AH]<<(7-AL);
 316   3                              t = t>>7;
 317   3                              if(0 == t)break;} //找到空位
 318   2                      if(i == MAX_FINGER)
 319   2                      {       //记录已满
 320   3                              DisplayErr();
 321   3                              FingerOff();
 322   3                                              NowKey = NO_KEY;
 323   3                              return;}
 324   2                              //发送ADD指令
 325   2                      CommBuf[0] = C_ADD_FINGER;
 326   2                      CommBuf[1] = 0;
 327   2                      CommBuf[2] = i;
 328   2                              Clear_Uart_Variable();
 329   2                      SendCommand(C_COMMAND,3,CommBuf);//发送增加指纹命令
 330   2                              //等待正确返回
 331   2                              Tc = 2;
 332   2                              while(!ReceiveOK&&Tc);
 333   2                              Clear_Uart_Variable();
 334   2                              if((SCC==CommBuf[CommBuf[3]+4])&&Tc)//数据包和校验判断 和 接收超时判断
 335   2                              {       if((C_ANSWER==CommBuf[2])&&(0x01==CommBuf[4]))
 336   3                                      {//返回正确
 337   4                                              //UARTSendByte(0xFF);
 338   4                                              Add_Deal = 1;
 339   4                                              Add_Deal2 = 1;}
 340   3                                      else{Add_Deal = 0;
 341   4                                              Add_Deal2 = 0;
 342   4                                              DisplayErr();
 343   4                              FingerOff();
 344   4                                              NowKey = NO_KEY;
 345   4                                              return;}}
 346   2                              else
 347   2                              {       Add_Deal = 0;
 348   3                                      Add_Deal2 = 0;
 349   3                                      DisplayErr();
 350   3                          FingerOff();
 351   3                                      NowKey = NO_KEY;
 352   3                                      return;}}
 353   1                      //接收第一次按手指指令
 354   1                      if(Add_Deal2&&ReceiveOK)
 355   1                      {       Clear_Uart_Variable();
 356   2                              if(SCC==CommBuf[CommBuf[3]+4])                                  //数据包和校验判断
 357   2                              {       if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_ADD_FINGER == CommBuf[4]))
 358   3                      {   //接收正确
 359   4                                              //UARTSendByte(0xFC);                                   
 360   4                                              switch(CommBuf[5])
 361   4                                              {       case ANSWER_OK:
 362   5                                                          BellOn();
 363   5                                  BellTimer = 6;//中断中关闭Bell
 364   5                                                              Add_Deal2 = 0;
 365   5                                                              Add_Deal3 = 1;
C51 COMPILER V8.02   MODULE                                                                12/04/2008 06:31:13 PAGE 7   

 366   5                                                              break;
 367   5                                                      case ANSWER_OUT_TIME:
 368   5                                                              DisplayOutTime();
 369   5                                      break;
 370   5                                                      case ANSWER_NUMBER_E:
 371   5                                                              DisplayFail();//增加失败
 372   5                                                              break;}
 373   4                                              if(Add_Deal2)
 374   4                                              {       Add_Deal = 0;
 375   5                                                      Add_Deal2 = 0;
 376   5                              FingerOff();
 377   5                                                      NowKey = NO_KEY;                                        
 378   5                                                      return;}}
 379   3                      else
 380   3                      {       Add_Deal = 0;
 381   4                                              Add_Deal2 = 0;
 382   4                                              DisplayErr();
 383   4                              FingerOff();
 384   4                                              NowKey = NO_KEY;                                        
 385   4                          return;}}
 386   2                              else
 387   2                              {       Add_Deal = 0;
 388   3                                      Add_Deal2 = 0;
 389   3                                      DisplayErr();
 390   3                          FingerOff();
 391   3                                      NowKey = NO_KEY;

⌨️ 快捷键说明

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