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

📄 ldfxmain.lst

📁 一个分选系统的软件:用SmallRtos操作系统
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   LDFXMAIN                                                              11/19/2004 13:36:18 PAGE 1   


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

stmt level    source

   1          /*********************************************************************************************************
   2          **锂电分选系统 软件设计:刘宝贵,硬件设计:刘宝贵 调试:刘宝贵
   3          **本系统使用编译器为 keil c51.exe V7.06
   4          **本系统使用汇编器为 keil A51.exe V7.07
   5          **本系统使用联接器为 keil BL51.exe V5.03
   6          **本系统使用Small RTOS51 V1.12.0
   7          **如果等程序有问题或者是Bug请与作者联系
   8          **与作者联系方法:邮箱:baoguiliu@163.com,baoguiliu@sohu.com 电话:0451-86649609
   9          **
  10          **
  11          **VER1.0
  12          **--------------文件信息--------------------------------------------------------------------------------
  13          **文   件   名: ldfxmain.c
  14          **创   建   人: 刘宝贵
  15          **最后修改日期: 
  16          **描        述: ldfxmain.c源代码。
  17          **
  18          **--------------历史版本信息----------------------------------------------------------------------------
  19          ** 修改人: 
  20          ** 版  本: 
  21          ** 日 期: 
  22          ** 描 述: 
  23          **
  24          **--------------当前版本修订------------------------------------------------------------------------------
  25          ** 修改人: 
  26          ** 日 期:
  27          ** 描 述:
  28          **
  29          **------------------------------------------------------------------------------------------------------
  30          ********************************************************************************************************/
  31          
  32          #include "config.h"
  33          void config();
  34          /*********************************************************************************************************
  35          ** 函数名称: main
  36          ** 功能描述: 主函数
  37          ** 输 入:   无
  38          ** 输 出:   无
  39          ** 全局变量: 
  40          ** 调用模块: OSStart() config()
  41          **
  42          ** 作 者: 刘宝贵
  43          ** 日 期: 2004年5月23日
  44          **-------------------------------------------------------------------------------------------------------
  45          ** 修改人:
  46          ** 日 期:
  47          **-------------------------------------------------------------------------------------------------------
  48          *********************************************************************************************************/
  49          void main(void)
  50          {
  51   1          config();//auto config
  52   1      
  53   1      test:
  54   1          P3 = 0;
C51 COMPILER V7.06   LDFXMAIN                                                              11/19/2004 13:36:18 PAGE 2   

  55   1          P3 = 0xFF;
  56   1          goto test;
  57   1      
  58   1      
  59   1      
  60   1          ConfigMe();
  61   1          TR0 = 1;
  62   1          OSStart();
  63   1      }
  64          /*********************************************************************************************************
  65          ** 函数名称: TaskADDA
  66          ** 功能描述: AD DA
  67          ** 输 入:   无
  68          ** 输 出:   无
  69          ** 全局变量: AdBuf Cell 
  70          ** 调用模块: midst OSWait
  71          **
  72          ** 作 者: 刘宝贵
  73          ** 日 期: 2004年4月28日
  74          **-------------------------------------------------------------------------------------------------------
  75          ** 修改人:
  76          ** 日 期:
  77          **-------------------------------------------------------------------------------------------------------
  78          *********************************************************************************************************/
  79          void TaskAD(void)
  80          {
  81   1          uint8  data i,j;
  82   1          uint16 xdata u_ad_para[24],temp16a,temp16b;
  83   1          uint16 xdata i_ad_para[24];
  84   1          uint16 xdata ADIBuf[240];  //AD采样滤波所用的缓冲区
  85   1          uint16 xdata ADUBuf[240];  //AD采样滤波所用的缓冲区
  86   1          uint8  code adchannel[48]=
  87   1          {
  88   1              0x70,0x50,0x30,0x10,0x71,0x51,0x31,0x11,0x72,0x52,0x32,0x12,
  89   1      //        0x73,0x53,0x33,0x13,0x74,0x54,0x34,0x14,0x75,0x55,0x35,0x15,
  90   1              0x15,0x35,0x55,0x75,0x14,0x34,0x54,0x74,0x13,0x33,0x53,0x73,
  91   1              0x60,0x40,0x20,0x00,0x61,0x41,0x21,0x01,0x62,0x42,0x22,0x02,
  92   1      //        0x63,0x43,0x23,0x03,0x64,0x44,0x24,0x04,0x65,0x45,0x25,0x05,
  93   1              0x05,0x25,0x45,0x65,0x04,0x24,0x44,0x64,0x03,0x23,0x43,0x63,
  94   1          };//每一路模拟采样对应通道控制字:控制CD4051的A,B,C(高四位)和C8051F020片内的AD通道选择(低四位)
  95   1            //adchannel[0~~~23]对应U0~~U23    adchannel[24~~~48]对应I0~~I23
  96   1          for(i=0;i<240;i++)
  97   1          {
  98   2              ADIBuf[i]=0;
  99   2              ADUBuf[i]=0;
 100   2          }
 101   1          AdParaChanged = 1;
 102   1          i = 0;
 103   1          j = 0;
 104   1          while (1)
 105   1          {
 106   2              //以下是对AD通道的处理
 107   2              i++;
 108   2              if(i == 48)
 109   2              {
 110   3                  if(AdParaChanged)
 111   3                  {
 112   4                      if(OSSemPend(IICSem,0)==OS_SEM_OK)
 113   4                      {
 114   5                          for(i=0;i<24;i++)
 115   5                          {
 116   6                              do
C51 COMPILER V7.06   LDFXMAIN                                                              11/19/2004 13:36:18 PAGE 3   

 117   6                              {
 118   7                                  temp16a = EepromReadWord(CellParaIICBase+i*16+0*2);
 119   7                                  temp16b = EepromReadWord(CellParaIICBase+i*16+0*2);
 120   7                              }while(temp16a !=temp16b);
 121   6                              u_ad_para[i] = temp16a;
 122   6                              if(u_ad_para[i] > PARAMETER_MAX || u_ad_para[i] < PARAMETER_MIN)
 123   6                              {
 124   7                                  u_ad_para[i] = 10000;
 125   7                                  EepromWriteWord(CellParaIICBase+i*16+0*2,10000);
 126   7                              }
 127   6      
 128   6                              do
 129   6                              {
 130   7                                  temp16a = EepromReadWord(CellParaIICBase+i*16+2*2);
 131   7                                  temp16b = EepromReadWord(CellParaIICBase+i*16+2*2);
 132   7                              }while(temp16a !=temp16b);
 133   6                              i_ad_para[i] = temp16a;
 134   6                              if(i_ad_para[i] > PARAMETER_MAX || i_ad_para[i] < PARAMETER_MIN)
 135   6                              {
 136   7                                  i_ad_para[i] = 10000;
 137   7                                  EepromWriteWord(CellParaIICBase+i*16+2*2,10000);
 138   7                              }
 139   6                          }//for(i=0;i<24;i++)
 140   5                          OSSemPost(IICSem);
 141   5                      }//if(OSSemPend(IICSem,0)==OS_SEM_OK)
 142   4                      AdParaChanged = 0;
 143   4                  }//if(AdParaChanged)
 144   3                  j++;
 145   3                  j%=9;
 146   3                  for(i=0;i<24;i++)
 147   3                  {
 148   4                      uint32 xdata temp32;
 149   4                      temp32    = midst(&ADUBuf[i*9],9);
 150   4                      temp32   *= 50000;
 151   4                      temp32   /= 12750;//4095*3
 152   4                      temp32   *= u_ad_para[i];
 153   4                      temp32   /=10000;
 154   4                      OS_ENTER_CRITICAL();
 155   4                      Cell[i].u = (uint16)temp32;
 156   4                      OS_EXIT_CRITICAL();
 157   4      
 158   4                      temp32    = midst(&ADIBuf[i*9],9);
 159   4                      temp32   *=30380;
 160   4                      temp32   /=12285;//4095*3
 161   4                      temp32   *=i_ad_para[i];
 162   4                      temp32   /=10000;
 163   4                      OS_ENTER_CRITICAL();
 164   4                      Cell[i].i = (uint16)(temp32);
 165   4                      OS_EXIT_CRITICAL();
 166   4                  }
 167   3                  i=0;
 168   3              }
 169   2              AD_CS=(bit)(adchannel[i]<<1 & 0x80);
 170   2              AD_BS=(bit)(adchannel[i]<<2 & 0x80);
 171   2              AD_AS=(bit)(adchannel[i]<<3 & 0x80);
 172   2              AMX0SL=adchannel[i]&0x0f;//channel select 
 173   2              OSWait(K_TMO,(5*OS_TICKS_PER_SEC)/1000);
 174   2              AD0INT=0;
 175   2              AD0BUSY=1;
 176   2              do
 177   2              {
 178   3                  OSWait(K_TMO,(5*OS_TICKS_PER_SEC)/1000);
C51 COMPILER V7.06   LDFXMAIN                                                              11/19/2004 13:36:18 PAGE 4   

 179   3              }while(AD0INT==0);
 180   2              if(i<24)
 181   2              {
 182   3                  
 183   3                  uint32 xdata temp32;
 184   3                  ADUBuf[i*9+j]=ADC0H*256+ADC0L;
 185   3                  temp32    =  ADUBuf[i*9+j];
 186   3                  temp32   *= 5000;
 187   3                  temp32   /= 455;
 188   3                  temp32   *= u_ad_para[i];
 189   3                  temp32   /=9310;
 190   3                  OS_ENTER_CRITICAL();
 191   3                  CellCheckU[i] = (uint16)temp32;
 192   3                  OS_EXIT_CRITICAL();
 193   3              }
 194   2              else
 195   2                  ADIBuf[(i-24)*9+j]=ADC0H*256+ADC0L;
 196   2          }
 197   1      }
 198          /*********************************************************************************************************
 199          ** 函数名称: TaskWorkStep
 200          ** 功能描述: 工步处理
 201          ** 输 入:   无
 202          ** 输 出:   无
 203          ** 全局变量: 
 204          ** 调用模块: ClearDA
 205          **
 206          ** 作 者: 刘宝贵
 207          ** 日 期: 2004年4月28日
 208          **-------------------------------------------------------------------------------------------------------
 209          ** 修改人:

⌨️ 快捷键说明

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