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

📄 usermain.lst

📁 电子称重的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   USERMAIN                                                              05/04/2008 21:35:46 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE USERMAIN
OBJECT MODULE PLACED IN UserMain.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE UserMain.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<config.h>
   2          #include<head.h>
   3          #include<main.h>
   4          #include<usermain.h>
   5          #define ADBUFLEN 10
   6          #define CAPS    7
   7          #define CAPEXL  0
   8          #define CAPEXH  5
   9          #define SSENSN   8
  10          #define ZEROMS  3
  11          #define ZTRMS   5
  12          #define STAMS   5
  13          #define FILMS   9
  14          
  15          #define ADZH    9
  16          #define ADZL    -9
  17          
  18          
  19          #define ADGH    9
  20          #define ADGL    0
  21          
  22          #define HOLDT   7
  23          #define HOLDD   5
  24          
  25          #define COM_MODES       4
  26          #define COM_ADDS        25
  27          #define COM_BAUDS       6
  28          
  29          code    SCAPS  scaps[]={
  30                                  {1.0,0.1,0.2,0.5,0.6,0.8},
  31                                  {1.2,0.2,0.5,0.6,0.8,1.0},
  32                                  {1.5,0.2,0.5,0.8,1.0,1.2},
  33                                  {2.0,0.5,0.8,1.0,1.5,1.8},
  34                                  {3.0,0.5,1.0,1.5,2.0,2.5},
  35                                  {5.0,1.0,2.0,2.5,3.0,4.0},
  36                                  {6.0,1.0,2.0,3.0,4.0,5.0},
  37                                  {7.5,2.5,4.0,5.0,6.0,7.0},
  38                                  {0,0,0,0,0,0}
  39                                  };
  40          code    float  DivTab[]={0.00001,0.00002,0.00005,0.0001,0.0002,0.0005,0.001,0.002,0.005,0};
  41          
  42          code     UNITS unitt[]={
  43                          {" Kg",1,0,0x1,0},
  44                          {" ct",0.2,-3,0x2,0},
  45                          {" g ",0.001,-3,0x4,0},
  46                          {" t ",1000,3,0x8,0},
  47                          {" H.L",0.0378125,-1,0x10,1},
  48                          {" lb",0.45359237,0,0x20,0},
  49                          {" oz",0.028349523125,-1,0x40,0},
  50                          {" L.Z",0.028349523125,-1,0x80,1},
  51                          {" dr",0.0017718451,-2,0x100,0},//-2
  52                          {"   ",0,0,0}
  53                          };
  54          
  55          code char * dspt[]={"999","8.8.8.","777","6.6.6.","555","4.4.4.","333","2.2.2.","111","0.0.0.",};
