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

📄 pp.lst

📁 控制智能小车寻找跷跷板的平衡位置
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.06   PP                                                                    11/22/2007 14:57:15 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE PP
OBJECT MODULE PLACED IN pp.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pp.c LARGE BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS

stmt level    source

   1          #include <reg52.H>
   2          #include <stdio.h>
   3          #include <intrins.h>
   4          #include <stdlib.h>
   5          #define uchar unsigned char
   6          #define uint unsigned int
   7          void    delay(uint i);
   8          // ================= 引脚定义 =======================
   9          sbit  IN1 = P1^0;  //电机
  10          sbit  IN2 = P1^1;  //电机
  11          sbit  IN3 = P1^2;  //电机
  12          sbit  IN4 = P1^3;  //电机
  13          sbit  youx= P1^4; 
  14          sbit  zuox= P1^5;
  15          sbit  bz  = P1^6;
  16          sbit  fm  = P1^7;
  17          uint  flag=0;
  18          uint h_leve=0;
  19          uint l_leve=0;
  20          uint  time=500;
  21          uint pwm=500;
  22          uchar second=0; 
  23          uint  n=0; 
  24          void interrupt_init(void)
  25          {
  26   1              TMOD=0x01; 
  27   1              TH0=(65535-1000)/256;
  28   1              TL0=(65535-1000)%256 ; 
  29   1              EA =1;
  30   1              ET0=1;
  31   1                  TR0=1;
  32   1                      IN1=1;
  33   1                      IN2=1;
  34   1                      IN3=1;
  35   1                      IN4=1;
  36   1                      EX0=0;
  37   1                      EX1=0;
  38   1      }             
  39          //==================前进==================
  40          void go1(void)
  41          {         
  42   1        pwm=200; 
  43   1        IN1=1;IN2=0;
  44   1        IN3=1;IN4=0; 
  45   1      }
  46          //==================前进==================
  47          void go2(void)
  48          {        
  49   1       pwm=150; 
  50   1        IN1=1;IN2=0;
  51   1        IN3=1;IN4=0; 
  52   1      }
  53          
  54          
  55          //==================后退==================
