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

📄 reda.lst

📁 本篇文章介绍了一种智能小车
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.02  REDA                                                                   06/10/2006 16:33:08 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE REDA
OBJECT MODULE PLACED IN E:\STUDY\WORKS\CAR\REDA.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE E:\STUDY\WORKS\CAR\REDA.C DB SB OE

stmt level    source

   1          #include <intrins.h>//这个头文件中有_nop_();
   2          #include <reg52.h>
   3          #include<stdio.h>
   4          unsigned char speedleft,speedright;//右左转速度
   5          unsigned char h,l,flag,time; //高速 低速 小车运行标志 延时时间
   6          int tim=0;//------调脉宽
   7          int j=0x08;//避障延时
   8          sbit kk=P1^6;//键盘口
   9          sbit tr1=P3^4;//避障一号管发射
  10          sbit tr2=P3^6;//避障二号管发射
  11          sbit aa=P3^4;
  12          sbit bb=P3^5;
  13          sbit cc=P3^6;
  14          sbit dd=P3^7;
  15          int key;//存放键值
  16          void Start(void);//键盘
  17          void Run(void);//探测
  18          void Forward(char speed);//前进
  19          void Reverse(char speed,int dely,bit r);//speed--速度,dely--时间,r--左(右)
  20          void Turnright(void);//右拐
  21          void Turnleft(void);//左拐
  22          void delay(unsigned int time);//--延时
  23          void stop(void);//---停止
  24          void bi_zhang(void);
  25          void main(void)
  26          {
  27   1        P1=0x40;//------------
  28   1        P3=0xff;
  29   1        h=20;
  30   1        l=40;
  31   1        flag=0;
  32   1        time=50;
  33   1         EA=1; ET0=1;//-----开中断-----------
  34   1        TMOD=0x02;
  35   1          TH0=0x30;
  36   1          TL0=0x30;
  37   1          TR0=0;
  38   1          while(1)
  39   1          {
  40   2             Start();
  41   2             key=1;
  42   2                while(key)
  43   2                  {
  44   3                      TR0=1;
  45   3                    Run();     //探测&&处理
  46   3                        //   Start();
  47   3                    }
  48   2           }
  49   1      }
  50          //-----------------------------判断键盘程序----------------------------------------
  51          void Start(void)
  52          {
  53   1         if(kk==0)
  54   1         {
  55   2            delay(200);
C51 COMPILER V6.02  REDA                                                                   06/10/2006 16:33:08 PAGE 2   

  56   2           if(kk==0)
  57   2             {
  58   3             while(kk==0);
  59   3             key++;
  60   3             }
  61   2          if(key==3)
  62   2          {key=0;}
  63   2          }
  64   1      }
  65          //---------------------------探测&&处理程序--------------------------------------
  66          void Run(void)
  67          {
  68   1         char sensors;
  69   1       while(key==1)
  70   1       {
  71   2              sensors = (P3&=0x3f);  //P3^3~P3^0接四个对管
  72   2             if((sensors&0x01)==0) { //P3^0为右边对管(当收不到返回光时,P3.0收到L)
  73   3              Turnright();
  74   3              flag = 1;              }
  75   2       else  if((sensors & 0x08)==0) { //P3^3为左边对管(当收不到返回光时,P3.3收到L)
  76   3               Turnleft();
  77   3               flag = 2;             }
  78   2       else  if(sensors&0x09)    {  //  P3^1 P3^2为黑线上方对管(当两个管都收到 L 并
  79   3              Forward(h);           //    且左右两边对管收到 H 时高速行驶)
  80   3              flag = 0;              }
  81   2      
  82   2       else  if(((sensors==0x0b==0)||(sensors==0x0d))&&(flag==0))
  83   2                Forward(l);//  如果前面的对管下没有黑线 ( P3^2 )
  84   2                             //  或后面的对管下没有黑线   ( P3^1 )
  85   2                            //  并且在高速时-------减速!!
  86   2        else  if((sensors==0x0f|sensors==0x00))
  87   2               Forward(l);
  88   2         //Start();
  89   2        }
  90   1               while(key==2)    //进入避障模式
  91   1               {
  92   2                bi_zhang();
  93   2                 Start();
  94   2               }
  95   1      }
  96          //--------------------------------前进程序---------------------------------
  97          void Forward(char speed)
  98          {
  99   1        P1=0x64;
 100   1        speedright = speed+5;
 101   1        speedleft  = speed;
 102   1        delay(50);
 103   1      }
 104          //--------------------------------右转程序---------------------------------
 105          void Turnleft(void)
 106          {
 107   1        P1=0x68;
 108   1        speedright = l+5;
 109   1        speedleft  = l+10;
 110   1        delay(50);
 111   1      }
 112          //--------------------------------左转程序----------------------------------
 113          void Turnright(void)
 114          {
 115   1        P1=0x54;
 116   1        speedright = l+10;
 117   1        speedleft  = l-30;
C51 COMPILER V6.02  REDA                                                                   06/10/2006 16:33:08 PAGE 3   

 118   1        delay(50);
 119   1      }
 120          //--------------------------------后退程序---------------(未用)------------
 121          void Reverse(char speed,int dely,bit r)
 122          {
 123   1        int x,y;
 124   1        if(r)
 125   1        {
 126   2           P1=0x17;
 127   2          speedright = speed+5;
 128   2          speedleft  = speed;//-15;
 129   2         }
 130   1            else
 131   1            {
 132   2            P1=0x2b;
 133   2            speedright= speed-25;
 134   2            speedleft= speed+5;
 135   2            }
 136   1          delay(dely);
 137   1          x=y=j;
 138   1          while(j--);
 139   1          while(y--);P3|=0x30;
 140   1      }
 141          //---------------------------------停止---------------------------------------
 142          void stop(void)
 143          {
 144   1                P1&=0xfc;
 145   1                P1&=0xfc;
 146   1      }
 147          void bi_zhang(void)
 148          {
 149   1      int o=10;
 150   1          aa=0;
 151   1          bb=1;
 152   1          P1=0x00;
 153   1      while(o--)
 154   1      {
 155   2      bb=1;dd=1;
 156   2      aa=!aa;cc=!cc;
 157   2      _nop_();_nop_();
 158   2      _nop_();_nop_();
 159   2      _nop_();_nop_();
 160   2      _nop_();_nop_();

⌨️ 快捷键说明

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