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

📄 alarm.lst

📁 该程序完成了c8051外围电路的驱动和串口协议的编写。希望能给大家学习51单片机带来帮助
💻 LST
📖 第 1 页 / 共 4 页
字号:
 638   5                                                      return;
 639   5                                              }
 640   4                                              else 
 641   4                                              {
 642   5                                                      AlarmModule.uchAlarmStatus[uchChannel - 1] = 0;
 643   5                                              }
 644   4                                      }
 645   3                              }
 646   2                              break;
 647   2      
 648   2                      default:
 649   2                              break;
 650   2              }
 651   1      }
 652          
 653          //--------------------------------------------------------------------------------------
 654          //函数名称:void JudgeBypassAlarmStatus(unsigned char uchChannel)
 655          //功    能:判断旁路状态对报警状态的影响         
 656          //输入参数:通道号
 657          //返    回:无
 658          //完成日期:4/16/2007
 659          //---------------------------------------------------------------------------------------
 660          void JudgeBypassAlarmStatus(unsigned char uchChannel)
 661          {
 662   1              if (AlarmModule.uchSystemBypassStatus[uchChannel - 1] == 0xff)
 663   1              {
 664   2                      return;         
 665   2              }
 666   1              else if (AlarmModule.uchSystemBypassStatus[uchChannel - 1] == 0x00)
 667   1              {
 668   2                      AlarmModule.uchAlarmStatus[uchChannel - 1] &= 0x00;             
 669   2              }
C51 COMPILER V7.10   ALARM                                                                 09/18/2008 14:09:31 PAGE 12  

 670   1              else if (AlarmModule.uchSystemBypassStatus[uchChannel - 1] == 0x01)
 671   1              {
 672   2                      AlarmModule.uchAlarmStatus[uchChannel - 1] &= 0xf9;     
 673   2              }
 674   1              else if (AlarmModule.uchSystemBypassStatus[uchChannel - 1] == 0x02)
 675   1              {
 676   2                      AlarmModule.uchAlarmStatus[uchChannel - 1] &= 0xf6;     
 677   2              }
 678   1              else 
 679   1              {
 680   2                      return;
 681   2              }
 682   1      }
 683          
 684          
 685          //--------------------------------------------------------------------------------------------------------
             ---------
 686          //函数名称:void AlarmIOControl(unsigned char uchChannel, unsigned char uchAlarmStatus, unsigned char uchO
             -KStatus)
 687          //功    能:由各种状态的判断得到报警控制输出供三冗余或43使用      
 688          //输入参数:通道号,报警状态、 OK状态
 689          //返    回:无
 690          //完成日期:4/12/2007
 691          //--------------------------------------------------------------------------------------------------------
             ---------
 692          void AlarmIOControl(unsigned char uchChannel, unsigned char uchAlarmStatus, unsigned char uchOKStatus)
 693          {               
 694   1              if (uchOKStatus == 1)
 695   1          {
 696   2              SetNotOKIOControl(uchChannel);
 697   2          }   
 698   1          else if ( uchOKStatus == 0 )
 699   1              {
 700   2                      if (uchAlarmStatus == 0x00)
 701   2                      {
 702   3                      SetOKIOControl(uchChannel);
 703   3                      }
 704   2                  else if ((uchAlarmStatus == 0x04) || (uchAlarmStatus == 0x02))
 705   2                  {
 706   3                      SetAlertIOControl(uchChannel);
 707   3                  }
 708   2                  else if ((uchAlarmStatus == 0x0c) || (uchAlarmStatus == 0x03))
 709   2                  {
 710   3                      SetDangerIOControl(uchChannel);
 711   3                  }
 712   2              }
 713   1      }
 714          
 715          //--------------------------------------------------------------------------------------
 716          //函数名称:void SetPercentValueALM(unsigned char uchChannel, int iMeasurePercent)
 717          //功    能:设置测量的比例值到报警模块   
 718          //输入参数:通道号
 719          //返    回:无
 720          //完成日期:4/16/2007
 721          //---------------------------------------------------------------------------------------
 722          void SetPercentValueALM(unsigned char uchChannel, int iMeasurePercent)
 723          {
 724   1              if (iMeasurePercent >= 5940)
 725   1              {
 726   2                      iMeasurePercent = 5940;
 727   2              }
 728   1              else if (iMeasurePercent <= -1250)
C51 COMPILER V7.10   ALARM                                                                 09/18/2008 14:09:31 PAGE 13  

 729   1              {
 730   2                      iMeasurePercent = -1250;
 731   2              }
 732   1              else
 733   1              {
 734   2                      ;
 735   2              }
 736   1              
 737   1              AlarmModule.iMeasurePercent[uchChannel - 1] = iMeasurePercent;
 738   1      
 739   1      }
 740          
 741          //--------------------------------------------------------------------------------------
 742          //函数名称:void SetAlertTypeStatusALM(unsigned char uchChannel, unsigned char uchAlertType)
 743          //功    能:将报警类型的状态设置到报警模块中,以供报警类选择使用         
 744          //输入参数:通道号,报警类型
 745          //返    回:无
 746          //完成日期:4/16/2007
 747          //作    者:佟文杰
 748          //---------------------------------------------------------------------------------------
 749          void SetAlertTypeStatusALM(unsigned char uchChannel, unsigned char uchAlertType)
 750          {
 751   1              AlarmModule.uchAlertTypeStatus[uchChannel - 1] = uchAlertType;
 752   1      }
 753          
 754          //--------------------------------------------------------------------------------------
 755          //函数名称:void SetAfreshConfigFlagAlarm(unsigned char uchChannel,unsigned char AfreshConfigFlag)
 756          //功    能:将重新配置参数的标志设置到报警模块
 757          //输入参数:通道号,重新配置参数的标志
 758          //返    回:无
 759          //完成日期:4/16/2007
 760          //作    者:佟文杰
 761          //---------------------------------------------------------------------------------------
 762          void SetAfreshConfigFlagAlarm(unsigned char uchChannel,unsigned char AfreshConfigFlag)
 763          {
 764   1              AlarmModule.uchAfreshConfigFlag[uchChannel - 1] = AfreshConfigFlag;
 765   1      }
 766          
 767          //--------------------------------------------------------------------------------------
 768          //函数名称:void AlarmModuleProcess(void)
 769          //功    能:报警模块数据的处理    
 770          //输入参数:通道号
 771          //返    回:无
 772          //完成日期:4/16/2007
 773          //---------------------------------------------------------------------------------------
 774          void AlarmModuleProcess(unsigned char uchChannel)
 775          {               
 776   1              StopHeartBeat();
 777   1              SetHeartbeatALM(uiHeartbeatValue);
 778   1              StartHeartBeat();
 779   1              switch(AlarmModule.uchChannelType[uchChannel - 1])
 780   1              {
 781   2                      case 13:                          //加速度输入   加速度输出
 782   2                      case 14:                          //加速度输入   速度输出
 783   2                      case 15:                          //加速度输入   位移输出
 784   2                      case 16:                          //速度输入     速度输出
 785   2                      case 17:                          //速度输入     位移输出
 786   2                      case 18:                          //位移输入     位移输出
 787   2                      case 21:                          //涡流+速度   输出复合式振动
 788   2                      case 22:                          //LVDT输入     机壳膨胀输出
 789   2                      case 28:              //HHH
 790   2                              if (AlarmModule.uchEnable[uchChannel - 1] == 0) 
C51 COMPILER V7.10   ALARM                                                                 09/18/2008 14:09:31 PAGE 14  

 791   2                              {
 792   3                                      OutputCurrentValue(uchChannel, 400);
 793   3                                      AlarmIOControl(uchChannel, 0x00, 0);    //通道Disable 通道OK,无报警0x00  输出4mA
 794   3                                      AlarmModule.uchLEDAlarmStatus[uchChannel - 1] = 0x00;
 795   3                                      SetAlarmStatusMain(uchChannel, 0x00);
 796   3                                      SetAlarmStatusCOMM(uchChannel, 0x00);                     
 797   3                              }
 798   2                              else if (AlarmModule.uchOKStatus[uchChannel - 1] != 0)
 799   2                              {
 800   3                                      JudgeAlarmStatus(uchChannel);
 801   3                                      JudgeBypassAlarmStatus(uchChannel);                      //20080313
 802   3                                      OutputCurrentValue(uchChannel, 300);                    //通道不OK,输出3mA             
 803   3                                      SetAlarmStatusMain(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1]);
 804   3                                      AlarmIOControl(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1], 1);
 805   3                                      SetAlarmStatusCOMM(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1]);             
 806   3                                      AlarmModule.uchLEDAlarmStatus[uchChannel - 1] = AlarmModule.uchAlarmStatus[uchChannel - 1];
 807   3                              }
 808   2                              else if (AlarmModule.uchOKStatus[uchChannel - 1] == 0)  
 809   2                              {
 810   3                                      JudgeAlarmStatus(uchChannel);
 811   3                                      JudgeBypassAlarmStatus(uchChannel);
 812   3                                      
 813   3                                  if (AlarmModule.uchAfreshConfigFlag[uchChannel - 1] == 0)
 814   3                                      {
 815   4                                              if (AlarmModule.uchChannelNotoktoOkFlag[uchChannel - 1] == 1)
 816   4                                              {
 817   5                                                      OutputCurrentValue(uchChannel, (((float)AlarmModule.iMeasurePercent[uchChannel - 1] * 16) / 50 + 400
             -));
 818   5                                              }       
 819   4                                      }
 820   3                                      else if (AlarmModule.uchAfreshConfigFlag[uchChannel - 1] == 1)
 821   3                                      {
 822   4                                              AlarmModule.uchAfreshConfigStartOutCurrentCount[uchChannel - 1]++;
 823   4                                              if (AlarmModule.uchAfreshConfigStartOutCurrentCount[uchChannel - 1] == 5)
 824   4                                              {
 825   5                                                      AlarmModule.uchAfreshConfigFlag[uchChannel - 1] = 0;
 826   5                                                      AlarmModule.uchAfreshConfigStartOutCurrentCount[uchChannel - 1] = 0;
 827   5                                              }
 828   4                                      }
 829   3                                      else
 830   3                                      {
 831   4                                              if (AlarmModule.uchChannelNotoktoOkFlag[uchChannel - 1] == 1)
 832   4                                              {
 833   5                                                      OutputCurrentValue(uchChannel, (((float)AlarmModule.iMeasurePercent[uchChannel - 1] * 16) / 50 + 400
             -));
 834   5                                              }       
 835   4                                      }         
 836   3                                      //配置参数后的电流抑制                          
 837   3                                      AlarmModule.uchLEDAlarmStatus[uchChannel - 1] = AlarmModule.uchAlarmStatus[uchChannel - 1];
 838   3                                      AlarmIOControl(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1], 0);      
 839   3                                      SetAlarmStatusMain(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1]);     
 840   3                                      SetAlarmStatusCOMM(uchChannel, AlarmModule.uchAlarmStatus[uchChannel - 1]);             
 841   3                              }
 842   2                              AlarmModule.uchResetStatus[uchChannel - 1] = 0;         //清除复位状态
 843   2                              break;
 844   2      
 845   2                      default:
 846   2      
 847   2                              break;  
 848   2              }
 849   1              AlarmLEDControl(AlarmModule.uchLEDAlarmStatus[1] || AlarmModule.uchLEDAlarmStatus[0]);          //最后根据报警状

⌨️ 快捷键说明

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