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

📄 totelimprove.lst

📁 motor_control.zip
💻 LST
📖 第 1 页 / 共 2 页
字号:
 260   1              time2=1;
 261   1              counter1=170;
 262   1              counter2=50;
 263   1              chazhi=3;
 264   1              EA=1;           
 265   1              while(1)
 266   1              {        
 267   2                      LEDG=~LEDG;             
 268   2                      avge=pingjun();
 269   2                      if(xianshi==1)
 270   2                      {BCD_H_L(avge-200,0); }    
 271   2                      a=IN0;
 272   2                      bb=IN1;
 273   2                      c=IN2;
 274   2                      //d=IN3;
 275   2                      //e=IN4;
 276   2                      f=IN5;
 277   2                      g=IN6;
 278   2                      if(backward==1)
 279   2                      {
 280   3                              START=1;
 281   3                              LASTS=0;
 282   3                              BACK=0;
 283   3                              LASTB=1;
 284   3                              counter2=0;
 285   3                              judgementback(90,20,20);
 286   3                      }
 287   2                      if(forward==1)
 288   2                      { 
 289   3                              START=1;
 290   3                              LASTS=0;
 291   3                              BACK=1; //前进
 292   3                              LASTB=0;
 293   3                              judgement(90,20,20);            
 294   3                      }
 295   2                 if(black==1)         
 296   2                 {
 297   3                      START=1;
 298   3                              LASTS=0;
 299   3                      TR1=1; //开定时器
 300   3                              time2=0;            
 301   3                              judgement(90,20,20);
 302   3                      }
 303   2                 if(keykey==1) 
C51 COMPILER V8.02   TOTELIMPROVE                                                          09/05/2007 21:06:37 PAGE 6   

 304   2                      {
 305   3                              chazhi1=abs((int)(avge-avge0));
 306   3                              if(chazhi1>10)           //chazhi1>=20
 307   3                              {
 308   4                                      START=1;
 309   4                                      LASTS=0;
 310   4                                      counter2=50;
 311   4      
 312   4                                      if(avge>(avge0+chazhi-1)) 
 313   4                                      { 
 314   5                                              BACK=0;
 315   5                                              LASTB=1;
 316   5                                              //delayms(5);
 317   5                                              judgementback(0,40,15);
 318   5                                      }
 319   4                                      if(avge<(avge0-chazhi)) 
 320   4                                      {
 321   5                        
 322   5                                              BACK=1;
 323   5                                              LASTB=0;
 324   5                                              //delayms(5);
 325   5                                              judgement(0,40,15);
 326   5                        
 327   5                                      }       
 328   4                              }               
 329   3                      
 330   3                              else     
 331   3                              {
 332   4                                      START=0;
 333   4                                      LASTS=1;
 334   4                                      delayms(70);
 335   4                                      TR1=1; //开定时器
 336   4                                      time1=0; 
 337   4                                      time2=1;
 338   4      
 339   4                                                              
 340   4                              }       
 341   3              }
 342   2                 
 343   2              }
 344   1      }
 345          /*PCA中断子程序*/
 346          void PCA_ISR (void) interrupt 9
 347          {
 348   1              
 349   1              CCF0 = 0;                       /*清匹配中断标志*/
 350   1      
 351   1      } 
 352           /*键盘中断子程序*/
 353          void led(void)  interrupt 19
 354          { 
 355   1              uchar key,t;
 356   1              EA=0;   
 357   1              key=CH452_Read();   
 358   1              if(0x62==key)
 359   1              {
 360   2                      delayms(2);
 361   2                      avge0=avge;
 362   2                      black=0;        
 363   2                      BCD_H_L(avge0-200,1); 
 364   2          }
 365   1              else if(0x63==key)
C51 COMPILER V8.02   TOTELIMPROVE                                                          09/05/2007 21:06:37 PAGE 7   

 366   1              {       
 367   2                      delayms(2);
 368   2                      black=1;
 369   2                      xianshi=0;
 370   2                      TR0=1;
 371   2                      for(t=0;t<8;t++)
 372   2                      CH452_Write((CH452_DIG0+ (t<<8))|16);
 373   2                      CH452_Write(CH452_DIG1);
 374   2                      stage_clk_start();
 375   2              }
 376   1              else if(0x7A==key)
 377   1              {
 378   2                      delayms(2);
 379   2                      counter1=counter1+10;
 380   2                      CH452_Write(CH452_DIG3 | 1);
 381   2              }         
 382   1              else if(0x7B==key)      
 383   1              {
 384   2                      delayms(2);
 385   2                      counter1=counter1-10;
 386   2                      CH452_Write(CH452_DIG3 | 0);
 387   2              }
 388   1              else if(0x50==key)      
 389   1              {
 390   2                      delayms(2);
 391   2                      transform=1;
 392   2                      CH452_Write(CH452_DIG7 | 1);
 393   2                      
 394   2              }
 395   1              else if(0x58==key)      
 396   1              {
 397   2                      delayms(2);
 398   2                      transform=0;
 399   2                      CH452_Write(CH452_DIG7 | 2);
 400   2              }
 401   1              else if(0x78==key)      
 402   1              {
 403   2                      delayms(2);
 404   2                      chazhi=chazhi+1;
 405   2                      CH452_Write(CH452_DIG7 | chazhi);
 406   2              }
 407   1              else ;                            
 408   1              EA=1;
 409   1      }
 410          
 411          /*定时器0中断子程序*/
 412           void T0_ISR(void) interrupt 1  using 0
 413          {
 414   1              TR0=0;
 415   1              TF0=0;
 416   1              TH0=0x7D        ;                                       
 417   1              TL0=0xCC        ;       //0xCC由0xCB+1得来
 418   1              TR0=1;
 419   1              if(T0_OF<10)
 420   1                      T0_OF++;
 421   1              else
 422   1              {       
 423   2                      
 424   2                      if(sec<59)
 425   2                              sec++;
 426   2                      else
 427   2                      {
C51 COMPILER V8.02   TOTELIMPROVE                                                          09/05/2007 21:06:37 PAGE 8   

 428   3                              sec=0;
 429   3                              min++;
 430   3                              CH452_Write(CH452_DIG3 | min);                  //先写min,因为人眼分辨不出              
 431   3                              CH452_Write(0x1FB);
 432   3                      }
 433   2                      CH452_Write(CH452_DIG1 | (sec%10));
 434   2                      CH452_Write(CH452_DIG2 | (sec/10));
 435   2                      if(stage_clk_flag)
 436   2                      {
 437   3                              stage_sec++;
 438   3                              CH452_Write(CH452_DIG4 | (stage_sec%10));
 439   3                              if(stage_sec/10)  CH452_Write(CH452_DIG5 | (stage_sec/10));
 440   3                      }
 441   2                      T0_OF=0;
 442   2              }       
 443   1      }
 444          
 445          /*定时器1中断子程序*/
 446          void TIMER1_ISR (void) interrupt 3 using 1
 447          {
 448   1              uchar i;
 449   1              TR1=0;
 450   1              TF1=0;
 451   1              TH1=0x7D;
 452   1              TL1=0xFB;
 453   1              TR1=1;
 454   1              if(time1==1)    //执行黑线判断程序17s
 455   1              {
 456   2                 if(--counter1==0)
 457   2                 {
 458   3                     TR1=0;   //关定时器
 459   3                         time1=0;     //标志
 460   3                         black=0;     //不执行黑线判断程序
 461   3                         keykey=1;//执行角度黑线判断程序
 462   3                 }
 463   2                
 464   2              }
 465   1              if(time2==1)      //判断3s后5s显示
 466   1              { 
 467   2                      if(--counter2==0)
 468   2                      {
 469   3                     TR1=0; //关定时器                   
 470   3                         time2=0;//标志
 471   3                         keykey=0;
 472   3                         counter2=0;             
 473   3                         stage_clk_flag=0;//stage_clk_stop();//显示平衡的时间
 474   3                         CH452_Write(CH452_SELF_BCD|0x39);
 475   3                         CH452_Write(CH452_DIG0|0x1E);
 476   3                          CH452_Write(CH452_TWINKLE | 0x31);  
 477   3                         for(i=5;i>0;i--)
 478   3                              {       
 479   4                                      CH452_Write(CH452_DIG7 | i);
 480   4                                      SPOKER=1;
 481   4                                      delay_s(1);
 482   4                                      SPOKER=0;
 483   4                                      delay_s(1);
 484   4                              }
 485   3                         CH452_Write(CH452_DIG7);//计数显示   
 486   3                         stage_clk_start();
 487   3                         CH452_Write(CH452_DIG0|16);
 488   3                         if(transform==0)
 489   3                         { 
C51 COMPILER V8.02   TOTELIMPROVE                                                          09/05/2007 21:06:37 PAGE 9   

 490   4                                      forward=0;
 491   4                                      backward=0;
 492   4                                      black=0;
 493   4                                      xianshi=0;
 494   4                                      transform=0;
 495   4                                      keykey=1;
 496   4                                      
 497   4                         }//循环角度判断 
 498   3                 if(transform==1) 
 499   3                         {
 500   4                                      keykey=0;
 501   4                                      black=0;
 502   4                                      backward=0;
 503   4                                      xianshi=0;
 504   4                                      transform=1;
 505   4                                      forward=1;
 506   4                                      
 507   4                         }//平衡后前进
 508   3                                         
 509   3                 } 
 510   2              }
 511   1      
 512   1      }


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