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

📄 main.lst

📁 0834实现数据的采集
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -