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

📄 other.lst

📁 用于测试步进电机
💻 LST
字号:
C51 COMPILER V7.00  OTHER                                                                  09/14/2006 16:35:49 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE OTHER
OBJECT MODULE PLACED IN OTHER.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE OTHER.C OPTIMIZE(9,SIZE) BROWSE ORDER DEBUG OBJECTEXTEND

stmt level    source

   1          /*****************************************
   2          *    文件名:OTHER.C
   3          *****************************************/
   4          #include <REG51STC.H>
   5          #include "CMD16887.H"
   6          #include "externxy.h"
   7          /******************************************
   8          *  功能:金额取整加油
   9          *******************************************/
  10          void oil_intmoney(uchar gunidid)   //金额取整加油
  11          {  ulong  mm;
  12   1              uint aa,bb,cc;  
  13   1      
  14   1              if(gunidid==0){mm=gun1.sale;ration_mode_a=0;bbyte=dotmode[decimal_a];}
  15   1              else {mm=gun2.sale;ration_mode_b=0;bbyte=dotmode[decimal_b];}
  16   1      
  17   1                 //小数点
  18   1                      
  19   1              if(a5)aa=100;  //单价小数点
  20   1              else if(a2)aa=1000;
  21   1              else aa=1;
  22   1      
  23   1              if(a3){bb=100;cc=mm%100;mm=mm+100-cc;cc=100-cc;}  //金额小数点
  24   1              else if(a0){bb=10;cc=mm%100;mm=mm+10-cc;cc=10-cc;}
  25   1              else {bb=1;cc=0;mm+=50;}
  26   1              
  27   1              if(gunidid==0)
  28   1              {       ration_num_a=mm;
  29   2                      mm=mm*120*aa/bb/price_a-gun1.pulse-jl1s;
  30   2                      ration_pulse_a=mm;  //定量脉冲
  31   2              }
  32   1              else
  33   1              {       ration_num_b=mm;
  34   2                      mm=mm*120*aa/bb/price_b-gun2.pulse-jl2s;
  35   2                      ration_pulse_b=mm;  //定量脉冲
  36   2              }
  37   1              
  38   1      }
  39          /**********************************************************
  40          *   功能:取消加油时,按退出键后清原来加油数据
  41          **********************************************************/
  42          void  clr_exitdata_a(void)
  43          {
  44   1              //gun1.liter=0;
  45   1              //gun1.sale=0;
  46   1              //gun1.pulse=0;
  47   1              updatea=1;   //通知更新
  48   1      }
  49          /**********************************************************
  50          *   功能:取消加油时,按退出键后清原来加油数据
  51          **********************************************************/
  52          void  clr_exitdata_b(void)
  53          {
  54   1              //gun2.liter=0;
  55   1              //gun2.sale=0;
C51 COMPILER V7.00  OTHER                                                                  09/14/2006 16:35:49 PAGE 2   

  56   1              //gun2.pulse=0;
  57   1              updateb=1;   //通知更新
  58   1      }
  59          /**********************************************************
  60          *   功能:检查锁机密码a/b
  61          ***********************************************************/
  62          bit pass_check(uchar gunidid)
  63          {       void  *pt;
  64   1              uint  add;
  65   1              union{
  66   1                      uchar c[4];
  67   1                      ulong x;
  68   1         }temp;
  69   1              add=PASSSTARTADD;
  70   1              pt=&temp.c[0];
  71   1              if(gunidid==0)
  72   1              {       
  73   2                      readbyteseq(add,pt,4);
  74   2                      if(menu1==2 ||(menu1==4 && temp_mema==1))
  75   2                      {
  76   3                              if(temp.x==ration_num_a && multiple_a==10000) return(1);   //密码验证
  77   3                              if(ration_num_a==0x5e4 && multiple_a==10000 && (menu1==4 || locknooil_a)) return(1);   //修改戓被锁住时
             -有用
  78   3                              else  return(0);
  79   3                      }
  80   2                      else if(menu1==4 && temp_mema==3)
  81   2                      {
  82   3                              if(ration_pulse_a==ration_num_a && multiple_a==10000) return(1); //两次密码必须一致
  83   3                              else  return(0);
  84   3                      }
  85   2              }
  86   1              else     //   gunidid==1  //
  87   1              {       add+=4;
  88   2                      readbyteseq(add,pt,4);
  89   2                      if(menu2==2 ||(menu2==4 && temp_memb==1))
  90   2                      {
  91   3                              if(temp.x==ration_num_b && multiple_b==10000) return(1);   //密码验证
  92   3                              if(ration_num_b==0x5e4 && multiple_b==10000 && (menu2==4 || locknooil_b)) return(1);   //修改戓被锁住时
             -有用
  93   3                              else  return(0);
  94   3                      }
  95   2                      else if(menu2==4 && temp_memb==3)
  96   2                      {
  97   3                              if(ration_pulse_b==ration_num_b && multiple_b==10000) return(1); //两次密码必须一致
  98   3                              else  return(0);
  99   3                      }
 100   2              }
 101   1      }
 102          /**********************************************************
 103          *  功能:计算定量脉冲数  number为金额限量,gunidid为工作面序号
 104          **********************************************************/
 105          void  calculate_ration(uchar gunidid)
 106          {       uint aa,bb,cc;
 107   1              float  mm,fb;
 108   1              ulong  nn;
 109   1              if(gunidid==0)
 110   1              {       
 111   2                      bbyte=dotmode[decimal_a];   //小数点
 112   2                      if(a5)aa=100;  //单价小数点
 113   2                      else if(a2)aa=1000;
 114   2                      else aa=1;
 115   2            
C51 COMPILER V7.00  OTHER                                                                  09/14/2006 16:35:49 PAGE 3   

 116   2                      if(a3){bb=100;}  //金额小数点
 117   2                      else if(a0){bb=10;}
 118   2                      else {bb=1;}
 119   2      
 120   2                      if(a4)cc=100;
 121   2                      else cc=1000;
 122   2                      if(!ration_mode_a)
 123   2                      {       //定元  
 124   3                              mm=ration_num_a;
 125   3                              mm=mm*aa/bb/price_a+0.005;
 126   3                              fb=999999.0/cc;
 127   3                              if(mm>fb)
 128   3                              {       ration_num_a=999999;
 129   4                                      mm=999999.0/cc+0.005;
 130   4                                      //fb=999999.0*bb*price_a/aa/cc;
 131   4                                      //ration_num_a=fb;
 132   4                                      ration_mode_a=1;  //定升
 133   4                                      vip_mode_a=ration_mode_a;
 134   4                                      multiple_a=0;
 135   4                                      if(state1==2)k1spk_time=110; 
 136   4                              }
 137   3                              mm=mm*120.0;
 138   3                              nn=mm;
 139   3                              //if(nn<120) nn=0;
 140   3                              ration_pulse_a=nn;                      
 141   3                      }
 142   2                      else
 143   2                      {       //定升
 144   3                              mm=ration_num_a;
 145   3                              mm=mm/cc+0.005;
 146   3                              fb=999999.0*aa/bb/price_a;
 147   3                              if(mm>fb)
 148   3                              {
 149   4                                      ration_num_a=999999;
 150   4                                      mm=999999.0*aa/bb/price_a+0.005;
 151   4                                      //fb=999999.0*cc*aa/bb/price_a;
 152   4                                      //ration_num_a=fb;
 153   4                                      ration_mode_a=0;  //定元
 154   4                                      vip_mode_a=ration_mode_a;
 155   4                                      multiple_a=0;
 156   4                                      if(state1==2)k1spk_time=110; 
 157   4                              }
 158   3                              mm=mm*120.0;
 159   3                              nn=mm;
 160   3                              //if(nn<120) nn=0;
 161   3                              ration_pulse_a=nn;      
 162   3                      }
 163   2              }
 164   1              //--------------------------
 165   1              else
 166   1              {       
 167   2                      bbyte=dotmode[decimal_b];   //小数点
 168   2                      if(a5)aa=100;  //单价小数点
 169   2                      else if(a2)aa=1000;
 170   2                      else aa=1;
 171   2            
 172   2                      if(a3){bb=100;}  //金额小数点
 173   2                      else if(a0){bb=10;}
 174   2                      else {bb=1;}
 175   2      
 176   2                      if(a4)cc=100;
 177   2                      else cc=1000;
C51 COMPILER V7.00  OTHER                                                                  09/14/2006 16:35:49 PAGE 4   

 178   2                      if(!ration_mode_b)
 179   2                      {       //定元  
 180   3                              mm=ration_num_b;
 181   3                              mm=mm*aa/bb/price_b+0.005;
 182   3                              fb=999999.0/cc;
 183   3                              if(mm>fb)
 184   3                              {       ration_num_b=999999;
 185   4                                      mm=999999.0/cc+0.005;
 186   4                                      //fb=999999.0*bb*price_b/aa/cc;
 187   4                                      //ration_num_b=fb;
 188   4                                      ration_mode_b=1;  //定升
 189   4                                      vip_mode_b=ration_mode_b;
 190   4                                      multiple_b=0;
 191   4                                      if(state2==2)k2spk_time=110; 
 192   4                              }
 193   3                              mm=mm*120.0;
 194   3                              nn=mm;
 195   3                              //if(nn<120) nn=0;
 196   3                              ration_pulse_b=nn;                      
 197   3                      }
 198   2                      else
 199   2                      {       //定升
 200   3                              mm=ration_num_b;
 201   3                              mm=mm/cc+0.005;
 202   3                              fb=999999.0*aa/bb/price_b;
 203   3                              if(mm>fb)
 204   3                              {
 205   4                                      ration_num_b=999999;
 206   4                                      mm=999999.0*aa/bb/price_b+0.005;
 207   4                                      //fb=999999.0*cc*aa/bb/price_b;
 208   4                                      //ration_num_b=fb;
 209   4                                      ration_mode_b=0;  //定元
 210   4                                      vip_mode_b=ration_mode_b;
 211   4                                      multiple_b=0;
 212   4                                      if(state2==2)k2spk_time=110; 
 213   4                              }
 214   3                              mm=mm*120.0;
 215   3                              nn=mm;  
 216   3                              //if(nn<120) nn=0;
 217   3                              ration_pulse_b=nn;      
 218   3                      }
 219   2              }
 220   1      }
 221          /***********************************************
 222          *功能:启动步进电机
 223          ***********************************************/
 224          void startup(uint number)  
 225          {
 226   1              if(!electromotor && state1==0)
 227   1              {  clear_worka(); clear_workb();
 228   2                      if(increment_a<200) increment_a=200;
 229   2                      if(increment_a>500) increment_a=500;
 230   2                      calrev();  //根据转速计算定时器值
 231   2                      if(increment_b>=63036)runf.x=63036;   //12M时为64286
 232   2                      else runf.x=increment_b;
 233   2                      RCAP2L=runf.x%256;
 234   2                      RCAP2H=runf.x/256;
 235   2                      runsum=400;
 236   2                      cmdstop=0;
 237   2                      if(increment_a>235)price_b=number-2;   //12M时为:235
 238   2                      else price_b=number-1;
 239   2                      hlow=0;
C51 COMPILER V7.00  OTHER                                                                  09/14/2006 16:35:49 PAGE 5   

 240   2                      startbujin=1;
 241   2                      electromotor=1;
 242   2                      modehl_a=60;modehl_b=60;
 243   2              }
 244   1      }
 245          /**************************************************
 246          *功能:设置转速0-9
 247          **************************************************/
 248          void setb_rev(uchar number)
 249          {
 250   1              if(state1==3)
 251   1              {if(ration_num_a<3){save_ok=1;increment_a=increment_a*10+number;ration_num_a++;disp_rev();}}
 252   1              else
 253   1              {  if(number==0)number=10;
 254   2                      startup(number*10);
 255   2              }
 256   1      }
 257          /************************************************
 258          *功能:根据转速计算定时器值
 259          *      步进:细分2  每输入400个脉冲转动一圏
 260          *************************************************/
 261          void calrev(void)
 262          {  
 263   1         increment_b=300000/increment_a;  //increment_a为转速  r/min  12M/6T为150000  24M/6T为:300000
 264   1         increment_b=65536-increment_b;
 265   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2124    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      41
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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