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

📄 subprogram.lst

📁 一个分选系统的软件:用SmallRtos操作系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 199          void da(uint16 temp,uint8 channel)
 200          {
 201   1          if(channel==0)
 202   1            {
 203   2              DAC0L=temp&0xff;
 204   2              DAC0H=(temp>>8)&0xff;
 205   2              DAC0CN=0x80;
 206   2            }
 207   1              else
 208   1                {
 209   2              DAC1L=temp&0xff;
 210   2              DAC1H=(temp>>8)&0xff;
 211   2              DAC1CN=0x80;
 212   2            }
 213   1      }
 214          /*********************************************************************************************************
 215          ** 函数名称: midst
 216          ** 功能描述: 求中间值 返回中间值
 217          ** 输 入:   pbuf被处理数据区首地址,width:被处理数据区宽度
 218          ** 输 出:   中间值
 219          ** 全局变量: 无
 220          ** 调用模块: 无
 221          **
 222          ** 作 者: 刘宝贵
 223          ** 日 期: 2004年4月19日
 224          **-------------------------------------------------------------------------------------------------------
 225          ** 修改人:
 226          ** 日 期:
 227          **-------------------------------------------------------------------------------------------------------
 228          *********************************************************************************************************/
 229          uint16 midst(uint16 *pbuf, uint8 width)
 230          {
 231   1          int8 m, n;
 232   1          uint16 itemp;
 233   1          uint16 xdata buf[10];
 234   1          for (m = 0; m < width; m++)
 235   1          {
 236   2              buf[m] = pbuf[m];
 237   2          }
 238   1          for (m = 0; m < width; m++)
 239   1          {
 240   2              for ( n = m - 1; n >= 0; n--)
C51 COMPILER V7.06   SUBPROGRAM                                                            06/06/2005 16:32:37 PAGE 5   

 241   2              {
 242   3                  if (buf[n+1] > buf[n])
 243   3                  {
 244   4                      itemp = buf[n];
 245   4                      buf[n] = buf[n+1];
 246   4                      buf[n+1] = itemp;
 247   4                  }
 248   3              }
 249   2          }
 250   1          itemp = buf[width/2];
 251   1          itemp+= buf[width/2-1];
 252   1          itemp+= buf[width/2+1];
 253   1      //    itemp/=3;
 254   1          return itemp;
 255   1      //    return buf[width/2];
 256   1      }
 257          /*********************************************************************************************************
 258          ** 函数名称: ClearDA
 259          ** 功能描述: 将系统DA置0
 260          ** 输 入:   无
 261          ** 输 出:   无
 262          ** 全局变量: DAUBuf DAIBuf
 263          ** 调用模块: 
 264          **
 265          ** 作 者: 刘宝贵
 266          ** 日 期: 2004年5月17日
 267          **-------------------------------------------------------------------------------------------------------
 268          ** 修改人:
 269          ** 日 期:
 270          **-------------------------------------------------------------------------------------------------------
 271          *********************************************************************************************************/
 272          void ClearDA(void)
 273          {
 274   1          uint8 data i;
 275   1          for(i=0;i<24;i++)
 276   1          {
 277   2              DAUBuf[i]=0;
 278   2              DAIBuf[i]=0;
 279   2          }
 280   1      }
 281          /*********************************************************************************************************
 282          ** 函数名称: WorkStepInit
 283          ** 功能描述: 工步初始化:设置Cell[i].c,Cell[i].t,Cell[i].s,Second
 284          ** 输 入:   无
 285          ** 输 出:   无
 286          ** 全局变量: Cell[i].c,Cell[i].t,Cell[i].s,Second Reset
 287          ** 调用模块: 
 288          **
 289          ** 作 者: 刘宝贵
 290          ** 日 期: 2004年5月17日
 291          **-------------------------------------------------------------------------------------------------------
 292          ** 修改人:
 293          ** 日 期:
 294          **-------------------------------------------------------------------------------------------------------
 295          *********************************************************************************************************/
 296          void WorkStepInit(uint8 type)
 297          {
 298   1          uint8 data i;
 299   1          if(Reset==0)
 300   1          {
 301   2              for(i=0;i<24;i++)
 302   2              {
C51 COMPILER V7.06   SUBPROGRAM                                                            06/06/2005 16:32:37 PAGE 6   

 303   3                  OS_ENTER_CRITICAL();
 304   3                  if(type !=STOP)
 305   3                  {
 306   4                      Cell[i].c=0;
 307   4                  }
 308   3                  Cell[i].t=0;
 309   3                  Cell[i].s=type;
 310   3                  OS_EXIT_CRITICAL();
 311   3              }
 312   2              Second = 0;
 313   2          }
 314   1          else
 315   1          {
 316   2              Reset = 0;
 317   2          }
 318   1      }
 319          /*********************************************************************************************************
 320          ** 函数名称: WorkStepCheck
 321          ** 功能描述: 工步合法性检查
 322          ** 输 入:   无
 323          ** 输 出:   work_step_lawful 1:合法 0:非法
 324          ** 全局变量: SumWorkStep CurrentWorkStep WorkStep[]
 325          ** 调用模块: 无
 326          **
 327          ** 作 者: 刘宝贵
 328          ** 日 期: 2004年5月25日
 329          **-------------------------------------------------------------------------------------------------------
 330          ** 修改人:
 331          ** 日 期:
 332          **-------------------------------------------------------------------------------------------------------
 333          *********************************************************************************************************/
 334          bit WorkStepCheck(void)
 335          {
 336   1          uint8 data i;
 337   1          bit work_step_lawful = 1;         //工步是否合法
 338   1          if(CurrentWorkStep > SumWorkStep || SumWorkStep > 12 ) 
 339   1              work_step_lawful = 0;
 340   1          if(WorkStep[SumWorkStep].type !=STOP)
 341   1              work_step_lawful = 0;
 342   1          for(i=1;i<=SumWorkStep;i++)
 343   1          {
 344   2              switch (WorkStep[i].type)//检测本工步是否有效
 345   2              {
 346   3                  case 0://停止
 347   3                  {
 348   4                      _nop_();
 349   4                  }break;
 350   3                  case 1://静止
 351   3                  {
 352   4                      if(WorkStep[i].i > 0 || WorkStep[i].t>20*60 || WorkStep[i].t<1*60 )
 353   4                      {
 354   5                          work_step_lawful=0;
 355   5                      }
 356   4                  }break;
 357   3                  case 2://充电
 358   3                  {
 359   4                      if(  WorkStep[i].i     > 30000  || WorkStep[i].i     < 200
 360   4                         ||WorkStep[i].limit > 300    || WorkStep[i].limit < 50
 361   4                         ||WorkStep[i].t     > 360*60 || WorkStep[i].t     < 1*60
 362   4                         ||WorkStep[i].u     > 42000  || WorkStep[i].u     < 500
 363   4                        )
 364   4                      {
C51 COMPILER V7.06   SUBPROGRAM                                                            06/06/2005 16:32:37 PAGE 7   

 365   5                          work_step_lawful=0;
 366   5                      }
 367   4                  }break;
 368   3                  case 3://放电
 369   3                  {
 370   4                      if(  WorkStep[i].i     > 30000  || WorkStep[i].i    < 300
 371   4                         ||WorkStep[i].limit > 41000  || WorkStep[i].limit< 23000
 372   4                         ||WorkStep[i].t     > 120*60 || WorkStep[i].t    < 1*60)
 373   4                      {
 374   5                          work_step_lawful=0;
 375   5                      }
 376   4                  }break;
 377   3              }
 378   2          }
 379   1          if(work_step_lawful==0)//如果工步违法,则初始化工步。
 380   1          {
 381   2              CurrentWorkStep    = 0;
 382   2              SumWorkStep = 1;
 383   2              WorkStep[1].type = STOP;
 384   2              return(0);
 385   2          }
 386   1          else
 387   1          {
 388   2              return(1);
 389   2          }
 390   1      }
 391          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2505    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      28
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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