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

📄 finally.lst

📁 motor_control.zip
💻 LST
📖 第 1 页 / 共 2 页
字号:
 280   2                      avge=pingjun();
 281   2                      if(xianshi==1)
 282   2                      {BCD_H_L(avge-200,0); }    
 283   2                      a=IN0;
 284   2                      bb=IN1;
 285   2                      c=IN2;
 286   2                      //d=IN3;
 287   2                      //e=IN4;
 288   2                      f=IN5;
 289   2                      g=IN6;
 290   2                      
 291   2                      if(backward==1)
 292   2                      {       
 293   3                              START=1;
 294   3                              LASTS=0;
 295   3                              BACK=0;
 296   3                              LASTB=1;
 297   3                              LASTF=1;
 298   3                              counter2=0;
 299   3                              judgementback(90,20,20,1);
 300   3                      }
 301   2                      if(forward==1)
 302   2                      {       
 303   3                              START=1;
C51 COMPILER V8.02   FINALLY                                                               09/06/2007 19:43:26 PAGE 6   

 304   3                              LASTS=0;
 305   3                              BACK=1; //前进
 306   3                              LASTB=0;
 307   3                              LASTF=0;
 308   3                              judgement(90,20,20);            
 309   3                      }
 310   2                 if(black==1)         
 311   2                 {  
 312   3                      START=1;
 313   3                              LASTS=0;
 314   3                      TR1=1; //开定时器
 315   3                              time2=0;            
 316   3                              judgement(90,20,20);
 317   3                      }
 318   2                 if(keykey==1) 
 319   2                      {
 320   3                              speedchange(35,1);
 321   3                              speedchange(35,0);
 322   3                              chazhi1=abs((int)(avge-avge0));
 323   3                              if(chazhi1>chazhi)       //chazhi1>=20
 324   3                              {       move_or_not=1;
 325   4                                      START=1;
 326   4                                      LASTS=0;
 327   4                                      counter2=50;
 328   4      
 329   4                                      if(avge>avge0) 
 330   4                                      { 
 331   5                                              BACK=0;//后退
 332   5                                              LASTB=1;
 333   5                                              LASTF=1;
 334   5                                              delayms(2);
 335   5                                              judgementback(35,1,10,0);
 336   5                                      }
 337   4                                      if(avge<avge0) 
 338   4                                      {
 339   5                        
 340   5                                              BACK=1;  //前进
 341   5                                              LASTB=0;
 342   5                                              LASTF=0;
 343   5                                              delayms(2);
 344   5                                              judgement(35,1,10);
 345   5                        
 346   5                                      }       
 347   4                              }               
 348   3                      
 349   3                              else     
 350   3                              {
 351   4                                      START=0;
 352   4                                      LASTS=1;
 353   4                                      delayms(500);
 354   4                                      delayms(200);
 355   4                                      TR1=1; //开定时器
 356   4                                      time1=0; 
 357   4                                      time2=1;
 358   4      
 359   4                                                              
 360   4                              }       
 361   3              }
 362   2                 
 363   2              }
 364   1      }
 365          
C51 COMPILER V8.02   FINALLY                                                               09/06/2007 19:43:26 PAGE 7   

 366          
 367          //////////////////////////////////////////////
 368          ////////////中断子程序///////////////////////
 369          ////////////////////////////////////////////
 370          /*PCA中断子程序*/
 371          void PCA_ISR (void) interrupt 9
 372          {
 373   1              
 374   1              CCF0 = 0;                       /*清匹配中断标志*/
 375   1      
 376   1      } 
 377           /*键盘中断子程序*/
 378          void led(void)  interrupt 19
 379          { 
 380   1              uchar key,t;
 381   1              EA=0;   
 382   1              key=CH452_Read();   
 383   1              if(0x62==key)
 384   1              {
 385   2                      delayms(2);
 386   2                      avge0=avge;
 387   2                      //black=0;      
 388   2                      BCD_H_L(avge0-200,1); 
 389   2          }
 390   1              else if(0x63==key)
 391   1              {       
 392   2                      delayms(2);             
 393   2                      xianshi=0;
 394   2                      TR0=1;
 395   2                      for(t=0;t<8;t++)
 396   2                      CH452_Write((CH452_DIG0+ (t<<8))|16);
 397   2                      CH452_Write(CH452_DIG1);
 398   2                      stage_clk_start();
 399   2                      black=1;
 400   2              }
 401   1              else if(0x7A==key)
 402   1              {
 403   2                      delayms(2);
 404   2                      counter1=counter1+10;
 405   2                      CH452_Write(CH452_DIG3 | 1);
 406   2              }         
 407   1              else if(0x7B==key)      
 408   1              {
 409   2                      delayms(2);
 410   2                      counter1=counter1-10;
 411   2                      CH452_Write(CH452_DIG3 | 0);
 412   2              }
 413   1              else if(0x50==key)      
 414   1              {
 415   2                      delayms(2);
 416   2                      transform=1;
 417   2                      CH452_Write(CH452_DIG7 | 1);
 418   2                      
 419   2              }
 420   1              else if(0x58==key)      
 421   1              {
 422   2                      delayms(2);
 423   2                      transform=0;
 424   2                      CH452_Write(CH452_DIG7 | 2);
 425   2              }
 426   1              else if(0x78==key)      
 427   1              {
C51 COMPILER V8.02   FINALLY                                                               09/06/2007 19:43:26 PAGE 8   

 428   2                      delayms(2);
 429   2                      chazhi=chazhi+1;
 430   2                      CH452_Write(CH452_DIG7 | chazhi);
 431   2              }
 432   1              else if(0x79==key)      
 433   1              {
 434   2                      delayms(2);
 435   2                      time=time+1;
 436   2                      CH452_Write(CH452_DIG7 | 10);
 437   2              }
 438   1              else ;                            
 439   1              EA=1;
 440   1      }
 441          
 442          /*定时器0中断子程序*/
 443           void T0_ISR(void) interrupt 1  using 0
 444          {
 445   1              TR0=0;
 446   1              TF0=0;
 447   1              TH0=0x7D        ;                                       
 448   1              TL0=0xCC        ;       //0xCC由0xCB+1得来
 449   1              TR0=1;
 450   1              if(T0_OF<10)
 451   1                      T0_OF++;
 452   1              else
 453   1              {       
 454   2                      
 455   2                      if(sec<59)
 456   2                              sec++;
 457   2                      else
 458   2                      {
 459   3                              sec=0;
 460   3                              min++;
 461   3                              CH452_Write(CH452_DIG3 | min);                  //先写min,因为人眼分辨不出              
 462   3                              CH452_Write(0x1FB);
 463   3                      }
 464   2                      CH452_Write(CH452_DIG1 | (sec%10));
 465   2                      CH452_Write(CH452_DIG2 | (sec/10));
 466   2                      if(stage_clk_flag)
 467   2                      {
 468   3                              stage_sec++;
 469   3                              CH452_Write(CH452_DIG4 | (stage_sec%10));
 470   3                              if(stage_sec/10)  CH452_Write(CH452_DIG5 | (stage_sec/10));
 471   3                      }
 472   2                      T0_OF=0;
 473   2              }       
 474   1      }
 475          
 476          /*定时器1中断子程序*/
 477          void TIMER1_ISR (void) interrupt 3 using 1
 478          {
 479   1              uchar i;
 480   1              TR1=0;
 481   1              TF1=0;
 482   1              TH1=0x7D;
 483   1              TL1=0xFB;
 484   1              TR1=1;
 485   1              if(time1==1)    //执行黑线判断程序17s
 486   1              {
 487   2                 if(--counter1==0)
 488   2                 {
 489   3                     TR1=0;   //关定时器
C51 COMPILER V8.02   FINALLY                                                               09/06/2007 19:43:26 PAGE 9   

 490   3                         time1=0;     //标志
 491   3                         black=0;     //不执行黑线判断程序
 492   3                         START=0;
 493   3                         keykey=1;//执行角度黑线判断程序
 494   3                 }
 495   2                
 496   2              }
 497   1              if(time2==1)      //判断3s后5s显示
 498   1              { 
 499   2                      if(--counter2==0)
 500   2                      {
 501   3                     TR1=0; //关定时器                   
 502   3                         time2=0;//标志
 503   3                         keykey=0;
 504   3                         counter2=0;
 505   3                         if(move_or_not==1)
 506   3                         {               
 507   4                         stage_clk_flag=0;//stage_clk_stop();//显示平衡的时间
 508   4                         
 509   4                                      CH452_Write(CH452_SELF_BCD|0x39);
 510   4                                      CH452_Write(CH452_DIG0|0x1E);
 511   4                              CH452_Write(CH452_TWINKLE | 0x31);      
 512   4                                      for(i=5;i>0;i--)
 513   4                                      {       
 514   5                                      CH452_Write(CH452_DIG7 | i);
 515   5                                      SPOKER=1;
 516   5                                      delay_s(1);
 517   5                                      SPOKER=0;
 518   5                                      delay_s(1);
 519   5                                      }
 520   4                                      CH452_Write(CH452_DIG7);//计数显示      
 521   4                                      stage_clk_start();
 522   4                                      CH452_Write(CH452_DIG0|16);
 523   4                                      move_or_not=0;
 524   4                              }
 525   3                         if(transform==0)
 526   3                         { 
 527   4                                      forward=0;
 528   4                                      backward=0;
 529   4                                      black=0;
 530   4                                      xianshi=0;
 531   4                                      transform=0;
 532   4                                      keykey=1;
 533   4                                      
 534   4                         }//循环角度判断 
 535   3                 if(transform==1) 
 536   3                         {
 537   4                                      keykey=0;
 538   4                                      black=0;
 539   4                                      backward=0;
 540   4                                      xianshi=0;
 541   4                                      transform=1;
 542   4                                      forward=1;
 543   4                                      
 544   4                         }//平衡后前进
 545   3                                         
 546   3                 } 
 547   2              }
 548   1      
 549   1      }


C51 COMPILER V8.02   FINALLY                                                               09/06/2007 19:43:26 PAGE 10  

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2323    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     60    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     37      25
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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