📄 usermain.lst
字号:
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 + -