📄 gai__0809.lst
字号:
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 + -