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

📄 lzkfunc.lst

📁 基于MST-G240128点阵液晶的 状态机机制 人机界面四级滚屏菜单 源代码 ,带时间片机制模拟操作系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.20   LZKFUNC                                                               09/04/2006 16:29:05 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE LZKFUNC
OBJECT MODULE PLACED IN LzkFUNC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe LzkFUNC.c DB OE

line level    source

   1          #include "LZK.H"
   2          #include <stdio.h>
   3          
   4          #define Vref       1.200
*** WARNING C317 IN LINE 4 OF LzkFUNC.c: attempt to redefine macro 'Vref'
   5          
   6          /***********************************************************************
   7           *** DO开关量(控制输出继电器)功能说明:
   8          (1)KQJ:KQ可控硅开通控制继电器(常闭).
   9          (2)LZJ:励磁状态继电器(常开),LZJ决定是否进行RF检测.
  10          (3)LCJ:失步保护继电器(常开),控制主电源开关或输出给PLC.
  11          (4)SZJ:跳闸停机继电器(常开),后备保护用,输出给PLC.
  12          (5)BXJ:报警输出继电器(常开),用于接通声光报警或输出至PLC.
  13          (6)TYJ:降压起动继电器(常开),控制输出.
  14          (7)YKJ:遥控继电器(常开)
  15          (8)N/A:
  16          ***********************************************************************/
  17          uint8 bdata RelayOUT = 0;   // Output Relay STATUS.
  18          // sbit ZJJ_OUT = RelayOUT^7;  // N/A.
  19          sbit YKJ_OUT = RelayOUT^6;  // YKJ Output Relay No.6.遥控状态输出
  20          sbit TYJ_OUT = RelayOUT^5;  // TYJ Output Relay No.5.降压启动控制输出
  21          sbit BXJ_OUT = RelayOUT^4;  // BXJ Output Relay No.4.报警输出
  22          sbit SZJ_OUT = RelayOUT^3;  // SZJ Output Relay No.3.失步再整步失败状态输出
  23          sbit LCJ_OUT = RelayOUT^2;  // LCJ Output Relay No.2.失步状态输出
  24          sbit LZJ_OUT = RelayOUT^1;  // LZJ Output Relay No.1.KQ误导通检测使能控制
  25          sbit KQJ_OUT = RelayOUT^0;  // KQJ Output Relay No.0.KQ控制继电器
  26          
  27          
  28          /***********************************************************************
  29           *** DI开关量(状态输入继电器)功能说明:
  30          (1)DLJ:电机加电状态输入(常开),由PLC输入.
  31          (2)RFJ:KQ导通检测(常开),RFJ闭合表示KQ导通.
  32          (3)FCJ:断电保护输入(常开),由PLC输入,防止对电机的冲击.
  33          (4)JYJ:降压起动输入(常开),由PLC输入.
  34          (5)ZCJ:增值(常开),遥控增值.
  35          (6)JCJ:减值(常开),遥控减值.
  36          (7)YCJ:遥控状态继电器,由PLC输入.
  37          (8)DYJ:低压状态输入.
  38          ***********************************************************************/
  39          uint8 bdata RelayIN = 0xff;  // Digital Input STATUS.
  40          sbit DYJ_IN = RelayIN^7;     // DYJ Input Relay No.7.低电压强励控制输入
  41          sbit YCJ_IN = RelayIN^6;     // YCJ Input Relay No.6.遥控状态控制输入
  42          sbit JCJ_IN = RelayIN^5;     // JCJ Input Relay No.5.减值
  43          sbit ZCJ_IN = RelayIN^4;     // ZCJ Input Relay No.4.增值
  44          sbit JYJ_IN = RelayIN^3;     // JYJ Input Relay No.3.降压启动控制输入
  45          sbit FCJ_IN = RelayIN^2;     // FCJ Input Relay No.2.防冲击输入<DSJ断电失步保护继电器>
  46          sbit RFJ_IN = RelayIN^1;     // RFJ Input Relay No.1.RF误导通信号输入
  47          sbit DLJ_IN = RelayIN^0;     // DLJ Input Relay No.0.电机启动控制信号输入
  48          
  49          
  50          /*****************************************************************
  51          ***  相差法测量电动机电源功率因数,PhasePole为DUx的过零检测波形
  52          *****************************************************************/
  53          uint8 bdata PwrFact_MsrFLAG = 0x00;
  54          sbit DUxCO_LastVal          = PwrFact_MsrFLAG ^ 7; // DUx
