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

📄 386.lst

📁 C开发的报警程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -