📄 car02.lst
字号:
C51 COMPILER V8.02 CAR02 09/03/2011 18:17:43 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CAR02
OBJECT MODULE PLACED IN CAR02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CAR02.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"reg51.h"
2 sbit p20=P2^0;sbit p21=P2^1;sbit p22=P2^2;sbit p23=P2^3;
3 //1车P20=1A,P21=1B,P23=2A,P22=2B,2车p20=1A,P21=1B,P22=2A,P23=2B;
4 sbit left=P3^6;//左寻
5 sbit right=P3^7;//右寻
6 sbit zhong=P3^5;//黑线探测p35;
7 sbit qian=P1^6;//前避障
8 sbit you=P1^7;//右避障
9 sbit jichu=P1^4; //按键切换功能 接地 直走 接空壁障 或停车
10 sbit p15=P1^5;
11 sbit p27=P2^7;
12 sbit p32=P3^2;
13 sbit p26=P2^6;//fmq
14
15 unsigned char flag_left_or_right,flag_along_right,flag_chaoche,flag_stop,flag_bizhang,flag_xunji_zhuan;//1
---left;2--right;
16 bit flag_change=0,flag_start=0,flag_ok=0;
17 unsigned int flag=0,timer=0;
18 unsigned int n;
19 unsigned int t;
20 //********************************************************************************************************
-**//
21 void delay1ms()
22 {
23 1 unsigned char i,j;
24 1 for(i=0;i<10;i++)
25 1 for(j=0;j<33;j++)
26 1 ;
27 1 }
28 void delay(unsigned int n)//
29 {
30 1 unsigned int i;
31 1 for(i=0;i<n;i++)
32 1 delay1ms();
33 1 }
34 /*
35 void delay100us()
36 {
37 unsigned char j;
38 for(j=0;j<33;j++)
39 ;
40 }void delayus(unsigned int n)//
41 {
42 unsigned int i;
43 for(i=0;i<n;i++)
44 delay100us();
45 }*/
46
47 void send232byte(unsigned char bytebuf)
48 {
49 1 SBUF=bytebuf;
50 1 while(!TI);
51 1 TI=0;
52 1 }
53 //********************************************************************************************************
C51 COMPILER V8.02 CAR02 09/03/2011 18:17:43 PAGE 2
-///
54 //********************************************************************************************************
-//
55 void turn_left(void) { p20=0;p21=0;p22=1;p23=0; }//左转
56 void turn_right(void) { p20=1;p21=0;p22=0;p23=0; }//右转
57 void turn_cleft(void) { p20=0;p21=1;p22=1;p23=0; }//左原地转
58 void turn_cright(void) { p20=1;p21=0;p22=0;p23=1; }//右原地转
59 void go_along(void) { p20=1;p21=0;p22=1;p23=0; }//直走
60 void go_back(void) { p20=0;p21=1;p22=0;p23=1; }//后
61 void stop(void) { p20=0;p21=0;p22=0;p23=0; }//停止
62 void go_along_right(void) { go_along();delay(14);turn_right();delay(2); }
63 void go_along_slow_r(void) { go_along();delay(10);stop();delay(20); }
64 void go_back_slow(void) { go_back();delay(10);stop();delay(25); }
65 void turn_left_go(void) { turn_cleft();delay(3);turn_left();delay(7); }
66 void turn_left_go_low(void) {turn_cleft();delay(4);stop();delay(1);turn_left();delay(5);stop();delay(1);}
67 void turn_right_go(void) { turn_cright();delay(4);turn_right();delay(7);}
68 void turn_left_low(void) { turn_left_go();delay(14);stop();delay(8); }
69 void turn_left_go1(void) { turn_cleft();delay(3);stop();delay(6);turn_left();delay(5); }
70
71 void go_along_right_lowlow(void){go_along();delay(3);stop();delay(9);turn_right();delay(2);stop();delay(9)
-;}
72 void turn_right_go_verylow(void){turn_cright();delay(2);stop();delay(9);turn_right();delay(7);stop();delay
-(9);}
73 void turn_left_verylow(void){turn_left();delay(6);stop();delay(20);}
74 //void go_along_left(void) { go_along();delay(10);turn_left();delay(1); }
75 //void turn_right_low(void) { turn_right_go();delay(14);stop();delay(8); }
76 //********************************************************************************************************
-//
77 //********************************************************************************************************
-//
78 void xunji_bizhang_normal(void)//避障走法正常循迹
79 {
80 1 if(left==0&&right==0)
81 1 {
82 2 go_along_right();
83 2 }
84 1 if(left==0&&right==1)
85 1 {
86 2 turn_left_go();
87 2 }
88 1 if(left==1&&right==0)
89 1 {
90 2 turn_right_go();
91 2 }
92 1 if(left==1&&right==1)
93 1 {
94 2 go_along_right();
95 2 }
96 1 }
97 void xunji_bizhang_low_speed(void)//低速避障循迹
98 {
99 1 if(left==0&&right==0)
100 1 {
101 2 go_along_right();delay(5);stop();delay(95);
102 2 }
103 1 if(left==0&&right==1)
104 1 {
105 2 turn_left_go_low();
106 2 }
107 1 if(left==1&&right==0)
108 1 {
109 2 turn_right_go();
C51 COMPILER V8.02 CAR02 09/03/2011 18:17:43 PAGE 3
110 2 }
111 1 if(left==1&&right==1)
112 1 {
113 2 go_along_right();delay(5);stop();delay(95);
114 2 }
115 1 }
116 void xunji_bizhang_chaoche_over(void)//超车结束后特殊循迹
117 { if(left==0&&right==1)
118 1 {
119 2 turn_left_go_low();
120 2 }
121 1 if(right==0)
122 1 {
123 2 go_along();delay(15);stop();delay(85);
124 2 }
125 1 if(left==1&&right==1)
126 1 {
127 2 go_along();delay(15);stop();delay(85);
128 2 }
129 1 }
130 void chaoche_bizhang(void)//避障动作
131 {
132 1 flag_bizhang=1;
133 1 while(qian!=1) {turn_left();}
134 1 stop();delay(500);
135 1 go_along();delay(600);
136 1 stop();delay(500);
137 1 while(you!=1) //如果有再直走;
138 1 {go_along_slow_r();} stop();delay(500);
139 1 while(you==1)//转到有
140 1 {turn_right();delay(40);stop();delay(60);}stop();delay(500);
141 1 while(you!=1)//转到没有
142 1 {turn_right();delay(40);stop();delay(60);}stop();delay(500);
143 1 while(you==1)//走到有
144 1 {go_along_slow_r();} stop();delay(500);
145 1 while(you!=1)//走到没有
146 1 {go_along_slow_r();} stop();delay(500);
147 1 while(you==1)//退到有
148 1 {go_back_slow();} stop();delay(500);
149 1 while(you!=1)//转到没有
150 1 {turn_right();delay(40);stop();delay(60);}stop();delay(500);
151 1 go_along();delay(500);
152 1 stop();delay(500);
153 1 turn_left();delay(110);
154 1 stop();delay(1000);
155 1 flag_xunji_zhuan=1;
156 1 flag_bizhang=0;
157 1 }
158 void xunji_bizhang(void)//避障走法循迹函数
159 {
160 1 if(zhong==0)
161 1 {
162 2 if(jichu==0)
163 2 {
164 3 xunji_bizhang_normal();
165 3 }
166 2 if(jichu==1)
167 2 {
168 3 if(flag_chaoche==0)
169 3 {
170 4 xunji_bizhang_normal();
171 4 }
C51 COMPILER V8.02 CAR02 09/03/2011 18:17:43 PAGE 4
172 3 if(flag_chaoche==1)
173 3 {
174 4 if(flag_xunji_zhuan==0)
175 4 {
176 5 xunji_bizhang_low_speed();
177 5 if(qian==0)
178 5 {
179 6 chaoche_bizhang();
180 6 }
181 5 }
182 4 if(flag_xunji_zhuan==1)
183 4 {
184 5 xunji_bizhang_chaoche_over();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -