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

📄 main.lst

📁 基于51单片机的循迹小车C语言程序
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  03/17/2011 22:19:40 PAGE 1   


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

stmt level    source

   1          /*说明;P1.0 P1.1 P1.2 P1.3为L293电机控制端口
   2                  P1.1 P1.3为红外避障检测端口(低电平有效)
   3                  P3.4 P3.5 P3.6 P3.7为寻线检测端口(低电平有效,黑线低电平)
   4              P1.4 P1.5 风扇控制口
   5          */
   6          //p1.0 1.1控制右电机 01正转  P1.2 1.3控制左边电机 01正转
   7          #include<reg51.h>
   8          #define uchar unsigned char 
   9          #define uint unsigned int
  10          
  11          uchar k; 
  12          uchar a,biaozhi,zhuangtai;
  13          sbit out1 = P1^0  ;  //控制左电机
  14          sbit out2 = P1^1  ;
  15          sbit out3 = P1^2  ; //控制右电机
  16          sbit out4 = P1^3  ;
  17          sbit IN1 = P2^0  ;
  18          sbit IN2 = P2^1  ;
  19          sbit IN3 = P2^2 ;
  20          sbit IN4 =P2^3;
  21          
  22          void delay1(uchar t) //延时程序1
  23          { 
  24   1              uchar j; 
  25   1          while(t--)
  26   1              {for(j=5;j>0;j--);} 
  27   1      }
  28          
  29          void delay2(uint t) //延时程序2
  30          { 
  31   1              uchar j; 
  32   1          while(t--)
  33   1              {for(j=100;j>0;j--);} 
  34   1      }
  35          
  36          void stop()//电机停止
  37          {
  38   1       out1=0;
  39   1       out2=0;
  40   1       out3=0;
  41   1       out4=0;
  42   1       delay1(10);    
  43   1      }
  44          
  45          void comeleft()//左转,右路电机正传,左路电机反转 P1=0X06;  //小车左转
  46          {
  47   1       out1=0;
  48   1       out2=1;
  49   1       out3=1;
  50   1       out4=0;
  51   1       delay2(200);
  52   1      }
  53          
  54          //右转,左路电机正传,右路电机反转P1=0X09;  //小车右转
  55          
C51 COMPILER V7.06   MAIN                                                                  03/17/2011 22:19:40 PAGE 2   

  56          void comeright ()
  57          {
  58   1       out1=1;
  59   1       out2=0;
  60   1       out3=0;
  61   1       out4=1;
  62   1       delay2(200);
  63   1      }
  64          
  65          void smleft()//左微转,左路、右路电机皆正传,只是左路插入一定时间的停机状态,造成左边速度慢,形成左微转 01
             -01
  66          {
  67   1       out1=1;
  68   1       out2=0;
  69   1       out3=1;
  70   1       out4=0;
  71   1       delay1(1);
  72   1       out3=0;
  73   1       delay1(5);
  74   1       out3=1;        
  75   1      }
  76          void smright ()//右微转,
  77          {
  78   1              out1=1;
  79   1              out2=0;
  80   1              out3=1;
  81   1              out4=0;
  82   1              delay1(1);
  83   1              out1=0;
  84   1              delay1(5);
  85   1              out1=1;
  86   1      }
  87          
  88          
  89          void comeon()//前进加速;防止瞬间上电,加速度的造成小车重心不稳 造成抖动的现象。0101
  90          {
  91   1        uchar i;
  92   1        out2=0;out4=0;
  93   1      //out3=1;       out1=1;
  94   1      
  95   1      for(i=0;i<=8;i++)//即在运行时加入少量的停机时间。
  96   1       {
  97   2              out1=0;
  98   2              out3=0;
  99   2              delay2(1);
 100   2              out1=1;
 101   2              out3=1;
 102   2              delay2(5);
 103   2       }
 104   1       
 105   1      }
 106          
 107          void comeback()//后退,同理于前进加速 1001
 108          {
 109   1        uchar i;
 110   1        out2=0;out3=0;
 111   1      
 112   1       for(i=0;i<=8;i++)
 113   1       {
 114   2              out1=1;
 115   2              out4=0;
 116   2              delay2(60);
C51 COMPILER V7.06   MAIN                                                                  03/17/2011 22:19:40 PAGE 3   

 117   2              out2=0;
 118   2              out3=1;
 119   2              delay2(2);
 120   2       }
 121   1              
 122   1      }
 123          
 124          //循迹
 125          void scanline()
 126          {
 127   1               P2=P2|0XF0;    delay1(1);
 128   1               if(IN1==0){smleft();}//寻线模块右路检测到黑线 则右微转,记录状态0
 129   1               else if(IN2==0){  smright() ;}//寻线模块左路检测到黑线 则左微转,记录状态1
 130   1               else if(IN1==1&IN2==1) comeon();
 131   1               
 132   1      }
 133          
 134          void main(void) 
 135          { 
 136   1          
 137   1              while(1) 
 138   1      {
 139   2      
 140   2               scanline();
 141   2               //smright ();
 142   2              // smleft();
 143   2      }
 144   1      //comeback();
 145   1      
 146   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    236    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   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 + -