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

📄 333.lst

📁 motor_control.zip
💻 LST
📖 第 1 页 / 共 2 页
字号:
 288   1              counter2=50;
 289   1              chazhi=3;
 290   1              EA=1;           
 291   1              while(1)
 292   1              {        
 293   2                      LEDG=~LEDG;             
 294   2                      avge=pingjun();
 295   2                      if(xianshi==1)
 296   2                      {BCD_H_L(avge-200,0); }    
 297   2                      a=IN0;
 298   2                      bb=IN1;
 299   2                      c=IN2;
 300   2                      //d=IN3;
 301   2                      //e=IN4;
 302   2                      f=IN5;
 303   2                      g=IN6;
C51 COMPILER V8.02   333                                                                   09/06/2007 04:24:39 PAGE 6   

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

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

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

 490   2              {
 491   3                  counter3=2;
 492   3                      look=1;
 493   3      
 494   3              }
 495   2              }       
 496   1      }
 497          
 498          /*定时器1中断子程序*/
 499          void TIMER1_ISR (void) interrupt 3 using 1
 500          {
 501   1              uchar i;
 502   1              TR1=0;
 503   1              TF1=0;
 504   1              TH1=0x7D;
 505   1              TL1=0xFB;
 506   1              TR1=1;
 507   1              if(time1==1)    //执行黑线判断程序17s
 508   1              {
 509   2                 if(--counter1==0)
 510   2                 {
 511   3                     TR1=0;   //关定时器
 512   3                         time1=0;     //标志
 513   3                         black=0;     //不执行黑线判断程序
 514   3                         START=0;
 515   3                         keykey=1;//执行角度黑线判断程序
 516   3                 }
 517   2                
 518   2              }
 519   1              if(time2==1)      //判断3s后5s显示
 520   1              { 
 521   2                      if(--counter2==0)
 522   2                      {
 523   3                     TR1=0; //关定时器                   
 524   3                         time2=0;//标志
 525   3                         keykey=0;
 526   3                         counter2=0;             
 527   3                         stage_clk_flag=0;//stage_clk_stop();//显示平衡的时间
 528   3                         CH452_Write(CH452_SELF_BCD|0x39);
 529   3                         CH452_Write(CH452_DIG0|0x1E);
 530   3                          CH452_Write(CH452_TWINKLE | 0x31);  
 531   3                         for(i=5;i>0;i--)
 532   3                              {       
 533   4                                      CH452_Write(CH452_DIG7 | i);
 534   4                                      SPOKER=1;
 535   4                                      delay_s(1);
 536   4                                      SPOKER=0;
 537   4                                      delay_s(1);
 538   4                              }
 539   3                         CH452_Write(CH452_DIG7);//计数显示   
 540   3                         stage_clk_start();
 541   3                         CH452_Write(CH452_DIG0|16);
 542   3                         if(transform==0)
 543   3                         { 
 544   4                                      forward=0;
 545   4                                      backward=0;
 546   4                                      black=0;
 547   4                                      xianshi=0;
 548   4                                      transform=0;
 549   4                                      keykey=1;
 550   4                                      
 551   4                         }//循环角度判断 
C51 COMPILER V8.02   333                                                                   09/06/2007 04:24:39 PAGE 10  

 552   3                 if(transform==1) 
 553   3                         {
 554   4                                      keykey=0;
 555   4                                      black=0;
 556   4                                      backward=0;
 557   4                                      xianshi=0;
 558   4                                      transform=1;
 559   4                                      forward=1;
 560   4                                      
 561   4                         }//平衡后前进
 562   3                                         
 563   3                 } 
 564   2              }
 565   1      
 566   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2364    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     60    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     47      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 + -