📄 module.lst
字号:
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 + -