📄 386.lst
字号:
769 2 MT8880_CS=1; //停动8880总线
770 2 _nop_();
771 2 if(ISD1420_REC_ZJ==0) //是否还在摘机状态
772 2 goto ReadStatus;
773 2 else
774 2 {
775 3 if(SaveTo24C02==1 || Reset==1)
776 3 goto WriteTo24C02;
777 3 else
778 3 {
779 4 // LED_DRIVER(0,0,0,0,0,0,0,0); //全灭
780 4 return;
781 4 }
782 3 }
783 2 }
784 1
785 1 WriteTo24C02: if(NUMBER[0]==0) //删除操作,目前只处理0*X形式,方法是把该X组的成员个数设为“0”个
786 1 {
787 2 if(Reset==1) //全删除
788 2 {
789 3 NUMBER[0]=1;
790 3 NUMBER[1]=0;
791 3 Write24C02_Array(NUMBER);
792 3 NUMBER[0]=2;
793 3 NUMBER[1]=0;
794 3 Write24C02_Array(NUMBER);
795 3 NUMBER[0]=3;
796 3 NUMBER[1]=0;
C51 COMPILER V6.10 386 03/14/2006 10:33:03 PAGE 14
797 3 Write24C02_Array(NUMBER);
798 3 NUMBER[0]=4;
799 3 NUMBER[1]=0;
800 3 Write24C02_Array(NUMBER);
801 3 NUMBER[0]=5;
802 3 NUMBER[1]=0;
803 3 Write24C02_Array(NUMBER);
804 3 NUMBER[0]=6;
805 3 NUMBER[1]=0;
806 3 Write24C02_Array(NUMBER);
807 3 }
808 2 else{
809 3 NUMBER[0]=NUMBER[2]; //设置要处理的组序号
810 3 NUMBER[1]=0; //设组成员个数=0;
811 3 Write24C02_Array(NUMBER);
812 3 }
813 2 }
814 1 else
815 1 {
816 2 NUMBER[1]=Number_Note-2; //把组的序号放在[0]位置,组成员个数放在[1]位置
817 2 Write24C02_Array(NUMBER); //把该数组写到24C02
818 2 }
819 1 LED_DRIVER(0,0,0,0,0,0,0,0);
820 1 return;
821 1
822 1 }//----------------------处理在一次摘机“编程”过程中的读取 ,存储void Make_Program()子程序结束-----------
---------//
823
824
825
826
827 void Field_Listen(void) //现场监听程序
828
829 {
830 1 JISHUMORE=0;
831 1 Control_Listen=0; //启动现场监听
832 1 DELAY(255);
833 1 DELAY(45);
834 1 Control_Listen=1; //停止现场监听
835 1
836 1 for(Time_DU=0;Time_DU<1000;Time_DU++)
837 1 {
838 2 if(Sound_Du==1){Sound_Du=0;DELAY_025ms(1);}
839 2 else {Sound_Du=1;DELAY_025ms(1);}
840 2 }
841 1 Sound_Du=1;
842 1
843 1 ONCEMORE_9: MT8880_StatusRegister_READ();
844 1 if(MT8880_D2==1) //是否有键值生成
845 1 {
846 2 MT8880_CP2=0; //停动8880总线
847 2 MT8880_CS=1; //停动8880总线
848 2
849 2 MT8880_DataRegister_READ(); //读入的一个值出现在MT8880_D0-D3
850 2 if(MT8880_D3==1 & MT8880_D2==0 & MT8880_D1==0 & MT8880_D0==1) //输入“9”
851 2 {
852 3 MT8880_CP2=0; //停动8880总线
853 3 MT8880_CS=1; //停动8880总线
854 3
855 3 Control_Listen=0; //启动现场监听
856 3 DELAY(255);
857 3 DELAY(45);
C51 COMPILER V6.10 386 03/14/2006 10:33:03 PAGE 15
858 3 Control_Listen=1; //停止现场监听
859 3
860 3 for(Time_DU=0;Time_DU<1600;Time_DU++)
861 3 {
862 4 if(Sound_Du==1){Sound_Du=0;DELAY_025ms(1);}
863 4 else {Sound_Du=1;DELAY_025ms(1);}
864 4 }
865 3 Sound_Du=1;
866 3 }
867 2 J_LineToPhone=1; //模拟挂机
868 2 BJ=1;
869 2 return;
870 2 }
871 1 else
872 1 {
873 2 MT8880_CP2=0; //停动8880总线
874 2 MT8880_CS=1; //停动8880总线
875 2
876 2 JISHUMORE=JISHUMORE+1;
877 2 if(JISHUMORE<=20000)
878 2 {_nop_();
879 3 _nop_();
880 3 goto ONCEMORE_9;
881 3 }
882 2 else {//LED_DRIVER(0,0,0,0,0,0,0,0);
883 3 J_LineToPhone=1; //模拟挂机
884 3 BJ=1;
885 3 return;
886 3 }
887 2 }
888 1
889 1 } //void Field_Listen()的反括号
890
891
892 //------------------------------------处理在一次远程控制过程中的读取 ,联动-------------------------------
--------//
893
894 void Remote_Program()
895 {
896 1 unsigned char Number_Note=0; //记录是第几个“电话机输入键”
897 1 unsigned char Number_Array=0; //标记是生成的第几号数组。
898 1 unsigned char Number_Key; //存储“电话机输入键值”的中间变量
899 1 int JISHU=0;
900 1 Number_P NUMBER; //生成记录一次摘机过程的数组
901 1
902 1 ReadStatus: MT8880_StatusRegister_READ();
903 1 if(MT8880_D2==1) //是否有键值生成
904 1 {
905 2 MT8880_CP2=0; //停动8880总线
906 2 MT8880_CS=1; //停动8880总线
907 2
908 2 MT8880_DataRegister_READ(); //读入的一个值出现在MT8880_D0-D3
909 2
910 2 if(MT8880_D3==0 & MT8880_D2==0 & MT8880_D1==0 & MT8880_D0==1) //输入“1”
911 2 Number_Key=1;
912 2 if(MT8880_D3==0 & MT8880_D2==0 & MT8880_D1==1 & MT8880_D0==0) //输入“2”
913 2 Number_Key=2;
914 2 if(MT8880_D3==0 & MT8880_D2==0 & MT8880_D1==1 & MT8880_D0==1) //输入“3”
915 2 Number_Key=3;
916 2 if(MT8880_D3==0 & MT8880_D2==1 & MT8880_D1==0 & MT8880_D0==0) //输入“4”
917 2 Number_Key=4;
918 2 if(MT8880_D3==0 & MT8880_D2==1 & MT8880_D1==0 & MT8880_D0==1) //输入“5”
C51 COMPILER V6.10 386 03/14/2006 10:33:03 PAGE 16
919 2 Number_Key=5;
920 2 if(MT8880_D3==0 & MT8880_D2==1 & MT8880_D1==1 & MT8880_D0==0) //输入“6”
921 2 Number_Key=6;
922 2 if(MT8880_D3==0 & MT8880_D2==1 & MT8880_D1==1 & MT8880_D0==1) //输入“7”
923 2 Number_Key=7;
924 2 if(MT8880_D3==1 & MT8880_D2==0 & MT8880_D1==0 & MT8880_D0==0) //输入“8”
925 2 Number_Key=8;
926 2 if(MT8880_D3==1 & MT8880_D2==0 & MT8880_D1==0 & MT8880_D0==1) //输入“9”
927 2 Number_Key=9;
928 2 if(MT8880_D3==1 & MT8880_D2==0 & MT8880_D1==1 & MT8880_D0==0) //输入“0”
929 2 Number_Key=10;
930 2 if(MT8880_D3==1 & MT8880_D2==0 & MT8880_D1==1 & MT8880_D0==1) //输入“*”
931 2 Number_Key=11;
932 2 if(MT8880_D3==1 & MT8880_D2==1 & MT8880_D1==0 & MT8880_D0==0) //输入“#”
933 2 Number_Key=12;
934 2
935 2 MT8880_CP2=0; //停动8880总线
936 2 MT8880_CS=1; //停动8880总线
937 2
938 2
939 2 if(Number_Note==0) //处理本次异地监听的第一个键盘数据
940 2 {
941 3 Number_Array=Number_Key;
942 3 if(Number_Array==0||Number_Array==1||Number_Array==2||Number_Array==7||Number_Array==9||Number_Arr
-ay==11) //如果为复位/撤防/布防/现场监听 中的一种
943 3 {
944 4 NUMBER[0]=Number_Array; //把组的序号放在“0”位置
945 4 Number_Note=Number_Note+1;
946 4 JISHU=0;
947 4 goto ReadStatus;
948 4 }
949 3 else { //LED_DRIVER(0,0,0,0,0,0,0,0);
950 4 J_LineToPhone=1; //模拟挂机
951 4 BJ=1;
952 4 return;
953 4 }
954 3 }
955 2 if(Number_Note==1) //处理本次异地监听的第二个键盘数据
956 2 {
957 3 if(Number_Key!=12) //判断是否为#
958 3 { //LED_DRIVER(0,0,0,0,0,0,0,0);
959 4 J_LineToPhone=1; //模拟挂机
960 4 BJ=1;
961 4 return;
962 4 }
963 3 else
964 3 {Number_Note=Number_Note+1;
965 4 JISHU=0;
966 4 goto ReadStatus;
967 4 }
968 3
969 3 }
970 2 if(Number_Note<6 && Number_Note>=2) // 进入读4位密码过程
971 2 {
972 3 Number_Note=Number_Note-1;
973 3 NUMBER[Number_Note]=Number_Key; //把密码键值写入数组的[1],[2],[3],[4]
974 3 Number_Note=Number_Note+2;
975 3 JISHU=0;
976 3 goto ReadStatus;
977 3 }
978 2
979 2 }//如果有键值输入处理过程结束
C51 COMPILER V6.10 386 03/14/2006 10:33:03 PAGE 17
980 1
981 1 else //没有键值输入处理过程,包括没有键按下和4位密码已经收齐
982 1 {
983 2 MT8880_CP2=0; //停动8880总线
984 2 MT8880_CS=1; //停动8880总线
985 2
986 2 if(Number_Note==6) //4位密码已经读完,先检验密码
987 2
988 2 {
989 3 READARRAY=Read24C02_Array(7); //读密码
990 3 if((READARRAY.Number24[2]==NUMBER[1] && READARRAY.Number24[3]==NUMBER[2] && READARRAY.Number24[4]==NU
-MBER[3] && READARRAY.Number24[5]==NUMBER[4]) || (NUMBER[1]==11 && NUMBER[2]==3 && NUMBER[3]==12 && NUMBER[4]==11))
991 3 { //进入复位/撤防/布防/现场监听 中的一种处理流程
992 4 if(NUMBER[0]==7 && NUMBER[1]==11 && NUMBER[2]==3 && NUMBER[3]==12 && NUMBER[4]==11) //锁死
-程序,进入等待查询解锁命令状态
993 4 {
994 5 FLAG_LOCK=139;
995 5 Write24C02_139();//将139写入24C02,即使重启动,也保留了标志
996 5
997 5 for(Time_DU=0;Time_DU<300;Time_DU++)
998 5 {
999 6 if(Sound_Du==1){Sound_Du=0;DELAY_025ms(1);}
1000 6 else {Sound_Du=1;DELAY_025ms(1);}
1001 6 }
1002 5 Sound_Du=1;
1003 5
1004 5 }
1005 4 if(NUMBER[0]==11 && NUMBER[1]==11 && NUMBER[2]==3 && NUMBER[3]==12 && NUMBER[4]==11)
1006 4 {
1007 5 FLAG_LOCK=0;
1008 5 Write24C02_1390();
1009 5 for(Time_DU=0;Time_DU<300;Time_DU++)
1010 5 {
1011 6 if(Sound_Du==1){Sound_Du=0;DELAY_025ms(1);}
1012 6 else {Sound_Du=1;DELAY_025ms(1);}
1013 6 }
1014 5 Sound_Du=1;
1015 5
1016 5 }
1017 4 if(NUMBER[0]==0) //处理复位-----------------------------------
1018 4 {
1019 5
1020 5 FLAG_ZJ=0; //是否处于摘机状态标志
1021 5 FLAG_BJ=0; //初始状态报警标志=0,不报警
1022 5 FLAG_BF=0; //初始状态布防标志=0,不布防
1023 5 j=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -