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

📄 section2_5pm6.lst

📁 motor_control.zip
💻 LST
📖 第 1 页 / 共 2 页
字号:
 241   1              IN6=1;
C51 COMPILER V8.02   SECTION2_5PM6                                                         09/05/2007 19:51:41 PAGE 5   

 242   1              START=0;
 243   1              LASTS=1;
 244   1              LASTB=0;
 245   1              time1=1;
 246   1              time2=1;
 247   1              counter1=170;
 248   1              counter2=50;
 249   1              EA=1;           
 250   1              while(1)
 251   1              {        
 252   2                      LEDG=~LEDG;             
 253   2                      avge=pingjun();
 254   2                      if(xianshi==1)
 255   2                      {BCD_H_L(avge-200,0); }    
 256   2                      a=IN0;
 257   2                      bb=IN1;
 258   2                      c=IN2;
 259   2                      //d=IN3;
 260   2                      //e=IN4;
 261   2                      f=IN5;
 262   2                      g=IN6;
 263   2                      if(backward==1)
 264   2                      {
 265   3                              START=1;
 266   3                              LASTS=0;
 267   3                              BACK=0;
 268   3                              LASTB=1;
 269   3                              counter2=0;
 270   3                              judgementback(90,20,20);
 271   3                      }
 272   2                      if(forward==1)
 273   2                      { 
 274   3                              START=1;
 275   3                              LASTS=0;
 276   3                              BACK=1; //前进
 277   3                              LASTB=0;
 278   3                              judgement(90,20,20);            
 279   3                      }
 280   2                 if(black==1)         
 281   2                 {
 282   3                      START=1;
 283   3                              LASTS=0;
 284   3                      TR1=1; //开定时器
 285   3                              time2=0;            
 286   3                              judgement(90,20,20);
 287   3                      }
 288   2                 if(keykey==1) 
 289   2                      {
 290   3                              chazhi1=abs((int)(avge-avge0));
 291   3                              if(chazhi1>10)           //chazhi1>=20
 292   3                              {
 293   4                                      START=1;
 294   4                                      LASTS=0;
 295   4                                      counter2=50;
 296   4      
 297   4                                      if(avge>(avge0+chazhi-2)) 
 298   4                                      { 
 299   5                                              BACK=0;
 300   5                                              LASTB=1;
 301   5                                              //delayms(5);
 302   5                                              judgementback(0,40,15);
 303   5                                      }
C51 COMPILER V8.02   SECTION2_5PM6                                                         09/05/2007 19:51:41 PAGE 6   

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

 366   2              }         
 367   1              if(0x7B==key)   
 368   1              {
 369   2                      delayms(2);
 370   2                      counter1=counter1-10;
 371   2                      CH452_Write(CH452_DIG3 | 0);
 372   2              }
 373   1              if(0x50==key)   
 374   1              {
 375   2                      delayms(2);
 376   2                      transform=1;
 377   2                      CH452_Write(CH452_DIG7 | 1);
 378   2                      
 379   2              }         
 380   1              if(0x58==key)   
 381   1              {
 382   2                      delayms(2);
 383   2                      transform=0;
 384   2                      CH452_Write(CH452_DIG7 | 2);
 385   2              }                 
 386   1              EA=1;
 387   1      }
 388          
 389          /*定时器0中断子程序*/
 390           void T0_ISR(void) interrupt 1  using 0
 391          {
 392   1              TR0=0;
 393   1              TF0=0;
 394   1              TH0=0x7D        ;                                       
 395   1              TL0=0xCC        ;       //0xCC由0xCB+1得来
 396   1              TR0=1;
 397   1              if(T0_OF<10)
 398   1                      T0_OF++;
 399   1              else
 400   1              {       
 401   2                      
 402   2                      if(sec<59)
 403   2                              sec++;
 404   2                      else
 405   2                      {
 406   3                              sec=0;
 407   3                              min++;
 408   3                              CH452_Write(CH452_DIG3 | min);                  //先写min,因为人眼分辨不出              
 409   3                              CH452_Write(0x1FB);
 410   3                      }
 411   2                      CH452_Write(CH452_DIG1 | (sec%10));
 412   2                      CH452_Write(CH452_DIG2 | (sec/10));
 413   2                      if(stage_clk_flag)
 414   2                      {
 415   3                              stage_sec++;
 416   3                              CH452_Write(CH452_DIG4 | (stage_sec%10));
 417   3                              if(stage_sec/10)  CH452_Write(CH452_DIG5 | (stage_sec/10));
 418   3                      }
 419   2                      T0_OF=0;
 420   2              }       
 421   1      }
 422          
 423          /*定时器1中断子程序*/
 424          void TIMER1_ISR (void) interrupt 3 using 1
 425          {
 426   1              uchar i;
 427   1              TR1=0;
C51 COMPILER V8.02   SECTION2_5PM6                                                         09/05/2007 19:51:41 PAGE 8   

 428   1              TF1=0;
 429   1              TH1=0x7D;
 430   1              TL1=0xFB;
 431   1              TR1=1;
 432   1              if(time1==1)    //执行黑线判断程序17s
 433   1              {
 434   2                 if(--counter1==0)
 435   2                 {
 436   3                     TR1=0;   //关定时器
 437   3                         time1=0;     //标志
 438   3                         keykey=1;//执行角度黑线判断程序
 439   3                         black=0;     //不执行黑线判断程序
 440   3                 }
 441   2                
 442   2              }
 443   1              if(time2==1)      //判断3s后5s显示
 444   1              { 
 445   2                      if(--counter2==0)
 446   2                      {
 447   3                     TR1=0; //关定时器                   
 448   3                         time2=0;//标志
 449   3                         keykey=0;
 450   3                         counter2=0;             
 451   3                         stage_clk_flag=0;//stage_clk_stop();//显示平衡的时间
 452   3                         CH452_Write(CH452_TWINKLE | 0x30);
 453   3                         CH452_Write(CH452_DIG0|12);
 454   3                          CH452_Write(CH452_TWINKLE | 0x01);  
 455   3                         for(i=5;i>0;i--)
 456   3                              {       
 457   4                                      CH452_Write(CH452_DIG7 | i);
 458   4                                      SPOKER=1;
 459   4                                      delay_s(1);
 460   4                                      SPOKER=0;
 461   4                                      delay_s(1);
 462   4                              }
 463   3                         CH452_Write(CH452_DIG7);//计数显示   
 464   3                         stage_clk_start();
 465   3                         CH452_Write(CH452_DIG0|16);
 466   3                         if(transform==0){ keykey=1;}//循环角度判断 
 467   3                 if(transform==1) {forward=1;}//平衡后前进
 468   3                                         
 469   3                 } 
 470   2              }
 471   1      
 472   1      }


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