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

📄 subprogram.lst

📁 一个分选系统的软件:用SmallRtos操作系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   SUBPROGRAM                                                            06/06/2005 16:32:37 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SUBPROGRAM
OBJECT MODULE PLACED IN .\output\subprogram.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE subprogram.c OPTIMIZE(6,SPEED) BROWSE ORDER DEBUG OBJECTEXTEND PRINT(.\outp
                    -ut\subprogram.lst) OBJECT(.\output\subprogram.obj)

stmt level    source

   1          /*******************************************************************************************************
   2          **--------------文件信息--------------------------------------------------------------------------------
   3          **文   件   名: subprogram.c
   4          **创   建   人: 刘宝贵
   5          **最后修改日期:  2004年4月16日
   6          **描        述: 常用函数
   7          **
   8          **--------------历史版本信息----------------------------------------------------------------------------
   9          ** 创建人: 刘宝贵
  10          ** 版  本: V1.00
  11          ** 日 期: 2004年4月16日
  12          ** 描 述: 原始版本
  13          **
  14          **------------------------------------------------------------------------------------------------------
  15          ** 修改人: 刘宝贵
  16          ** 版  本: V1.10.5
  17          ** 日 期: 2004年4月16日
  18          ** 描 述: 
  19          **------------------------------------------------------------------------------------------------------
  20          ********************************************************************************************************/
  21          #include "config.h"
  22          
  23          
  24          /*********************************************************************************************************
  25          ** 函数名称: ConfigMe
  26          ** 功能描述: 系统配置如果是第一次使用将所有参数初始化,DA置为0
  27          ** 输 入:   无
  28          ** 输 出:   无
  29          ** 全局变量: 
  30          ** 调用模块: OSSemPend OSSemPost
  31          **
  32          ** 作 者: 刘宝贵
  33          ** 日 期: 2004年5月23日
  34          **-------------------------------------------------------------------------------------------------------
  35          ** 修改人:
  36          ** 日 期:
  37          **-------------------------------------------------------------------------------------------------------
  38          *********************************************************************************************************/
  39          void ConfigMe()//manual config
  40          {
  41   1          uint8 data i;
  42   1          for(i=0;i<255;i++)
  43   1          {
  44   2              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  45   2              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  46   2              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  47   2              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  48   2              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  49   2              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  50   2              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  51   2              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  52   2              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  53   2              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  54   2          }
C51 COMPILER V7.06   SUBPROGRAM                                                            06/06/2005 16:32:37 PAGE 2   

  55   1          ClearDA();
  56   1          da(0,0);
  57   1          da(0,1);
  58   1          P4 |=0xFF;
  59   1          P5 |=0x0F;
  60   1          P2 |=0xF0;
  61   1          P1 |=0xFF;//所有DA_EN脚均为1,使所有398处于采样状态,把所有DA清为0
  62   1      
  63   1          SumWorkStep        = EepromReadByte(SumWorkStepIICBase);
  64   1          CurrentWorkStep    = EepromReadByte(CurrentWorkStepIICBase);
  65   1          CurrentWorkStepMax = EepromReadByte(CurrentWorkStepMaxIICBase);
  66   1          Second             = EepromReadWord(SecondIICBase);
  67   1          if(SumWorkStep<13 && CurrentWorkStep<13)
  68   1          {
  69   2              for(i=1;i<=SumWorkStep;i++)
  70   2              {
  71   3                  WorkStep[i].type  = EepromReadByte(WorkStepIICBase + i*9 + 0);
  72   3                  WorkStep[i].i     = EepromReadWord(WorkStepIICBase + i*9 + 1);
  73   3                  WorkStep[i].limit = EepromReadWord(WorkStepIICBase + i*9 + 3);
  74   3                  WorkStep[i].t     = EepromReadWord(WorkStepIICBase + i*9 + 5);
  75   3                  WorkStep[i].u     = EepromReadWord(WorkStepIICBase + i*9 + 7);
  76   3              }
  77   2              for(i=0;i<24;i++)
  78   2              {
  79   3                  Cell[i].c = EepromReadWord(Cell_CIICBase+i*4+0);
  80   3                  Cell[i].c = Cell[i].c<<16;
  81   3                  Cell[i].c|= EepromReadWord(Cell_CIICBase+i*4+2);
  82   3                  Cell[i].t = EepromReadWord(Cell_TIICBase + i*2);
  83   3                  Cell[i].s = EepromReadByte(Cell_SIICBase + i);
  84   3      
  85   3                  ReferenceU[i] = EepromReadWord(ReferenceUIICBase + i*2);
  86   3              }
  87   2          }//if(SumWorkStep<13)
  88   1          WorkStepCheck();
  89   1          Reset =1;
  90   1          CommCounter = 0;
  91   1          ALARMLED = 0;//1:on 0:0ff
  92   1      }
  93          /*********************************************************************************************************
  94          ** 函数名称: 给所有DA通道赋值
  95          ** 功能描述: 系统配置如果是第一次使用将所有参数初始化,DA置为0
  96          ** 输 入:   无
  97          ** 输 出:   无
  98          ** 全局变量: DAIBuf[] DAUBuf[] WorkStep[] CurrentWorkStep
  99          ** 调用模块: OSSemPend OSSemPost EepromReadWord
 100          **
 101          ** 作 者: 刘宝贵
 102          ** 日 期: 2004年5月23日
 103          **-------------------------------------------------------------------------------------------------------
 104          ** 修改人:
 105          ** 日 期:
 106          **-------------------------------------------------------------------------------------------------------
 107          *********************************************************************************************************/
 108          void SetupDA(void)
 109          {
 110   1          uint8 data i;
 111   1          uint16 xdata temp16a,temp16b;
 112   1          uint32 xdata temp32;
 113   1          for(i=0;i<24;i++)
 114   1          {
 115   2              temp32 = WorkStep[CurrentWorkStep].i;
 116   2              temp32 *= 4559;
C51 COMPILER V7.06   SUBPROGRAM                                                            06/06/2005 16:32:37 PAGE 3   

 117   2              temp32 /= 2500;
 118   2              do
 119   2              {
 120   3                  OSSemPend(IICSem,0);
 121   3                  temp16a = EepromReadWordA(CellParaIICBase+i*16+6*2);
 122   3                  temp16b = EepromReadWordA(CellParaIICBase+i*16+6*2);
 123   3                  OSSemPost(IICSem);
 124   3              }while(temp16a != temp16b);
 125   2      
 126   2              if(temp16a>PARAMETER_MAX || temp16a<PARAMETER_MIN)
 127   2              {
 128   3                  OSSemPend(IICSem,0);
 129   3                  EepromWriteWordA(CellParaIICBase+i*16+6*2,10000);
 130   3                  OSSemPost(IICSem);
 131   3                  temp16a = 10000;
 132   3              }
 133   2      
 134   2              temp32 *= temp16a;
 135   2              temp32 /= 130000;
 136   2              DAIBuf[i] = (uint16)temp32;
 137   2              if(DAIBuf[i] > 4095)
 138   2              {
 139   3                  DAIBuf[i] = 4095;
 140   3              }
 141   2              if(WorkStep[CurrentWorkStep].type == CHARGE)
 142   2              {
 143   3                  temp32 = WorkStep[CurrentWorkStep].u;
 144   3                  temp32*= 4095;
 145   3                  temp32/= 50000;
 146   3      //            temp32 = 3440;//4095 * 2100 / 2500;
 147   3                  do
 148   3                  {
 149   4                      OSSemPend(IICSem,0);
 150   4                      temp16a = EepromReadWordA(CellParaIICBase+i*16+4*2);
 151   4                      temp16b = EepromReadWordA(CellParaIICBase+i*16+4*2);
 152   4                      OSSemPost(IICSem);
 153   4                  }while(temp16a != temp16b);
 154   3          
 155   3                  if(temp16a>PARAMETER_MAX || temp16a<PARAMETER_MIN)
 156   3                  {
 157   4                      OSSemPend(IICSem,0);
 158   4                      EepromWriteWordA(CellParaIICBase+i*16+4*2,10000);
 159   4                      OSSemPost(IICSem);
 160   4                      temp16a = 10000;
 161   4                  }
 162   3                  temp32*=temp16a;
 163   3                  temp32/=9600;
 164   3                  DAUBuf[i] = (uint16)temp32;
 165   3                  if(DAUBuf[i] > 4095 )
 166   3                  {
 167   4                      DAUBuf[i] = 4095;
 168   4                  }
 169   3              }//if(WorkStep[CurrentWorkStep].type == CHARGE)
 170   2              else if(WorkStep[CurrentWorkStep].type == DISCHARGE)
 171   2              {
 172   3                  DAUBuf[i] = 4095;
 173   3              }
 174   2              else
 175   2              {
 176   3                  DAUBuf[i] = 0;
 177   3              }
 178   2          }//for(i=0;i<24;i++)
C51 COMPILER V7.06   SUBPROGRAM                                                            06/06/2005 16:32:37 PAGE 4   

 179   1      }
 180          
 181          
 182          
 183          /*********************************************************************************************************
 184          ** 函数名称: da
 185          ** 功能描述: 控制C8051F020的DA输出
 186          ** 输 入: dadata:要输出的DA值:0~4095
 187          **         dachannel:DA输出的通道0,1
 188          ** 输 出:   无
 189          ** 全局变量: 无
 190          ** 调用模块: 无
 191          **
 192          ** 作 者: 刘宝贵
 193          ** 日 期: 2004年4月16日
 194          **-------------------------------------------------------------------------------------------------------
 195          ** 修改人:
 196          ** 日 期:
 197          **-------------------------------------------------------------------------------------------------------
 198          *********************************************************************************************************/

⌨️ 快捷键说明

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