C51 COMPILER V7.20   LZKFUNC                                                               09/04/2006 16:29:05 PAGE 2   

  55          sbit DUxCO_CurrVal          = PwrFact_MsrFLAG ^ 6; // 
  56          sbit PwrFact_CurLoopMsrOVER = PwrFact_MsrFLAG ^ 5; // 
  57          sbit PwrFact_CurLoopMsrEN   = PwrFact_MsrFLAG ^ 4; //
  58          sbit PwrFact_CalcMsrOVER    = PwrFact_MsrFLAG ^ 3; // Every Wave  32 Points. 
  59          sbit PwrFact_CalcMsrEN      = PwrFact_MsrFLAG ^ 2; //
  60          sbit PwrFact_PhaDiffMsrOVER = PwrFact_MsrFLAG ^ 1; // Average for 8 Periods.
  61          sbit PwrFact_PhaDiffMsrEN   = PwrFact_MsrFLAG ^ 0; //
  62          
  63          uint8 data DUxCO_RisTimCNT = 0;
  64          uint8 data PwrFact_PhaDiffMsrCNT = 0;
  65          UINTC data PwrFact_PhaDiffMsrDATA[8];
*** ERROR C129 IN LINE 65 OF LZKFUNC.C: missing ';' before 'data'
  66          
  67          
  68          /****************************************************************************
  69          ***  外部变量.
  70          ****************************************************************************/
  71          extern uint16 xdata *InFlashWrPtr;   // Internal FLASH Write Addr Point.

  72          extern uint16 code  *InFlashRdPtr;   // Internal FLASH Read  Addr Point. 
  73          
  74          
  75          /****************************************************************************
  76          ** 函数名称: T0_ISR()
  77          ** 功能描述: T0定时器中断处理,中断间隔125uS
  78                       (1)125uS时间基准:分为5个相位;
  79                                      (2)WDT清除;
  80                                      (3)A/D采样:UF,IF,DU,DI,CurrRingEY,CurrRingEI;
  81                                      (4)DI读入: UFCO,IFCO,SYNCx,RelayIN;
  82                                      (5)DO输出: RelayOUT,PulseOUT;
  83                       (6)功率因数相差法TIMER1测量结果读入; 
  84          ** 入口参数: 无
  85          ** 出口参数: 无
  86          ** 全局变量: 无
  87          ** 调用模块: 无
  88          ** 说明: 
  89          ****************************************************************************/
  90          void T0_ISR(void) interrupt 1
  91          {
  92             uint8 ucTMP;
  93          
  94             SFRPAGE = TIMER01_PAGE;        // Change to TIMER01 PAGE.
  95             TF0 = 0;
  96             WDTCN = 0xA5;                  // Enable WDT or Reload the WDT.
  97          
  98          
  99             SFRPAGE = 0x0f;  // P5 SFR PAGE.
 100             /*****************************************************************
 101             *** DI开关量(状态输入继电器)读入(8路);
 102             *****************************************************************/        
 103             P5MDOUT = 0x00;  // P5口设置为漏极开路,输入方式.       
 104             P5MDOUT = 0x00;  // P5口设置为漏极开路,输入方式.       
 105             nReInLE = 0;     // Relay Input  Enabled.
 106             nReInLE = 0;     // Relay Input  Enabled.
 107             RelayIN = P5;    // Read  Relay  Digital Input.  
 108             nReInLE = 1;     // Relay Input  Disabled.
 109          
 110             /*****************************************************************
 111             *** DO开关量(控制输出继电器)输出(8路);
 112             *****************************************************************/
 113             P5MDOUT = 0xff;  // P5口设置为推挽输出,输出方式.       
 114             P5MDOUT = 0xff;  // P5口设置为推挽输出,输出方式.       
 115             ReOutLE = 1;     // Relay Output Latch Enabled.
C51 COMPILER V7.20   LZKFUNC                                                               09/04/2006 16:29:05 PAGE 3   

 116             ReOutLE = 1;     // Relay Output Latch Enabled.
 117             P5 = RelayOUT;   // Relay Digital Output.  
 118             ReOutLE = 0;     // Relay Output Latch Disabled.
 119          
 120          
 121             /*****************************************************************
 122             *** DLJ释放或吸合动作处理.
 123             *****************************************************************/
 124             DLJ_LastVal = DLJ_CurrVal;        // 保存DLJ状态.
 125             DLJ_CurrVal = DLJ_IN;             // 读取DLJ当前状态.
 126             if( DLJ_CurrVal != DLJ_LastVal )  // DLJ状态改变.
 127             {
 128                if( DLJ_CurrVal == 0 )         // 开机启动.
 129                {
 130                   MotNmlVoltStaUpEN = 1;      // 电机正常启动允许使能.
 131                   DLJ_StopProDONE = 0;        // 复位停机处理标志.
 132                }
 133                     else                            // 停机.
 134                     {
 135                   if( DLJ_StopProDONE == 0 )  // 未进行过停机处理.
 136                        {
 137                      TrigPulseOutEN = 0;      // 禁止可控硅触发脉冲输出.
 138                                                         // LCD显示“电机停机”.
 139                                               // 所有DO复位,DO = "0xff".
 140                                                           // 所有计数器、定时器和标志位复位.
 141                      DLJ_StopProDONE = 1;     // 置已停机处理标志.
 142                        }
 143                     }
 144             }
 145             else
 146             {
 147                if( DLJ_CurrVal == 1 )         // 等待启动信号.
 148                {
 149                   if( JYJ_IN == 0 )           // 降压启动信号. 
 150                        {
 151                      MotLowVoltStaUpEN = 1;   // 电机启动允许使能.
 152                        }  
 153                }
 154             }   
 155          
 156          
 157             /*****************************************************************
 158             *** 可控硅触发脉冲输出,与SYNCa同步,SYNCa同步信号周期更新.
 159             *****************************************************************/
 160             SYNCa_LastVal = SYNCa_CurrVal;         // 保存SYNCa状态
 161             SYNCa_CurrVal = SYNCa;                 // 读取SYNCa当前状态
 162             if( TrigPulseOutEN == 1)               // 可控硅触发脉冲输出
 163             {
 164                     if( SYNCa_CurrVal != SYNCa_LastVal) // SYNCa上升沿或下降沿
 165                          if( SYNCa_CurrVal == 1 )            // SYNCa上升沿,“0”-->“1” 
 166                     {                                      
 167                        TrigOutSyncTimCNT = 0;           // 重新同步
 168                   TrigOutSyncTimCntEN = 1;         // 同步计数使能,避免计时误差累积
 169                     }
 170          
 171                if( EM_RegBrdgMode == 0 )           // EM Half Bridge,励磁为半桥形式.  
 172                {       
 173                   if( TrigOutSyncTimCNT == TrigOutPosiA_OnTim )   // Trig Phase A+ ON.
 174                     PulseOutPut(0x7f & TrigOutPosiA_ON);
 175                   if( TrigOutSyncTimCNT == TrigOutPosiA_OffTim )  // Trig Phase A+ OFF.
 176                     PulseOutPut(0x7f);
 177                   
C51 COMPILER V7.20   LZKFUNC                                                               09/04/2006 16:29:05 PAGE 4   

 178                   if( TrigOutSyncTimCNT == TrigOutPosiB_OnTim )   // Trig Phase B+ ON.
 179                     PulseOutPut(0x7f & TrigOutPosiB_ON);
 180                   if( TrigOutSyncTimCNT == TrigOutPosiB_OffTim )  // Trig Phase B+ OFF.
 181                     PulseOutPut(0x7f);
 182                   
 183                   if( TrigOutSyncTimCNT == TrigOutPosiC_OnTim )   // Trig Phase C+ ON.
 184                     PulseOutPut(0x7f & TrigOutPosiC_ON);
 185                   if( TrigOutSyncTimCNT == TrigOutPosiC_OffTim )  // Trig Phase C+ OFF.
 186                     PulseOutPut(0x7f);

⌨️ 快捷键说明

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