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

📄 xiaoche.lst

📁 控制小车的寻迹
💻 LST
字号:
C51 COMPILER V7.50   XIAOCHE                                                               12/04/2007 20:56:19 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE XIAOCHE
OBJECT MODULE PLACED IN xiaoche.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\c51.exe xiaoche.c DB OE SMALL ROM(LARGE)

line level    source

   1          
   2          #include"reg51.h"
   3          #include"absacc.h"
   4          //#include"io.h"
   5          
   6          sbit  in_g1    = P1^1;
   7          sbit  in_g2    = P1^2;
   8          sbit  in_h1    = P1^3;
   9          sbit  in_h2    = P1^4;
  10          sbit  in_h3    = P1^5;
  11          
  12          sbit  out_zuo1 = P2^1;
  13          sbit  out_zuo2 = P2^2;
  14          sbit  out_you1 = P2^3;
  15          sbit  out_you2 = P2^4;
  16          
  17          
  18          //sbit  PWM    = p2^7;
  19          
  20          #define         FOSC            110592001       // 振荡器频率 22.1184Mhz
  21          #define         uint            unsigned   int
  22          #define         uchar           unsigned   char
  23          
  24          void init_sys(void);
  25          void init_break();
  26          void sudu(uint n);
  27          void zuozhuan();           ///循迹
  28          void youzhuan();
  29          void zuozhuan2(uint t);     ///避障
  30          void youzhuan2(uint t);
  31          
  32          static unsigned int click=0;           //中断次数计数器变量
  33          
  34          
  35          //unsigned int ZKB1,ZKB2;
  36             ZKB1=25;                              //占空比定值
  37             ZKB2=13;
  38          
  39          void main(void)
  40          {
  41   1      
  42   1                           ///初始化函数,前行
  43   1         
  44   1         while(!(in_g1||in_g2)){ sudu(1);}
  45   1         
  46   1          while(!(in_g1 && in_g2))          ///循迹,结束条件是在最后两个都触发
  47   1         { 
  48   2            
  49   2             if(in_g1)                   ///左光电触发
  50   2             {   
  51   3                    
  52   3                init_break();            ///刹车
  53   3                //sudu(2);                 ///降速
  54   3                zuozhuan();              ///左转
  55   3                
C51 COMPILER V7.50   XIAOCHE                                                               12/04/2007 20:56:19 PAGE 2   

  56   3             }
  57   2             
  58   2             if (in_g2)
  59   2             {
  60   3               
  61   3                init_break();            ///刹车
  62   3                //sudu(2);                 ///降速
  63   3                youzhuan();             ///右转
  64   3                //in_g1 = 0; 
  65   3             }
  66   2            sudu(1); 
  67   2          }
  68   1          
  69   1        
  70   1                                       
  71   1          if(in_h2||in_h1||in_h3)        ///避障
  72   1          {
  73   2             int t = 1000000;
  74   2             int b=0;
  75   2             init_break();
  76   2             //sudu(2);
  77   2             if (in_h1)
  78   2             {
  79   3                while(in_h1)
  80   3                {
  81   4                  youzhuan2(t);           
  82   4                   b++;
  83   4                }
  84   3                while(t--){  sudu(2);}
  85   3                zuozhuan2(t*b);
  86   3                
  87   3             }
  88   2             
  89   2             if (in_h3)
  90   2             {
  91   3                while(in_h3)
  92   3                {
  93   4                  zuozhuan2(t);
  94   4                  b++;           
  95   4                }
  96   3                while(t--){  sudu(2);}
  97   3                youzhuan2(t*b);         
  98   3             }
  99   2                     
 100   2            sudu(1); 
 101   2          }
 102   1                 
 103   1      }  
 104          
 105             
 106          
 107            
 108                   
 109          void sudu(unsigned int n)          ///初始化前进
 110          {
 111   1        ++click;
 112   1        if (click>=100) click=0;
 113   1        if(n==1)
 114   1        {
 115   2           if (click<=ZKB1)      //当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整
 116   2              { out_zuo1=1;
 117   3                out_zuo2=0;
C51 COMPILER V7.50   XIAOCHE                                                               12/04/2007 20:56:19 PAGE 3   

 118   3                out_you1=1;
 119   3                out_you2=0;}       
 120   2           else
 121   2              { out_zuo1=1;
 122   3                out_zuo2=1;
 123   3                out_you1=1;
 124   3                out_you2=1;}
 125   2        }
 126   1        else
 127   1        {
 128   2           if (click<=ZKB2)      //当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整
 129   2              { out_zuo1=1;
 130   3                out_zuo2=0;
 131   3                out_you1=1;
 132   3                out_you2=0;}       
 133   2           else
 134   2              { out_zuo1=1;
 135   3                out_zuo2=1;
 136   3                out_you1=1;
 137   3                out_you2=1;}
 138   2        }
 139   1      }
 140                 
 141          
 142          
 143          void init_break()         //刹车 
 144          {
 145   1             out_zuo1=1;
 146   1             out_zuo2=1;
 147   1             out_you1=1;
 148   1             out_you2=1;
 149   1             
 150   1      }
 151          
 152          
 153          void zuozhuan()             ///循迹时的左转弯
 154          {   
 155   1         
 156   1          while(in_g1)
 157   1          {
 158   2              ++click;
 159   2              if (click>=100) click=0 ;  
 160   2              if (click<=ZKB2)         ///左轮慢速
 161   2              { 
 162   3                out_zuo1=1;
 163   3                out_zuo2=0;
 164   3              }
 165   2              else 
 166   2              {   
 167   3                out_zuo1=1;
 168   3                out_zuo2=1;
 169   3              }    
 170   2            if (click<=ZKB1)         ///右轮快速
 171   2               {   out_you1=1;
 172   3                   out_you2=0;}
 173   2            else {   
 174   3                out_zuo1=1;
 175   3                out_zuo2=1;
 176   3                 }
 177   2           }     
 178   1      }
 179           
