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

📄 main.lst

📁 这个是做自动控制的小车的代码
💻 LST
字号:
C51 COMPILER V7.20   MAIN                                                                  09/02/2007 21:16:40 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE main.c DEBUG OBJECTEXTEND

line level    source

   1          #include "common.h"
   2          #include "config.h"
   3          #include "timer.h" 
   4          #include "pca.h"
   5          #include "findline.h"
   6          #include "bizhang.h"
   7          #define T3RUN temppage=SFRPAGE;SFRPAGE=0x01;TR3=1;SFRPAGE=temppage
   8          #define T4RUN temppage=SFRPAGE;SFRPAGE=0x02;TR4=1;SFRPAGE=temppage
   9          #define T4STOP temppage=SFRPAGE;SFRPAGE=0x02;TR4=0;SFRPAGE=temppage
  10          #define T3STOP temppage=SFRPAGE;SFRPAGE=0x01;TR3=0;SFRPAGE=temppage
  11          #define S TMR4          //S为路程计数值
  12          
  13          /*定时器2。3。4寄存器和定时器2。3。4捕捉寄存器字声明*/
  14          sfr16 RCAP2=0xca;
  15          sfr16 RCAP3=0xca;
  16          sfr16 RCAP4=0xca;
  17          sfr16 TMR4=0xcc;
  18          sfr16 TMR3=0xcc;
  19          sfr16 TMR2=0xcc;
  20          uchar temp;
  21          uchar temp1;
  22          uchar temp3;
  23          uchar k;    //避障接收次数计数
  24          uchar ir[8];
  25          uchar int0_count;
  26          uchar temppage;
  27          uchar tiepiancount=0x00;
  28          bit c_flag;                  //到达C标志,1到达,0未到达
  29          xdata uint s[6];  //16位
  30          
  31          void delay1ms(uint time){//延迟1ms
  32   1              uint i;
  33   1              uint j;
  34   1              for (i=0;i<time;i++){
  35   2                                                                                                                
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                              for(
             -j=0;j<300;j++);
  36   2              }
  37   1      }       
  38          void ring()              //测试用的报警蜂鸣器程序,低电平报警
C51 COMPILER V7.20   MAIN                                                                  09/02/2007 21:16:40 PAGE 2   

  39          {
  40   1               temppage=SFRPAGE;
  41   1               SFRPAGE=0X0F;
  42   1               P4_7=0;
  43   1           delay_ms(1);
  44   1               P4_7=1;
  45   1           delay_ms(1);
  46   1               SFRPAGE=temppage;
  47   1      }
  48          void ringl()              //测试用的报警蜂鸣器程序,低电平报警
  49          {
  50   1               temppage=SFRPAGE;
  51   1               SFRPAGE=0X0F;
  52   1               P4_7=0;
  53   1           delay_ms(25);
  54   1               P4_7=1;
  55   1           delay_ms(25);
  56   1               SFRPAGE=temppage;
  57   1      }
  58          void main(void)   //90s计时成功,40K方波成功,路程计数成功,金属探测成功8。20
  59          {
  60   1         config();
  61   1         EA=1;
  62   1         IE|=0x01;   //开外部中断0
  63   1         // t1_count_ini();     
  64   1         //t2_time90s_ini();  
  65   1         //t2_time90s_start();  //开始90计时
  66   1        // t4_count_ini();//开始计路程,*/
  67   1         // t3_ini();
  68   1          //t3_fre_set(100);
  69   1          //t3_fre_set40k();
  70   1         // T3RUN; 
  71   1              
  72   1          //t0_ini();
  73   1          pca_ini();
  74   1          go_forward();
  75   1       
  76   1      while(1);
  77   1      /*hile(1)            //寻迹
  78   1              {
  79   1                  if(c_flag)       //是否到达C点
  80   1                              break;       //到达C点
  81   1                  else
  82   1                      findline();       //未到达C点
  83   1              }*/
  84   1      /*while(1)
  85   1              {stop();
  86   1              delay1ms(5000);       //致达C点,停车5S
  87   1         
  88   1         /*while(1)
  89   1              { 
  90   1                if(S<0XFFFF)         //是否越过障碍区,
  91   1            {  
  92   1             //bizhang_tr(); 
  93   1        bizhang_isr();
  94   1            }
  95   1            else                      
  96   1            break;
  97   1              }*/
  98   1        
  99   1      }
 100          
C51 COMPILER V7.20   MAIN                                                                  09/02/2007 21:16:40 PAGE 3   

 101          void int0_isr() interrupt 0
 102          {              
 103   1        EA=0;
 104   1       
 105   1        //int0_count++;
 106   1        //if(int0_count>=2)          //450ms内有两次以上反射,则认为有障碍物,进行避障
 107   1        //bizhang_isr();
 108   1       //else
 109   1        EA=1;
 110   1      }
 111          void T0_isr() interrupt 1
 112          {
 113   1        EA=0;            
 114   1        TH0     = 0x90;            //定时器赋初值
 115   1        TL0     = 0x0a;
 116   1        int0_count=0;              //450ms清零
 117   1        EA=1;
 118   1      }
 119          void t2ISR() interrupt 5
 120          {    //T2定时溢出处理,计数351次后停车90s
 121   1          EA=0;
 122   1              temppage=SFRPAGE;
 123   1              SFRPAGE=0X00;
 124   1              TF2=0;
 125   1          ET2=0;
 126   1              SFRPAGE=temppage;
 127   1          t2count++;
 128   1              if(t2count<20)
 129   1              {  
 130   2                 //P4_7=0;
 131   2                 void t2_start();
 132   2              }
 133   1              else
 134   1              {
 135   2              temppage=SFRPAGE;
 136   2              SFRPAGE=0X0F;
 137   2               P4_7=0;
 138   2           delay_ms(10);
 139   2               P4_7=1;
 140   2               SFRPAGE=temppage;
 141   2               //stop();
 142   2              }
 143   1              ET2=1;
 144   1              EA=1;
 145   1      
 146   1      }
 147          void PCA_ISR(void) interrupt 9
 148          {   
 149   1          uchar temp1;               //temp保存第一次的探测结果,temp1保存第一次的探测结果,k保存记录次数
 150   1              SFRPAGE=0x00;
 151   1          EIE1&=0xF7; //关PCA中断
 152   1              ring();
 153   1          delay1ms(15);
 154   1              temp1=PCA0CN&0X0C;
 155   1      /*      if(k<2)
 156   1              {
 157   1                 temp=temp1;
 158   1                 k++;
 159   1                 //delay1ms(500);
 160   1              }
 161   1              else
 162   1          {
C51 COMPILER V7.20   MAIN                                                                  09/02/2007 21:16:40 PAGE 4   

 163   1                if(temp1==temp)
 164   1                {*/
 165   1                switch(temp1)
 166   1              { 
 167   2                        case 0x0c:                  //前方有障碍
 168   2                          front_bi(); 
 169   2                                      break;
 170   2      
 171   2                          case 0x08:                         //左方有障碍物
 172   2                                 //delay1ms(300);
 173   2                                 //if(CCF2==1)
 174   2                                 //front_bi();
 175   2                             //else
 176   2                                 left_bi();
 177   2                                      break;
 178   2                         case 0x04:                             //右方有障碍物 
 179   2                     /* if(CCF3==1)
 180   2                                  front_bi();
 181   2                              else*/
 182   2                              right_bi();            
 183   2                                      break; 
 184   2                         case 0x00:                         //没有障碍物
 185   2                                      break;
 186   2                 }
 187   1                 k=0;
 188   1                //}
 189   1      //       }
 190   1          temppage=SFRPAGE;
 191   1              SFRPAGE=0x00;
 192   1              CCF2=0;
 193   1              CCF3=0;
 194   1          SFRPAGE=temppage; 
 195   1              EIE1|=0x08;//PCA中断使能,EPCA
 196   1      }
 197          /*void PCA_ISR(void) interrupt 9
 198          {   
 199              ring();
 200              EIE1&=0xF7; //关PCA中断
 201                  delay1ms(5);
 202                  P0|=0x0c;
 203              if(k<2)
 204              {
 205                    ir[k]=P0&0x0c;
 206                    k++;
 207                  }
 208              else 
 209              {
 210                     if(ir[0]==ir[1])
 211                { 
 212                   switch(ir[0])
 213                  {
 214                             case 0x00:
 215                                 temppage=SFRPAGE;
 216                         SFRPAGE=0x0f;
 217                                  P5_1=0;
 218                                          P5_0=0;
 219                          delay1ms(500);
 220                          P5_1=1;
 221                                          P5_0=1;
 222                          delay1ms(500);
 223                          SFRPAGE=temppage;
 224                                          break;
C51 COMPILER V7.20   MAIN                                                                  09/02/2007 21:16:40 PAGE 5   

 225                              case 0x04:
 226                                       temppage=SFRPAGE;
 227                           SFRPAGE=0x0f;
 228                                           P5_1=0;
 229                           delay1ms(500);
 230                           P5_1=1;
 231                                           delay1ms(500);
 232                           SFRPAGE=temppage;
 233                                          break;
 234                             case 0x08:           
 235                           temppage=SFRPAGE;
 236                           SFRPAGE=0x0f;
 237                           P5_0=0;
 238                          delay1ms(500);
 239                                          P5_0=1;
 240                          delay1ms(500);
 241                          SFRPAGE=temppage;              
 242                                          break; 
 243                          case 0x0c:
 244                                          break;
 245                     }
 246                  k=0;
 247                  }
 248           }
 249                   CCF2=0;
 250                   CCF3=0;
 251                  EIE1|=0x08;//PCA中断使能,EPCA
 252          }*/
 253          /*void PCA_CEX3_ISR(void) interrupt 9  //*CEX3负边沿触发模式,用来探测金属
 254           {  
 255              EIE1&=0xF7; //关PCA中断
 256              CCF3=0;
 257                  ring();
 258                  temppage=SFRPAGE;
 259              SFRPAGE=0x00;
 260                  PCA0CPM3 = 0x31;    // 正负边沿触发模式,CEX3捕捉中断使能  
 261                  PCA0CPL3 = 0x00;    
 262                  PCA0CPH3 = 0x00;
 263              SFRPAGE=temppage;   
 264                  if(S>0XFFFF)
 265              c_flag=1;
 266                  else
 267                  {
 268                    tiepiancount++;
 269                    s[tiepiancount]=S;
 270                   }
 271           }*/
 272          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    346    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     12    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     15    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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