C51 COMPILER V8.02   USERMAIN                                                              05/04/2008 21:35:46 PAGE 2   

  56          code char * fpt[]={"%6.0f","%7.1f","%7.2f","%7.3f","%7.4f","%7.5f"};
  57          code char * fptn[][6]=
  58                               {
  59                                {"%06.0f","%07.1f","%07.2f","%07.3f","%07.4f","%07.5f"},
  60                                {" %05.0f"," %06.1f"," %06.2f"," %06.3f"," %06.4f"," %06.5f"},
  61                                {"  %04.0f","  %05.1f","  %05.2f","  %05.3f","  %05.4f","  %05.5f"},
  62                                {"   %03.0f","   %04.1f","   %04.2f","   %04.3f","   %04.4f","   %04.5f"},
  63                               };
  64          
  65          code    Uint baudt[]={4800,9600,19200,38400,43000,0};
  66          code    Uchar zerot[]={3,6,10,15,20,25,30};
  67          CALSET pdata CalSet;//定义秤的设置量
  68          HOLDSET   pdata holdset;
  69          COM         pdata com;
  70          FUNSET  pdata funset;
  71          extern BOOL ShowWeiFlagEn;
  72          extern BOOL LineEnFlag;
  73          
  74          Uchar idata fun_state=0,cfun_state=0;
  75          
  76          enum SYSSTATE Sys_State;
  77          enum SSSTATE  SS_State;
  78          enum USSTATE  US_State;
  79          
  80          extern code    void(*SS_Funtab[])(MSG *);
  81          extern code    void(*US_Funtab[])(MSG *);
  82          
  83          void    s_stopfun(MSG  *pMsg)
  84          {
  85   1       pMsg->message=0;
  86   1      }
  87          void    s_startfun(MSG  *pMsg)
  88          {
  89   1       switch(pMsg->message)
  90   1       {
  91   2        case M_REFURBISH:
  92   2             SetTimer(100, 0);
  93   2             break;
  94   2        case M_FUNDELAYOK:
  95   2              KillTimer(0);
  96   2             Dspinit();
  97   2             setstate(S_WEIGHT);
  98   2             break;
  99   2        case M_KEYDOWN:
 100   2            if(pMsg->param==(TARE|CTRLF))setstate(S_SYSSET);
 101   2            else if(pMsg->param==TARE)
 102   2            setstate(S_USERSET);
 103   2             break;
 104   2       }
 105   1      }
 106          
 107          void SS_Startfun(MSG *pMsg)
 108          {
 109   1       switch(pMsg->message)
 110   1       {
 111   2       case M_REFURBISH:
 112   2              aprintf(0x00,"Y1C-1.1");
 113   2             SetTimer(100, 0);
 114   2             break;
 115   2        case M_FUNDELAYOK:
 116   2              KillTimer(0);
 117   2             SetNextFunState();
C51 COMPILER V8.02   USERMAIN                                                              05/04/2008 21:35:46 PAGE 3   

 118   2             break;
 119   2       }
 120   1      }
 121          void SS_Filsetfun(MSG *pMsg)
 122          {
 123   1         if(M_CHAR==pMsg->message)
 124   1              {
 125   2              switch(cfun_state)
 126   2             {
 127   3              case  0:                                   //滤波设定
 128   3                    if(pMsg->param==KEY_NEXT)SetNextFunState();
 129   3                    if(pMsg->param==KEY_ENTER)SetNextcFunState();
 130   3                    break;
 131   3             case  1:
 132   3                   if(pMsg->param==KEY_CHA)FilSet.filmode++;
 133   3                   if(pMsg->param==KEY_NEXT)
 134   3                   {E_write(I2C_FILMODE,FilSet.filmode);SetNextcFunState();}
 135   3                   break;
 136   3             case  2:
 137   3                   if(pMsg->param==KEY_CHA)FilSet.zeomode++;
 138   3                   if(pMsg->param==KEY_NEXT)
 139   3                   {E_write(I2C_ZEOMODE, FilSet.zeomode);SetFunState(fun_state);}
 140   3                   break;
 141   3              }
 142   2              PostMessage(M_REFURBISH,cfun_state);
 143   2              }
 144   1        else if(M_REFURBISH==pMsg->message)
 145   1              {
 146   2              switch(cfun_state)
 147   2             {
 148   3             case  0:
 149   3                   aprintf(0x20,"P1 Fs    ");
 150   3                   break;
 151   3             case  1:
 152   3                   aprintf(0x10,"FIL");    //设置滤波方式
 153   3                   if(FilSet.filmode>FILMS)FilSet.filmode=0;
 154   3                   aprintf(0x00,"%3bd",FilSet.filmode);
 155   3                   break;
 156   3             case  2:
 157   3                   aprintf(0x10,"ZEO");    //设置滤波方式
 158   3                   if(FilSet.zeomode>ZEROMS)FilSet.zeomode=0;
 159   3                   aprintf(0x00,"%3bd",FilSet.zeomode);
 160   3                   break;
 161   3              default:
 162   3                      SetcFunState(0);
 163   3              }
 164   2         }
 165   1      }
 166          void SS_Linsetfun(MSG *pMsg)
 167          {
 168   1         switch(pMsg->message)
 169   1         {
 170   2         case  M_CHAR:
 171   2              switch(cfun_state)
 172   2             {
 173   3              case  0:                                   //线性修正设置
 174   3                   if(pMsg->param==KEY_NEXT)SetNextFunState();
 175   3                   if(pMsg->param==KEY_ENTER){SetNextcFunState();ShowWeiFlagEn=1;}
 176   3                   break;
 177   3            case   1:
 178   3                   if(pMsg->param==KEY_NEXT)
 179   3                   {
C51 COMPILER V8.02   USERMAIN                                                              05/04/2008 21:35:46 PAGE 4   

 180   4                    scalenow.zero=scalenow.ad;
 181   4                    SetNextcFunState();
 182   4                   }
 183   3                   break;
 184   3            case   2:
 185   3                   if(pMsg->param==KEY_NEXT)
 186   3                   {
 187   4                    LineSet.linedot0=scalenow.ad;
 188   4                    E_writeex(I2C_LINEDOT0,(Uchar *)&LineSet.linedot0,sizeof(LineSet.linedot0));
 189   4                    SetNextcFunState();
 190   4                   }
 191   3                   break;
 192   3            case   3:
 193   3                   if(pMsg->param==KEY_NEXT)
 194   3                   {
 195   4                    LineSet.linedot1=scalenow.ad;
 196   4                    E_writeex(I2C_LINEDOT1,(Uchar *)&LineSet.linedot1,sizeof(LineSet.linedot1));
 197   4                    SetNextcFunState();
 198   4                   }
 199   3                   break;
 200   3            case   4:
 201   3                   if(pMsg->param==KEY_NEXT)
 202   3                   {
 203   4      #if 1
 204   4                    LineSet.linerule0=(LineSet.linedot0-scalenow.zero)/GetLineWei(0);
 205   4                    LineSet.linerule1=(scalenow.ad-LineSet.linedot1)/(CalSet.fSCap-GetLineWei(1));
 206   4                    LineSet.linerule1/=LineSet.linerule0;
 207   4                    LineSet.linerule0=((LineSet.linedot1-LineSet.linedot0)/(GetLineWei(1)-GetLineWei(0)))/LineSe
             -t.linerule0;
 208   4                     E_writeex(I2C_LINERULE0,(Uchar *)&LineSet.linerule0,sizeof(LineSet.linerule0));
 209   4                     E_writeex(I2C_LINERULE1,(Uchar *)&LineSet.linerule1,sizeof(LineSet.linerule1));
 210   4      #endif
 211   4                     ShowWeiFlagEn=0;
 212   4                     aprintf(0x20," good    ");
 213   4                     delayms(1000);
 214   4                     SetFunState(fun_state);
 215   4                   }
 216   3                   break;
 217   3              }
 218   2              PostMessage(M_REFURBISH,cfun_state);
 219   2              break;
 220   2         case M_REFURBISH:
 221   2              switch(cfun_state)
 222   2             {
 223   3             case  0:
 224   3                   aprintf(0x20,"P3 Lin   ");
 225   3                   break;
 226   3             case  1:
 227   3                   aprintf(0x00,"UNLOAD");
 228   3                   break;
 229   3             case  2:
 230   3                   aprintf(0x00,"%7f",GetLineWei(0));
 231   3                   aprintf(0x10,unitt[DEFINEUNIT].unitshow);
 232   3                   break;
 233   3            case  3:
 234   3                   aprintf(0x00,"%7f",GetLineWei(1));
 235   3      //             aprintf(0x10,unitt[DEFINEUNIT].unitshow);
 236   3                   break;
 237   3            case  4:
 238   3                   aprintf(0x00,"%7f",CalSet.fSCap);
 239   3      //             aprintf(0x10,unitt[DEFINEUNIT].unitshow);
 240   3                   break;
C51 COMPILER V8.02   USERMAIN                                                              05/04/2008 21:35:46 PAGE 5   

 241   3              default:
 242   3                      cfun_state=0;
 243   3              }
 244   2              break;
 245   2         }
 246   1      }
 247          void SS_Calsetfun(MSG *pMsg)
 248          {
 249   1         switch(pMsg->message)
 250   1         {
 251   2         case  M_CHAR:
 252   2              switch(cfun_state)
 253   2             {
 254   3             case  0:                                     //标定
 255   3                   if(pMsg->param==KEY_NEXT)SetFunState(SS_FILSET);
 256   3                   if(pMsg->param==KEY_ENTER){SetNextcFunState();ShowWeiFlagEn=1;}
 257   3                   break;
 258   3             case 1:
 259   3                   if(pMsg->param==KEY_CHA)CalSet.cweight++;
 260   3                   if(pMsg->param==KEY_NEXT){E_write(I2C_CWEIGHT,CalSet.cweight);SetNextcFunState();}
 261   3                   break;
 262   3            case   2:
 263   3                   if(pMsg->param==KEY_CHA)
 264   3                   {
 265   4                    scalenow.zero=scalenow.ad;
 266   4                    SetcFunState(5);
 267   4                   }
 268   3                   if(pMsg->param==KEY_NEXT)SetNextcFunState();
 269   3                   break;
 270   3            case   3:
 271   3                   if(pMsg->param==KEY_CHA)adchip.zero++;
 272   3                   if(pMsg->param==KEY_NEXT)
 273   3                   {E_write(I2C_ADCHIP_ZERO,adchip.zero);SetNextcFunState();}
 274   3                   break;
 275   3           case   4:
 276   3                   if(pMsg->param==KEY_CHA)adchip.gain++;
 277   3                   if(pMsg->param==KEY_NEXT)
 278   3                   {E_write(I2C_ADCHIP_GAIN,adchip.gain);
 279   4                    SetcFunState(2);adinit();}
 280   3                   break;
 281   3            case   5:
 282   3                   if(pMsg->param==KEY_NEXT)
 283   3                   {
 284   4                    CalSet.rule=(scalenow.ad-scalenow.zero)/GetTechWei(CalSet.cweight);
 285   4                    E_writeex(I2C_RULE,(Uchar *)&CalSet.rule,sizeof(CalSet.rule));
 286   4                   setstate(S_START);
 287   4                   }
 288   3                   break;
 289   3              }
 290   2              PostMessage(M_REFURBISH,cfun_state);
 291   2              break;
 292   2        case M_REFURBISH:
 293   2              switch(cfun_state)
 294   2             {
 295   3              case  0:
 296   3                   aprintf(0x20,"P4 CAL   ");
 297   3                   break;
 298   3              case  1:
 299   3                   if(CalSet.cweight>scaps[CalSet.cSCap].SCapn*10)CalSet.cweight=1;
 300   3                   aprintf(0x00,"%7f",GetTechWei(CalSet.cweight));
 301   3                   aprintf(0x10," Kg");
 302   3                   break;
C51 COMPILER V8.02   USERMAIN                                                              05/04/2008 21:35:46 PAGE 6   

 303   3              case  2:
 304   3                   aprintf(0x10,"CAL");
 305   3                   break;
 306   3              case  3:
 307   3                   aprintf(0x10,"ADZ");
 308   3                   if(adchip.zero>ADZH)adchip.zero=ADZL;
 309   3                   aprintf(0x00,"%3bd",adchip.zero);
 310   3                   break;
 311   3             case  4:
 312   3                   aprintf(0x10,"ADG");
 313   3                   if(adchip.gain>ADGH)adchip.gain=ADGL;
 314   3                   aprintf(0x00,"%3bd",adchip.gain);
 315   3                   break;
 316   3              case  45:
 317   3                   aprintf(0x10,"LOD");
 318   3                   break;
 319   3              }
 320   2              PostMessage(M_REFURBISH,cfun_state);
 321   2              break;
 322   2        case M_ADFILOK:
 323   2             switch(cfun_state)
 324   2             {
 325   3              case   2:

⌨️ 快捷键说明

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