C51 COMPILER V7.50   XIAOCHE                                                               12/04/2007 20:56:19 PAGE 4   

 180           
 181           void youzhuan()           ///循迹时的右转弯
 182          { 
 183   1        while(in_g2)
 184   1        {
 185   2             ++click;
 186   2             if (click>=100) click=0;
 187   2             if (click<=ZKB1)         ///左轮快慢速
 188   2             { out_zuo1=1;
 189   3               out_zuo2=0;
 190   3             }
 191   2             else 
 192   2             {   
 193   3               out_zuo1=1;
 194   3               out_zuo2=1;
 195   3             }    
 196   2             if (click<=ZKB2)         ///右轮慢速
 197   2             { 
 198   3                out_you1=1;
 199   3                out_you2=0;
 200   3             }
 201   2             else 
 202   2             {   
 203   3                out_zuo1=1;
 204   3                out_zuo2=1;
 205   3             }     
 206   2         } 
 207   1      }
 208           
 209           
 210          void zuozhuan2(int t)             ///蔽障的左转弯
 211          {   
*** WARNING C235 IN LINE 211 OF XIAOCHE.C: parameter 1: different types
 212   1           while(t--)
 213   1           {
 214   2              ++click;
 215   2              if (click>=100) click=0; 
 216   2              if (click<=ZKB2)         ///左轮慢速
 217   2              { 
 218   3                 out_zuo1=1;
 219   3                 out_zuo2=0;
 220   3              }
 221   2              else 
 222   2              {   
 223   3                out_zuo1=1;
 224   3                out_zuo2=1;
 225   3              }    
 226   2              if (click<=ZKB1)         ///右轮快速
 227   2               { 
 228   3                  out_you1=1;
 229   3                  out_you2=0;
 230   3               }
 231   2              else 
 232   2              {   
 233   3                out_zuo1=1;
 234   3                out_zuo2=1;
 235   3              }   
 236   2           }
 237   1      } 
 238          
 239          
 240          
C51 COMPILER V7.50   XIAOCHE                                                               12/04/2007 20:56:19 PAGE 5   

 241          void youzhuan2(int t)           ///蔽障时的右转弯
 242          {
*** WARNING C235 IN LINE 242 OF XIAOCHE.C: parameter 1: different types
 243   1           while(t--)
 244   1           {
 245   2             ++click;
 246   2             if (click>=100) click=0;
 247   2             if (click<=ZKB1)         ///左轮快速
 248   2             { out_zuo1=1;
 249   3               out_zuo2=0;
 250   3             }
 251   2             else {   
 252   3               out_zuo1=1;
 253   3               out_zuo2=1;
 254   3                  }    
 255   2             if (click<=ZKB2)         ///右轮慢速
 256   2              { out_you1=1;
 257   3                out_you2=0;}
 258   2             else 
 259   2              {   
 260   3                out_zuo1=1;
 261   3                out_zuo2=1;
 262   3              }     
 263   2          }
 264   1      } 
 265          
 266          
 267          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    565    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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