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

📄 timerauto.lst

📁 motor_control.zip
💻 LST
📖 第 1 页 / 共 2 页
字号:
 259   1              else if(f==0&&g==0)
 260   1              {
 261   2                      speedchange(modi,1);
 262   2                      speedchange(modi,0);
 263   2              }
 264   1              else 
 265   1              {
 266   2               START=0;
 267   2               stage_clk_stop();
 268   2               TR0=0;
 269   2      
 270   2              }                                       
 271   1              delayms(dem);
 272   1      }
 273          
 274          
 275          void main(void)
 276          {       
 277   1              uchar chazhi=4;
 278   1              uchar chazhi1;
 279   1              Init_Device();
 280   1              CH452_Init();     /* CH452初始化 */
 281   1              LEDG=0; 
 282   1              SPOKER=0;
 283   1              IN0=1;
 284   1              IN1=1;
 285   1              IN2=1;
 286   1              //IN3=1;
 287   1              //IN4=1;
 288   1              IN5=1;
 289   1              IN6=1;
 290   1              START=0;
 291   1              time1=1;
 292   1              time2=1;
 293   1              counter1=170;
 294   1              counter2=30;
 295   1              EA=1;
 296   1              
 297   1              //BACK=0;               
 298   1              while(1)
 299   1              {        
 300   2                      LEDG=~LEDG;             
 301   2                      avge=pingjun();
 302   2                      if(xianshi==1)
C51 COMPILER V8.02   TIMERAUTO                                                             09/05/2007 11:19:18 PAGE 6   

 303   2                      {BCD_H_L(avge-200,0); }    
 304   2                      a=IN0;
 305   2                      bb=IN1;
 306   2                      c=IN2;
 307   2                      //d=IN3;
 308   2                      //e=IN4;
 309   2                      f=IN5;
 310   2                      g=IN6;
 311   2                      if(backward==1)
 312   2                      {
 313   3                      START=1;
 314   3                      BACK=0;
 315   3                      judgementback(90,20,20);
 316   3                      }
 317   2      
 318   2                      if(forward==1)
 319   2                      { 
 320   3                      START=1;
 321   3                      BACK=1; //前进
 322   3                      judgement(90,20,20);
 323   3                      
 324   3                      }
 325   2                 if(black==1)         
 326   2                 {
 327   3                  START=1;
 328   3                  TR1=1; //开定时器
 329   3                      time2=0;            
 330   3                      judgement(90,20,20);
 331   3                      }
 332   2                 if(keykey==1) 
 333   2      
 334   2                      {
 335   3                              chazhi1=abs((int)(avge-avge0));
 336   3                              if(chazhi1>=20)    
 337   3                              {
 338   4                                      START=1;
 339   4                                      counter2=30;
 340   4                                      if(avge>(avge0+chazhi-3)) 
 341   4                                      { 
 342   5                                              BACK=0;
 343   5                                              //delayms(5);
 344   5                                              judgementback(0,50,15);
 345   5                                      }
 346   4                                      if(avge<(avge0-chazhi)) 
 347   4                                      {
 348   5                        
 349   5                                              BACK=1;
 350   5                                              //delayms(5);
 351   5                                              judgement(0,50,15);
 352   5                        
 353   5                                      }       
 354   4                              }               
 355   3                              else if((chazhi1<20)&&(chazhi1>10))
 356   3                              {       
 357   4                                  counter2=30;
 358   4                                      if(avge>(avge0+chazhi-3)) 
 359   4                                      { 
 360   5                                               START=1;                                        
 361   5                                               BACK=0;
 362   5                                               //delayms(5);
 363   5                                               judgementback(0,50,15);
 364   5                                      }
C51 COMPILER V8.02   TIMERAUTO                                                             09/05/2007 11:19:18 PAGE 7   

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

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

 489   1              { if(--counter2==0)
 490   2                 {
 491   3                     TR1=0; //关定时器
 492   3                         time2=0;//标志
 493   3                         keykey=0;               
 494   3                         stage_clk_stop();//显示平衡的时间
 495   3                         for(i=5;i>0;i--)
 496   3                              {       
 497   4                                      CH452_Write(CH452_DIG7 | i);
 498   4                                      SPOKER=1;
 499   4                                      delay_s(1);
 500   4                                      SPOKER=0;
 501   4                                      delay_s(1);
 502   4                              }
 503   3                         CH452_Write(CH452_DIG7);//计数显示   
 504   3                         stage_clk_start();
 505   3                 forward=1;//平衡后前进
 506   3                                         
 507   3                 } 
 508   2              }
 509   1      
 510   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1780    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     60    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     31      27
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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