C51 COMPILER V7.06   PP                                                                    11/22/2007 14:57:15 PAGE 2   

  56          void back1(void)                                
  57          {                
  58   1      pwm=200;
  59   1      IN1=0; IN2=1; 
  60   1      IN3=0; IN4=1;
  61   1      }
  62          void back2(void)                                
  63          {         
  64   1      pwm=80;
  65   1      IN1=0; IN2=1; 
  66   1      IN3=0; IN4=1;
  67   1      }
  68          //==================左转(两电机转向相反)==================
  69          void left(void)          
  70          {       
  71   1      pwm=230;
  72   1      IN1=1;IN2=0; 
  73   1      IN3=0;IN4=1;
  74   1      }
  75          //==================右转(两电机转向相反)==================
  76          void right(void)         
  77          {        
  78   1      pwm=200;
  79   1      IN1=0;IN2=1;
  80   1      IN3=1;IN4=0;
  81   1      }
  82          //==================制动==================
  83          void stop(void)
  84          {  
  85   1       pwm=0;
  86   1       IN1=0;IN2=0;
  87   1       IN3=0;IN4=0;
  88   1      }   
  89          //==================避障==================
  90          void BZ(void)
  91          {
  92   1         back2();
  93   1      delay(1000);
  94   1         right();
  95   1         delay(500);
  96   1         go2();
  97   1         delay(1000);
  98   1      }
  99          
 100          void delay(uint i)//延时
 101          {
 102   1       uint idata  a;
 103   1       uchar idata b;
 104   1       for(a=0;a<i;a++)
 105   1       for(b=0;b<227;b++)
 106   1        {
 107   2         _nop_();
 108   2        }
 109   1      }
 110          
 111          void delay800ms(void)
 112          {
 113   1       uchar i=10;
 114   1       uint j;
 115   1       while(i--)
 116   1       {j=1817;
 117   2        while(j--);
C51 COMPILER V7.06   PP                                                                    11/22/2007 14:57:15 PAGE 3   

 118   2       }
 119   1      }
 120          
 121          void delay5ms(void)
 122          {uint i=5552;
 123   1       while(i--);
 124   1      }
 125          void  timeinterrupt1(void) interrupt 1
 126             {
 127   1              TH0=(65535-100)/256;
 128   1              TL0=(65535-100)%256;
 129   1          n++;
 130   1          if(n==10000) {second++;n=0;}                
 131   1              if(h_leve)
 132   1                      {
 133   2                       h_leve--;
 134   2                       IN1=1;
 135   2                       IN3=1; 
 136   2                       return;
 137   2                      }
 138   1                       if(l_leve)
 139   1                      {
 140   2                       l_leve--;
 141   2                   IN1=0;
 142   2                       IN3=0;
 143   2                       return;
 144   2                      }
 145   1                      h_leve=pwm;
 146   1                      l_leve=time-pwm;
 147   1      }
 148          
 149          void main(void)
 150          { 
 151   1      interrupt_init();
 152   1           fm=0;
 153   1               go2();
 154   1               delay(100);       
 155   1              while(1)
 156   1              {
 157   2          youx=1;zuox=1;
 158   2              loop1:
 159   2         while(!(youx||zuox))
 160   2              {     
 161   3              bz=1;   
 162   3              go1();
 163   3                      delay(300);
 164   3              if(bz==0)BZ();
 165   3              delay(100);
 166   3              right();
 167   3              delay(300);
 168   3              if(bz==0)BZ();
 169   3              if(zuox||youx)goto loop2;
 170   3                  if(youx&&zuox)goto loop3;
 171   3              stop();
 172   3              delay(100);
 173   3              if(zuox||youx)goto loop2;
 174   3                  if(youx&&zuox)goto loop3;
 175   3              left();
 176   3              delay(450);
 177   3              if(bz==0)BZ();
 178   3              if(zuox||youx)goto loop2;
 179   3                  if(youx&&zuox)goto loop3;
C51 COMPILER V7.06   PP                                                                    11/22/2007 14:57:15 PAGE 4   

 180   3              stop();
 181   3              delay(100);       
 182   3              if(zuox||youx)goto loop2;
 183   3                  if(youx&&zuox)goto loop3;
 184   3              right();
 185   3              delay(260);
 186   3              if(bz==0)BZ();
 187   3              if(zuox||youx)goto loop2;
 188   3                  if(youx&&zuox)goto loop3;
 189   3              stop();
 190   3              delay(100);
 191   3              go1();
 192   3              delay(500);
 193   3              if(bz==0)BZ();
 194   3              if(zuox||youx)goto loop2;
 195   3                  if(youx&&zuox)goto loop3;
 196   3              stop();
 197   3              delay(100);
 198   3          }
 199   2              loop2:
 200   2         while(youx!=zuox)
 201   2         {
 202   3            if(youx&&zuox)goto loop3;
 203   3            if(youx){right();delay(60);}
 204   3                stop();
 205   3                delay(50);
 206   3                         if(!(youx||zuox))goto loop1;
 207   3                         if(youx&&zuox)goto loop3;
 208   3                            go2();
 209   3                                        delay(100);
 210   3            if(!(youx||zuox))goto loop1;
 211   3                if(youx&&zuox)goto loop3;
 212   3            if(zuox){left();delay(60);
 213   4            stop();
 214   4                delay(50);
 215   4                          if(!(youx||zuox))goto loop1;
 216   4                          if(youx&&zuox)goto loop3;
 217   4                                      go2();delay(100);}
 218   3           if(!(youx||zuox))goto loop1;
 219   3                  if(youx&&zuox)goto loop3;
 220   3         }
 221   2         loop3:
 222   2         while(youx&&zuox)
 223   2        {
 224   3          
 225   3      
 226   3      
 227   3             go2();
 228   3                 if(!(zuox))
 229   3                { right();
 230   4                 delay(60);
 231   4                 }
 232   3                 stop();
 233   3                 delay(50);
 234   3             if(!(youx))
 235   3                { left();
 236   4                 delay(60);
 237   4                 }
 238   3                 go2();
 239   3                 delay(200);
 240   3             stop();
 241   3                 delay(50);    
C51 COMPILER V7.06   PP                                                                    11/22/2007 14:57:15 PAGE 5   

 242   3              if(!(youx||zuox))break; 
 243   3          if(bz==0) 
 244   3           {
 245   4                  fm=1;  
 246   4                      delay(200);
 247   4              stop();
 248   4              delay(5000);      
 249   4              }
 250   3         }
 251   2      
 252   2         }
 253   1      }
 254           
C51 COMPILER V7.06   PP                                                                    11/22/2007 14:57:15 PAGE 6   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION interrupt_init (BEGIN)
                                           ; SOURCE LINE # 24
                                           ; SOURCE LINE # 25

⌨️ 快捷键说明

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