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

📄 checkdistance.lst

📁 本压缩文件主要介绍一获奖的电子设计作品
💻 LST
📖 第 1 页 / 共 2 页
字号:
 264          
 265          void send(unsigned int number)         //左方发送函数
 266          {  if(number==1)
 267   1         {
 268   2              j=100;
 269   2              TH0=0X00;
 270   2              TL0=0X00;                                 
 271   2              EX1=1;
 272   2              TR0=1;                                             //开计数器                                            
 273   2              while(j--)                                        //发送2个方波
 274   2              {
 275   3                      D0=!D0;
 276   3                  _nop_();    
 277   3                      _nop_();
 278   3                  _nop_();                    
 279   3              }                                                  //开外部中断1
 280   2              delay(20);
 281   2              }
 282   1       else
 283   1         if(number==2)
 284   1         {
 285   2              j=100;
 286   2              TH0=0X00;
 287   2              TL0=0X00;                                 
 288   2              EX1=1;
 289   2              TR0=1;                                             //开计数器                                            
 290   2              while(j--)                                        //发送2个方波
 291   2              {
 292   3                      D1=!D1;
 293   3                  _nop_();    
 294   3                      _nop_();
 295   3                  _nop_();                    
 296   3              }                                                  //开外部中断1
 297   2              delay(20);
 298   2              }  
 299   1       else
 300   1         if(number==3)
 301   1         {
 302   2              j=100;
C51 COMPILER V8.08   CHECKDISTANCE                                                         11/20/2008 13:40:14 PAGE 6   

 303   2              TH0=0X00;
 304   2              TL0=0X00;                                 
 305   2              EX1=1;
 306   2              TR0=1;                                             //开计数器                                            
 307   2              while(j--)                                        //发送2个方波
 308   2              {
 309   3                      D2=!D2;
 310   3                  _nop_();    
 311   3                      _nop_();
 312   3                  _nop_();                    
 313   3              }                                                    //开外部中断1
 314   2              delay(20);
 315   2              }       
 316   1          else
 317   1         if(number==4)
 318   1         {
 319   2              j=100;
 320   2              TH0=0X00;
 321   2              TL0=0X00;                                 
 322   2              EX1=1;
 323   2              TR0=1;                                             //开计数器                                            
 324   2              while(j--)                                        //发送2个方波
 325   2              {
 326   3                      D3=!D3;
 327   3                  _nop_();    
 328   3                      _nop_();
 329   3                  _nop_();                    
 330   3              }                                                  //开外部中断1
 331   2              delay(20);
 332   2              }
 333   1               else
 334   1         if(number==5)
 335   1         {
 336   2              j=100;
 337   2              TH0=0X00;
 338   2              TL0=0X00;                                 
 339   2              EX1=1;
 340   2              TR0=1;                                             //开计数器                                            
 341   2              while(j--)                                        //发送2个方波
 342   2              {
 343   3                      D4=!D4;
 344   3                  _nop_();    
 345   3                      _nop_();
 346   3                  _nop_();                    
 347   3              }                                                  //开外部中断1
 348   2              delay(10);
 349   2              }
 350   1              IE1=0;                                    //延时10ms,等待发送完毕
 351   1              if(flag==0)
 352   1              {       
 353   2                      TR0=0;                                  
 354   2                      EX1=0;
 355   2                      TH0=0X00;
 356   2                      TL0=0X00;
 357   2              }                                                       //超过10ms或接收到中断后关外部中断1,防止干扰
 358   1              if(TF0==1)                                              //如果计数器溢出则清0
 359   1       {
 360   2                      TF0=0;
 361   2                      TR0=0;
 362   2                      TH0=0X00;
 363   2                      TL0=0X00;                       
 364   2              }                
C51 COMPILER V8.08   CHECKDISTANCE                                                         11/20/2008 13:40:14 PAGE 7   

 365   1      }
 366             ////// 开机声//////
 367           void  beep()
 368           {
 369   1        deep=0;
 370   1        delay1ms(400);
 371   1        deep=1;
 372   1        }
 373          // **************       外部中断.驱动小车  ********************//
 374           void in0() interrupt 1 using 0 
 375          {       
 376   1              tem++;
 377   1      if(tem%2==0)
 378   1       move=0;
 379   1      else
 380   1        move=1;
 381   1      
 382   1      
 383   1      }
 384          
 385          /****************************
 386          *外部中断1;处理数据,测出距离 
 387          ******************************/   
 388          
 389          void in1() interrupt 2 using 1
 390          {
 391   1              IE1=0;
 392   1              TR0=0;
 393   1              EX1=0; 
 394   1              flag=1;
 395   1      //      T=read_temp();
 396   1      //      v=331.5+0.607*T;
 397   1          time=TH0*256+TL0;
 398   1              shu=(time/100)*17-20;
 399   1              TH0=0X00;
 400   1              TL0=0X00;
 401   1      }
 402          
 403           void gotkey(void) {
 404   1              if (mode_button==0) {
 405   2                      delay(5);
 406   2                      if (mode_button==0) 
 407   2                                      { 
 408   3                                       tempkey=1;
 409   3                                       LED1=0;
 410   3                                       LED2=1;
 411   3                                       beep();
 412   3                                      }
 413   2              }
 414   1              if (operation_button==0) {
 415   2                      delay(5);
 416   2                      if (operation_button==0) 
 417   2                                      {tempkey=2;
 418   3                                      LED1=1;
 419   3                                         LED2=0;
 420   3                                         beep();
 421   3                                       }
 422   2              }
 423   1                      else tempkey=tempkey;
 424   1      }
 425          /*****************************
 426          *主程序
C51 COMPILER V8.08   CHECKDISTANCE                                                         11/20/2008 13:40:14 PAGE 8   

 427          ******************************/
 428          void main()
 429          {   
 430   1               tem=1;
 431   1              tempkey=1;
 432   1          LED1=0;
 433   1              kk=1;
 434   1              beep();
 435   1              init();
 436   1              seek_play(1);              //播入欢迎语音
 437   1           play();
 438   1              delay(2000);  
 439   1              EX0=1;
 440   1              PX0=1;  
 441   1      while(1)
 442   1         { gotkey();
 443   2              read_temp();
 444   2             ds1820disp();
 445   2           if(tempkey==1)
 446   2        {
 447   3       
 448   3           for(kk=1;kk<4;kk++)
 449   3              {       if(kk==4)
 450   4                    kk=0;
 451   4                        else
 452   4                      send(kk);
 453   4                 if(flag==1)                                           //如果接收到回波,则进行处理
 454   4                      {       
 455   5                              dis_direction(&direction[kk-1][0]);     
 456   5                              dis_distance(3,shu);
 457   5                              delay(100);
 458   5                              flag=0; 
 459   5                              if(shu<1000)
 460   5                              {
 461   6                               dis_warn(&warn1[kk-1][0]);
 462   6                               seek_play(kk+1);
 463   6                               play();
 464   6                              }
 465   5                              else
 466   5                  dis_warn(warn2);
 467   5                      }
 468   4                      }                                       
 469   3              } 
 470   2              else if(tempkey==2)
 471   2      
 472   2              {       send(3);
 473   3                if(flag==1)
 474   3                {
 475   4                  dis_direction(&direction[2][0]);
 476   4              dis_distance(3,shu);
 477   4                      delay(100);
 478   4                              flag=0; 
 479   4                  if(shu<500)                          //满足条件提示注意后方车辆
 480   4                      {   
 481   5              
 482   5                           dis_warn(&warn1[2][0]);
 483   5                               seek_play(4);
 484   5                                play();
 485   5                        }
 486   4                                else
 487   4                              dis_warn(warn2);
 488   4                 }
C51 COMPILER V8.08   CHECKDISTANCE                                                         11/20/2008 13:40:14 PAGE 9   

 489   3                  for(kk=4;kk<6;kk++)
 490   3              {       if(kk==6)
 491   4                    kk=0;
 492   4                        else
 493   4                      send(kk);
 494   4                 if(flag==1)                                           //如果接收到回波,则进行处理
 495   4                      {
 496   5                
 497   5                              dis_direction(&direction[kk-1][0]);     
 498   5                              dis_distance(3,shu);
 499   5                                      delay(100);
 500   5                              flag=0; 
 501   5                              if(shu<100)
 502   5                              {
 503   6                               dis_warn(&warn1[kk+1][0]);
 504   6                               seek_play(kk+3);
 505   6                               play();
 506   6                              }
 507   5                              else 
 508   5                                 if(shu>200)                   // 满足条件就提示有泥坑
 509   5                              {  
 510   6                               dis_warn(&warn1[kk-1][0]);
 511   6                               seek_play(kk+1);
 512   6                               play();
 513   6                              } 
 514   5                              else
 515   5                  dis_warn(warn2);
 516   5                      }
 517   4                      }
 518   3      }
 519   2      }
 520   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1751    ----
   CONSTANT SIZE    =    178    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     41      21
   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 + -