📄 fpj5.lst
字号:
185 4 k_cnt++;
186 4 }
187 3 break;
188 3 case FH:
189 3 if(k_cnt>0)break;//负号只能是第一位 k_cnt=0
190 3 fh_b=!fh_b;
191 3 if(fh_b){ZLG7289_Download(0,5,0,FH);}
192 3 else{ZLG7289_Download(0,5,0,OFF);}
193 3 break;
194 3 case DP:
195 3 if(k_cnt==0)break;// . 和 -. 不存在
196 3 if((dp_b==1)&&(dp_cnt!=k_cnt))break;//dp唯一
197 3 dp_b=!dp_b;
198 3 if(dp_b){ZLG7289_Download(0,5,1,dat[k_cnt-1]);dp_cnt=k_cnt;dpend_b=1;}
199 3 else{ZLG7289_Download(0,5,0,dat[k_cnt-1]);}
200 3 break;
201 3 case CLR:
202 3 set_off();k_cnt=0;fh_b=0;dp_b=0;dat[0]=0;dat[0]=0;dat[1]=0;dat[2]=0;dat[3]=0;dat[4]=0;
203 3 break;
204 3 case ENT://对输入数据进行验证,并进入下一个数据验证状态
205 3 temp=calc();
206 3 switch(ent_state)
207 3 {
208 4 case 0:
209 4 if((temp<=2500)&&(temp>=0.1))
210 4 {dat_a=temp;stor1_dat(0x00,dat_a);datok_b=1;}
211 4 break;
212 4 case 1:
213 4 if((temp<=2500)&&(temp>=0.1))
214 4 {dat_b=temp;stor1_dat(0x10,dat_b);datok_b=1;}
215 4 break;
216 4 case 2:
217 4 if((temp<=50)&&(temp>=0.1))
218 4 {dat_c=temp;stor1_dat(0x20,dat_c);datok_b=1;}
219 4 break;
220 4 case 3:
221 4 if((temp<=100)&&(temp>=0.1))
222 4 {dat_d=temp;stor1_dat(0x30,dat_d);datok_b=1;}
223 4 break;
224 4 case 4:
225 4 if((temp<=50)&&(temp>=0.1))
226 4 {dat_e=temp;stor1_dat(0x40,dat_e);datok_b=1;}
227 4 break;
228 4 case 5:
229 4 if((temp>=(-10))&&(temp<=10))
230 4 {dat_f=temp;stor1_dat(0x50,dat_f);datok_b=1;}
231 4 break;
232 4 default:break;
233 4 }
234 3 if(datok_b)
235 3 {
236 4 f_key=1;k_new=ENT;f_20ms=0;xstate=0;datok_b=0;
237 4 }
238 3 else
239 3 {
240 4 set_off();k_cnt=0;fh_b=0;dp_b=0;dat[5]=0;dat[0]=0;dat[1]=0;dat[2]=0;dat[3]=0;dat[4]=0;
241 4 }
C51 COMPILER V7.50 FPJ5 07/24/2007 21:41:13 PAGE 5
242 3 break;
243 3 default:
244 3 break;
245 3 }
246 2 break;
247 2 case 2://运行态---只响应 STOP
248 2 switch(k_new)
249 2 {
250 3 case STOP:TOUT=1;out_b=0;xstate=3;LRUN=LOFF;LG=LON;LSTOP=LON;//停止后,显示不变
251 3 break;
252 3 default:
253 3 break;
254 3 }
255 2 break;
256 2 case 3://停止态--只响应 RUN ENT
257 2 switch(k_new)
258 2 {
259 3 case RUN:xstate=2;LRUN=LON;LG=LON;LSTOP=LOFF;tout_cnt=result*10;TOUT=0;out_b=1;cnt_20ms=2;cnt_100ms=
-5;
260 3 break;
261 3 case ENT:xstate=0;ent_state=5;f_key=1;k_new=ENT;f_20ms=0;//重新执行下验证A
262 3 LRUN=LOFF;LG=LOFF;LSTOP=LOFF;
263 3 break;
264 3 default:
265 3 break;
266 3 }
267 2 break;
268 2 default:
269 2 break;
270 2 }
271 1 }
272 //**************************根据参数进行计算,并转换到dat[0--5]
273 void calcg(void)
274 {
275 1 ulong temp;
276 1 result=dat_a*dat_b*dat_c*dat_d*CON_DAT1/(dat_e*CON_DAT2)+dat_f;
277 1 //结果最大18760
278 1 if(result>18760) result=18760;
279 1 if(result<0) result=0;
280 1 temp=result*10;//将小数位变为整数
281 1 dat[0]=temp/100000; temp=temp%100000;
282 1 dat[1]=temp/10000; temp=temp%10000;
283 1 dat[2]=temp/1000; temp=temp%1000;
284 1 dat[3]=temp/100; temp=temp%100;
285 1 dat[4]=temp/10; temp=temp%10;
286 1 dat[5]=temp;
287 1
288 1 }
289 //**************************
290 void keypd_mainloop(void)//按键判断20ms一次
291 {
292 1 if(!f_20ms) return;
293 1 f_20ms=0;
294 1 if ( ZLG7289_pinINT == 0 ) //有键按下
295 1 {
296 2 //读
297 2 k = ZLG7289_Key();
298 2 while (!ZLG7289_pinINT ); //等待按键抬起
299 2 switch(k)
300 2 {
301 3 case 1: k_new=0;break;//0
302 3 case 11: k_new=1;break;//1
C51 COMPILER V7.50 FPJ5 07/24/2007 21:41:13 PAGE 6
303 3 case 10: k_new=2;break;//2
304 3 case 9: k_new=3;break;//3
305 3 case 8: k_new=4;break;//4
306 3 case 15: k_new=5;break;//5
307 3 case 14: k_new=6;break;//6
308 3 case 13: k_new=7;break;//7
309 3 case 12: k_new=8;break;//8
310 3 case 2: k_new=9;break;//9
311 3 case 0: k_new=10;break;//+-
312 3 case 3: k_new=11;break;//dp
313 3 case 7: k_new=12;break;//CLR
314 3 case 4: k_new=13;break;//ENT
315 3 case 5: k_new=14;break;//STOP
316 3 case 6: k_new=15;break;//RUN
317 3 default: break;
318 3 }
319 2 f_key=1;
320 2 }
321 1 }
322 //**************************
323 void tout_mainloop(void)//脉冲输出处理
324 {
325 1 if((f_100ms)&&(out_b))
326 1 {
327 2 f_100ms=0;
328 2 if(--tout_cnt==0)
329 2 {
330 3 TOUT=1;out_b=0;
331 3 }
332 2 }
333 1 }
334 //**************************
335 void set_off(void)
336 {
337 1 ZLG7289_Download(0,0,0,15);
338 1 ZLG7289_Download(0,1,0,15);
339 1 ZLG7289_Download(0,2,0,15);
340 1 ZLG7289_Download(0,3,0,15);
341 1 ZLG7289_Download(0,4,0,15);
342 1 ZLG7289_Download(0,5,0,15);
343 1 }
344
345 //******************************************
346 void disp_out(void) //根据dat[0-5]内容显示
347 {
348 1 uchar i;
349 1 //显示修正
350 1 //正数 如果有非0数据,退出for循环
351 1 //正数 15 0 0,0 0 1(0.1) -->15 15 15 15 0 1
352 1 // 15 0 1 0 0 1(100.1)-->15 15 1 0 0 1
353 1
354 1 //负数 如果有非0数据,将前一个数据置符号位,退出for循环
355 1 //负数 10 0 0,0 0 1(-0.1) -->15 15 15 10 0 1
356 1 // 10 0 1 0 0 1(-100.1)-->15 10 1 0 0 1
357 1 for(i=1;i<5;i++)
358 1 {
359 2 if(dat[i]!=0)
360 2 {
361 3 if(dat[0]==10){dat[0]=15;dat[i-1]=10;}//负数
362 3 break;
363 3 }
364 2 if(dat[i]==0){dat[i]=15;}
C51 COMPILER V7.50 FPJ5 07/24/2007 21:41:13 PAGE 7
365 2 }
366 1 if(dat[4]==15)dat[4]=0;
367 1 if(dat[0]==10){dat[0]=15;dat[3]=10;}//补丁---仅在"-0.x时有效"
368 1 //输出显示
369 1 for(i=0;i<6;i++)
370 1 {
371 2 if(i==4){ZLG7289_Download(0,i,1,dat[i]);}
372 2 else{ZLG7289_Download(0,i,0,dat[i]);}
373 2 }
374 1 }
375 //************************************************
376 void dispg_out(void) //根据dat[0-5]内容显示 正数 没有符号位
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -