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

📄 gai__0809.lst

📁 本篇文章介绍了一种智能小车
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.02  GAI__0809                                                              08/22/2006 18:58:22 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE GAI__0809
OBJECT MODULE PLACED IN E:\STUDY\WAVEWO~1\CAR\CAR_AD\GAI__0809.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE E:\STUDY\WAVEWO~1\CAR\CAR_AD\GAI__0809.C DB SB OE

stmt level    source

   1          #include <intrins.h>//这个头文件中有_nop_();
   2          #include <reg52.h>
   3          #include<stdio.h>
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          //----------------------------------------------------------------------------------------------------
   7          char bdata gate=0x00;  //三—八译码器
   8          char bdata sensors=0xff;//存放采集来的数的逻辑电平
   9          char temp[4];
  10          int idata max[4]={90,90,90,90};
  11          int idata min[4]={245,245,245,245};
  12          sbit l1=sensors^0;
  13          sbit l2=sensors^1;
  14          sbit l3=sensors^2;
  15          sbit l4=sensors^3;
  16          //-----------
  17          sbit lun=P1^6;
  18          //----------------------------------------------------------------------------------------------------
  19          sbit left=P1^0; //左电机使能
  20          sbit right=P1^1;//右电机使能
  21          //---------------------------------
  22          sbit you=P3^7;
  23          sbit hou=P3^6;
  24          sbit qian=P3^5;
  25          sbit zuo=P3^4;
  26          //---------------AD模拟通道选择
  27          sbit gat_3=gate^2;///存放 A
  28          sbit c=P2^6; //////////////    A
  29          sbit gat_2=gate^1;// 存放 B
  30          sbit b=P2^5; /////////////     B
  31          sbit gat_1=gate^0;// 存放 C
  32          sbit a=P2^4; /////////////     C
  33          
  34          sbit eoc=P2^2;//---转换结束标志
  35          sbit oe=P2^3; //---取值允许
  36          sbit ale=P2^7;//--允许转换
  37          int idata dat[4];
  38          int tim=0; //--进中断次数100为一个周期
  39          uint speedleft,speedright;//--左右轮转速控制
  40          //---------------------------------------------------------------------------------------------------
  41          void get_0809(void);//--读0809数据         0809用到的程序
  42          void start(void);//--初始化
  43          void test(void); //--检测
  44          void cotor_car(void);//--控制小车
  45          void hold(void);
  46          void stop(void);
  47          //---------------------------------------------------------------------------------------------------
  48          void Forward(char speed);//前进            293用到的程序
  49          void Reverse(char speed,int dely,bit r);//speed--速度,dely--时间,r--左(右)
  50          void TurnRight(uint dey);//右拐
  51          void TurnLeft(uint dey);//左拐
  52          void delay(unsigned int time);//--延时
  53          void stop(void);//---停止
  54          void delay(uint e);//--延时
  55          //---------------------------延时程序-------------------------------------------------------------
C51 COMPILER V6.02  GAI__0809                                                              08/22/2006 18:58:22 PAGE 2   

  56          void delay(uint e)
  57          {
  58   1         while(e--)
  59   1         {
  60   2         _nop_();_nop_();_nop_();
  61   2         _nop_();_nop_();}
  62   1      }
  63          //-----------------------前进程序----------------------------------------------------------------
  64          void Forward(char speed)
  65          {
  66   1        P1=0x1b;lun=1;
  67   1       speedleft=speed;
  68   1       speedright=speed+4;
  69   1       TR0=1;
  70   1       delay(15);
  71   1       TR0=0;
  72   1       }
  73          //----------------------左转程序-------------------------------------------------------------------
  74          void TurnLeft(uint dey)
  75          {
  76   1      P1=0x2b;lun=1;
  77   1       speedleft=35;
  78   1       speedright=25;
  79   1       TR0=1;
  80   1       delay(dey);
  81   1       TR0=0;
  82   1      }
  83          //----------------------右转程序-------------------------------------------------------------------
  84          void TurnRight(uint dey)
  85          {
  86   1      P1=0x17; lun=0;
  87   1       speedleft=25;
  88   1       speedright=35;
  89   1       TR0=1;
  90   1       delay(dey);
  91   1       TR0=0;
  92   1      
  93   1      }
  94          /*----------------------------------后退程序----------------------------------------------------
  95          void Reverse(char speed,int dely,bit r)
  96          {
  97          
  98          }
  99          //-----------------------------------停止程序---------------------------------------
 100          void stop(void)
 101          {
 102            TR0=0;right=0;left=0;
 103          }   */
 104          //-------------------------控制小车程序------------------------------------------------------------
 105          void cotor_car(void)                           /*  中间的两个对管为 a b */
 106          {                            /*  左边为 c右边为 d */
 107   1          switch(sensors)
 108   1          {            //--设收到返回光为高电平
 109   2        //------------------------------------------------------------------------------------
 110   2        case 0x07:TurnLeft(20);break;
 111   2        case 0x0e:TurnLeft(20);break;
 112   2        case 0x06:Forward(80);break;
 113   2        case 0x05:TurnLeft(10);break;
 114   2        case 0x0c:TurnRight(20);break;
 115   2        case 0x03:TurnRight(20);break;
 116   2        case 0x0a:TurnLeft(20);break;
 117   2           default:Forward(30);
C51 COMPILER V6.02  GAI__0809                                                              08/22/2006 18:58:22 PAGE 3   

 118   2           }
 119   1      
 120   1      }
 121          //---------------------检测程序-----------------------------------------------------------------------
 122          void test(void)
 123          {
 124   1      uint s,yu=0xf7,huo=0x08;
 125   1      uint ave[4];
 126   1      //----------------------------------
 127   1        for(s=0;s<4;s++)
 128   1        {
 129   2          if(max[s]==255)
 130   2            max[s]=90;
 131   2          if(min[s]<40)
 132   2            min==254;
*** WARNING C275 IN LINE 132 OF E:\STUDY\WAVEWO~1\CAR\CAR_AD\GAI__0809.C: expression with possibly no effect
 133   2      //----------------------------------
 134   2         if(dat[s]>max[s])
 135   2           max[s]=dat[s];
 136   2            if(dat[s]<min[s])
 137   2              min[s]=dat[s];
 138   2      //-----------------------------------
 139   2        ave[s]=((max[s]/2)+(min[s])/2);
 140   2      //-----------------------------------
 141   2            if(dat[s]>ave[s])
 142   2                 sensors|=huo;
 143   2               else
 144   2                  sensors&=yu;
 145   2      //-----------------------------------
 146   2                   yu>>=s;
 147   2                   huo>>=s;
 148   2        }
 149   1        zuo=l4;qian=l3;hou=l2;you=l1;
 150   1      }
 151          /*-----------------------------------------------------------------------
 152          void hold(void)
 153          {
 154          } */
 155          //------------------------------------------初始化程序--------------------------------------------------
 156          void start(void)
 157          {
 158   1         EA=1; ET0=1;//-----开中断-----------
 159   1        TMOD=0x02;   //方式二
 160   1          TH0=0xe0;  //
 161   1          TL0=0xe0;
 162   1      }
 163          //-----------------------------------------------------------------------------------------------------
 164          void get_0809(void)                             /*读AD0809数据程序*/
 165          {
 166   1        uint i=4; 
 167   1         for(gate=0;gate<i;gate++)
 168   1         {
 169   2          c=gat_3;     b=gat_2;     a=gat_1;
 170   2          _nop_();_nop_();_nop_();_nop_();
 171   2           ale=1;
 172   2           ale=0;
 173   2           while(!eoc);

⌨️ 快捷键说明

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