📄 main.lst
字号:
250 bit buttonquickflag; //
251 bit glintreg; //闪烁设置寄存器
252 bit KeyOn; //
253 bit StartFlag; //电机起动标志
254 bit shanshuoflag; //闪烁标志
255 bit buttonflag; //按键按下标志
256 bit clrflag; //清零键按下标志
257 bit KvoFlag; //KVO标志
258 bit KeyRepeatFlag; //有重复输出键按下标志
259 bit yediflag;
260 bit warnflag;
261 bit batlowflag; //电池欠压标志
262 bit batlowflag1; //电池欠压标志
263 bit LEDFLAG; //LED闪烁标志
264 bit Elflag; //液晶背光控制
265 bit STOPFLAG; //停止指示灯标志
266 bit yaliseton; //压力开始标志
267 bit mode;
268 bit modecoverflag; //模式转换设置标志
269 bit MovFlag;
270 bit LOWFLAG;
271 bit QIPAO1FLAG;
272 bit QIPAO2FLAG;
273 //bit QIPAO22FLAG;
274 bit QIPAO12FLAG;
275 bit qipao2hiflag;
276 //bit YYYFLAG;
277 //=========联合变量声明===============
278 union time //定时器T0初值
279 {
280 uint T0data;
281 uchar T0D[2];
282 }TT0,TTKVO,TTRUN;
283
284 union f
285 {
286 uchar a[2]; //输液速度
287 uint b; //预输液量
288 }shudu,zhonglian;
289
290 uchar code QiPaoJD[13]= {20,10,2};//0.50V-1.7V
291 uchar code ZhuSaiLMD[3]={90,105,115};//1.0V-2.2V
292 uchar code ShuYeJD[13]={70,75,80,85,90,95,100,105,110,115,120,125,130};//-30%~30%
293 uchar code YeDiJD[5]={20,21,22,23,24};
294 uchar code date[7]={0,7,0,4,0,8,2}; //程序版本日期
295 //==========主程序开始=======================qqq
296 main()
297 {
298 1 Inition();
299 1 while(1)
300 1 {
301 2 CLRWDT;
302 2 ModeCover(); //模式转换
303 2 MenuSet(); //读取键值,判断是否进行参数设置
C51 COMPILER V7.00 MAIN 05/22/2007 16:53:18 PAGE 6
304 2 DisplayRefurbish(); //把液晶显示屏显示的数据刷新
305 2 GetsAdData(); //获取传感器各路数据
306 2 JudgeWarn(); //判断是否异常
307 2 WarnDisposal(); //报警处理
308 2 MovPicture();
309 2 }//while
310 1 }
311 //=========外部中断0,检测液滴================
312 void Interrupt1() interrupt 2
313 {
314 1 if(mode==1)
315 1 {
316 2 if(StartFlag==1)
317 2 {
318 3 yedicountl=0;
319 3 yedicounth=0;
320 3 yediflag=1;
321 3 EX1=0; //shut off interrupt 1
322 3 dropspeed++;
323 3 Int1=1;
324 3 LedTurn();
325 3 }
326 2 }
327 1 }
328 //==========定时器0,定时时MS=============
329 void Time0() interrupt 1
330 {
331 1 TH0=TH0DATA;
332 1 TL0=TL0DATA;
333 1 //==========判断步进电机是否运行================
334 1 if((StartFlag)||(KvoFlag))
335 1 {
336 2 speedsetcount++; //TIME OUT
337 2 if(KvoFlag==1)
338 2 {
339 3 if(speedsetcount>speedsethTT0) //KVO输液
340 3 {
341 4 speedsetcount=0;
342 4 TH0=TTKVO.T0D[0];
343 4 TL0=TTKVO.T0D[1];
344 4 StepperDrive0(); //步进一次(3.9度)
345 4 }
346 3 }
347 2
348 2 else if(QuickRunFlag==1) //快速冲洗600mL/h
349 2 {
350 3 TH0=TTRUN.T0D[0];
351 3 TL0=TTRUN.T0D[1];
352 3 StepperDrive0(); //步进一次(3.9度)
353 3 }
354 2
355 2 else
356 2 {
357 3 if(speedsetcount>speedseth)
358 3 {
359 4 speedsetcount=0;
360 4 TH0=TT0.T0D[0];
361 4 TL0=TT0.T0D[1];
362 4 if(shudu.b<60)
363 4 StepperDrive1(); //步进一次(3.9度)
364 4 else if(shudu.b<751)
365 4 StepperDrive1();
C51 COMPILER V7.00 MAIN 05/22/2007 16:53:18 PAGE 7
366 4 else
367 4 StepperDrive2();
368 4
369 4 if(mode==0)
370 4 {
371 5 ledcount++;
372 5 if(ledcount>400)
373 5 {
374 6 ledcount=0;
375 6 LedTurn();
376 6 }
377 5 }
378 4 }
379 3 }
380 2
381 2 }
382 1 }
383
384 //===========定时器1,定时时间为1MS===============
385 void Time1() interrupt 3
386 {
387 1 TH1=0x3c;
388 1 TL1=0xbe;
389 1 //===============秒信号计时=================================
390 1 if(StartFlag==1)
391 1 {
392 2 time++;
393 2 if(time>19)
394 2 {
395 3 time=0;
396 3 second++;
397 3 second1++;
398 3 if(second>59)
399 3 {
400 4 second=0;
401 4 minute++;
402 4 if(minute>59)
403 4 {
404 5 minute=0;
405 5 hour++;
406 5 }
407 4 }
408 3 if(second1>59)
409 3 {
410 4 second1=0;
411 4 minute1++;
412 4 if(minute1>59)
413 4 {
414 5 minute1=0;
415 5 hour1++;
416 5 }
417 4 }
418 3 }
419 2 }
420 1
421 1
422 1 }
423 void Time2() interrupt 5
424 {
425 1 TF2=0;
426 1 //==================================
427 1 if((yaliseton==0)&&(StartFlag==1))//压力承受开始计时
C51 COMPILER V7.00 MAIN 05/22/2007 16:53:18 PAGE 8
428 1 yalistartcount++;
429 1 //==========液滴计数判断=========================
430 1 if((mode==1)&&(StartFlag==1))
431 1 {
432 2 yedicountl++;
433 2 if(yedicountl>=50)
434 2 {
435 3 yedicountl=0;
436 3 yedicounth++;
437 3 if(yedicounth>yeditime)
438 3 {
439 4 yedicounth=0;
440 4 warndata=YEDISHIXIAO;
441 4 }
442 3 }
443 2
444 2 if(yediflag==1)
445 2 {
446 3 if(EX1==0)
447 3 {
448 4 Ex0Count++;
449 4 if(Ex0Count>5)
450 4 {
451 5 IE1=0;
452 5 Ex0Count=0;
453 5 EX1=1;
454 5 }
455 4 } //以上消除抖动
456 3 }
457 2 }
458 1 //-----------------------------------------
459 1 if(selectdata<3)
460 1 {
461 2 shanshuocount++;
462 2 if(shanshuocount>20)//闪烁时间计数
463 2 {
464 3 shanshuocount=0;
465 3 glintreg=1;
466 3 }
467 2 }
468 1 //====按键判断============================================
469 1 KeyDataP=Key();
470 1 if(KeyDataP!=0)
471 1 {
472 2 Elflag=0; //背光标志开启
473 2 KeyOn=1;
474 2 KeyData=KeyDataP;
475 2 }
476 1 else //一有按键松开,立即清零
477 1 {
478 2 KeyRepeatFlag=0; //重复按标志清零
479 2 clrflag=0; //清零键标志清零
480 2 buttonflag=0; //有键按下标志清零
481 2 buttonquickflag=0; //快加、减键标志清零
482 2 buttonquickcount=0;//快加减键计数器清零
483 2 buttoncount=0; //有键按下计数器清零
484 2 Keycount=0;
485 2 //========背光处理==============
486 2 }
487 1 if(buttonflag==1)
488 1 buttoncount++;
489 1 if(buttonquickflag==1)
C51 COMPILER V7.00 MAIN 05/22/2007 16:53:18 PAGE 9
490 1 buttonquickcount++;
491 1 //判断清零键是否一直按下
492 1 if(clrflag)
493 1 clrcount++;
494 1 else
495 1 clrcount=0;
496 1 //=======起动键判断==========================
497 1 if(QuickRunFlag==1)
498 1 { //快速冲洗计时,0.6秒钟(0.1mL)
499 2 quickruncount++;
500 2 if(quickruncount>30)
501 2 {
502 3 quicktotalcount++;
503 3 quicktotal=quicktotalcount/5;
504 3 quickruncount=0;
505 3 QuickRunFlag=0; //冲洗时间到,清冲洗标志
506 3 }
507 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -