📄 main.lst
字号:
558 2 key='M';
559 2 break;
560 2 case 0x40:
561 2 key='C';
562 2 break;
563 2 case 0xd0:
564 2 key='F';
565 2 break;
566 2 default:
567 2 break;
568 2 }
569 1 }
570
571 ///////////////////////////////////////////////////////////////////////////////
572 // 键盘处理
573 ///////////////////////////////////////////////////////////////////////////////
574 void key_proc()
575 {
576 1 COMDISABLE;
577 1
578 1 switch(key)
579 1 {
580 2 case '0':
581 2 case '1':
582 2 case '2':
583 2 case '3':
584 2 case '4':
585 2 case '5':
586 2 case '6':
587 2 case '7':
588 2 case '8':
589 2 case '9':
590 2 switch(matchmode)
591 2 {
592 3 case 0:
593 3 finger_work1to1(); // 1:1指纹正常操作
594 3 break;
595 3 case 1:
596 3 finger_work1ton(); // 1:N指纹正常操作
597 3 break;
598 3 case 2:
599 3 groupclass=key;
600 3 finger_work1tog(); // 1:G指纹正常操作
601 3 break;
602 3 default:
603 3 break;
604 3 }
605 2 break;
606 2 case 'U':
607 2 password_normal_work(); // 密码正常操作
608 2 break;
609 2 case 'M':
610 2 manager_work(); // 系统管理处理
611 2 break;
612 2 case 'D':
613 2 case 'F':
C51 COMPILER V7.07 MAIN 09/15/2005 14:57:53 PAGE 11
614 2 break;
615 2 default:
616 2 break;
617 2 }
618 1
619 1 COMENABLE;
620 1 }
621
622 ///////////////////////////////////////////////////////////////////////////////
623 // 指纹1:G比对用户操作处理
624 ///////////////////////////////////////////////////////////////////////////////
625 void finger_work1tog()
626 {
627 1 user_pass=FALSE;
628 1 Wait10ms();
629 1 Wait10ms();
630 1 if(GroupIdentify())
631 1 {
632 2 second=100;
633 2 sec_flag=0; // 保证韦根通信有足够的延时
634 2 Set_record();
635 2 user_pass=TRUE; // 用户通过比对
636 2 }
637 1 }
638 ///////////////////////////////////////////////////////////////////////////////
639 // 指纹1:N比对用户操作处理
640 ///////////////////////////////////////////////////////////////////////////////
641 void finger_work1ton()
642 {
643 1 user_pass=FALSE;
644 1 Wait10ms();
645 1 Wait10ms();
646 1 if(Identify())
647 1 {
648 2 second=100;
649 2 sec_flag=0; // 保证韦根通信有足够的延时
650 2 Set_record();
651 2 user_pass=TRUE; // 用户通过比对
652 2 }
653 1 }
654
655 ///////////////////////////////////////////////////////////////////////////////
656 // 指纹1:1比对用户操作处理
657 ///////////////////////////////////////////////////////////////////////////////
658 void finger_work1to1()
659 {
660 1 user_pass=FALSE;
661 1 ManageClass='G';
662 1 AppClass='F';
663 1
664 1 GLCD_ClearScreen ();
665 1 if(input_id_proc()) // 输入用户编号
666 1 {
667 2 Wait10ms();
668 2 Wait10ms();
669 2 if(Verify())
670 2 {
671 3 second=100;
672 3 sec_flag=0; // 保证韦根通信有足够的延时
673 3 Set_record();
674 3 user_pass=TRUE; // 用户通过比对
675 3 }
C51 COMPILER V7.07 MAIN 09/15/2005 14:57:53 PAGE 12
676 2 }
677 1 }
678
679 ///////////////////////////////////////////////////////////////////////////////
680 // 密码用户操作处理
681 ///////////////////////////////////////////////////////////////////////////////
682 void password_normal_work()
683 {
684 1 user_pass=FALSE;
685 1 ManageClass='G';
686 1 AppClass='P';
687 1
688 1 if(pass_proc())
689 1 {
690 2 if(Verify())
691 2 {
692 3 sec_flag=0; // 保证韦根通信有足够的延时
693 3 Set_record();
694 3 user_pass=TRUE; // 用户通过比对
695 3 }
696 2 }
697 1 }
698
699 ///////////////////////////////////////////////////////////////////////////////
700 // 系统管理处理过程
701 ///////////////////////////////////////////////////////////////////////////////
702 void manager_work()
703 {
704 1 uchar ucManagerNum;
705 1
706 1 ManageClass='M';
707 1 AppClass='F';
708 1
709 1 ucManagerNum=0;
710 1
711 1 ucManagerNum = Get_manager_num(); // 获取管理员用户数目
712 1 Menu_state=0x10;
713 1
714 1 if(ucManagerNum > 0) // 管理用户已注册必须通过指纹
715 1 {
716 2 GLCD_ClearScreen ();
717 2 if(input_id_proc()) // 输入用户编号
718 2 {
719 3 Wait10ms();
720 3 Wait10ms();
721 3
722 3 managemode=TRUE; // 管理操作标志
723 3
724 3 if(!Verify())
725 3 {
726 4 managemode=FALSE; // 非管理操作标志
727 4 return; // 管理员指纹匹配失败返回
728 4 }
729 3 }
730 2 else
731 2 {
732 3 managemode=TRUE; // 管理操作标志
733 3 return;
734 3 }
735 2 }
736 1
737 1 key=0; // 无键盘输入
C51 COMPILER V7.07 MAIN 09/15/2005 14:57:53 PAGE 13
738 1 Menu_process(); // 菜单处理
739 1 sec_flag=0; // 保证韦根通信有足够的延时
740 1
741 1 return; // 进入具体菜单处理
742 1 }
743
744 ///////////////////////////////////////////////////////////////////////////////
745 // 看门狗
746 ///////////////////////////////////////////////////////////////////////////////
747 void Rstwdt()
748 {
749 1 WDT_CONTR=0x34;
750 1 }
751
752 ///////////////////////////////////////////////////////////////////////////////
753 // 显示公司信息
754 ///////////////////////////////////////////////////////////////////////////////
755 void DispLogo()
756 {
757 1 GLCD_ClearScreen ();
758 1 reverse=0;
759 1 GLCD_Locate(0,16);
760 1 dprintf(" 杭州浩普信息",14);
761 1 GLCD_Locate(0,32);
762 1 dprintf(" www.chinahope",14);
763 1 GLCD_Locate(0,48);
764 1 dprintf(" .com.cn",11);
765 1 }
766
767 ///////////////////////////////////////////////////////////////////////////////
768 // 系统参数初始化
769 ///////////////////////////////////////////////////////////////////////////////
770 void ParaInit()
771 {
772 1 idata uchar temp;
773 1
774 1 DISABLE; // 禁止中断
775 1 Read_Para(); // 读各种设置参数
776 1 ENABLE; // 开启中断
777 1
778 1 wieformat=Para_ee.Actual_para->Wiegand_format;
779 1 if(wieformat<0 || wieformat>3)
780 1 {
781 2 wieformat=0x00; // 缺省为考勤模式00bit
782 2 }
783 1
784 1 decaddr=Para_ee.Actual_para->Machine_addr;
785 1 if((decaddr==0)||(decaddr==0xff))
786 1 {
787 2 decaddr=1; // 缺省设备地址为1
788 2 }
789 1
790 1 temp=decaddr&0xF0;
791 1 temp=temp>>4;
792 1 haddr=Hex_ascii(temp); // ASC设备地址高位
793 1 temp=decaddr&0x0F;
794 1 laddr=Hex_ascii(temp); // ASC设备地址低位
795 1
796 1 areaaddr=Para_ee.Actual_para->Area_addr;
797 1 if(areaaddr>=240)
798 1 {
799 2 areaaddr=1; // 缺省分组地址为1
C51 COMPILER V7.07 MAIN 09/15/2005 14:57:53 PAGE 14
800 2 }
801 1
802 1 Security_level=Para_ee.Actual_para->Secu_class;
803 1 if(Security_level>4 || Security_level<0)
804 1 {
805 2 Security_level=3; // 缺省安全等级为3
806 2 }
807 1
808 1 matchmode=Para_ee.Actual_para->Match_mode;
809 1 if(matchmode>2 || matchmode<0)
810 1 {
811 2 matchmode=0; // 缺省比对模式为1:1
812 2 }
813 1
814 1 lockmode=Para_ee.Actual_para->Lock_para;
815 1 if(lockmode>2 || lockmode<0)
816 1 {
817 2 lockmode=0; // 缺省锁控为双锁双动
818 2 }
819 1
820 1 baudrate=Para_ee.Actual_para->Baudrate;
821 1 if(baudrate>5 || baudrate<0)
822 1 {
823 2 baudrate=1; // 缺省波特率9600
824 2 }
825 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1767 ----
CONSTANT SIZE = 42 ----
XDATA SIZE = 945 ----
PDATA SIZE = ---- ----
DATA SIZE = 80 ----
IDATA SIZE = 42 6
BIT SIZE = 17 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -