📄 xiaoche.lst
字号:
C51 COMPILER V7.50 XIAOCHE 12/04/2007 20:56:19 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE XIAOCHE
OBJECT MODULE PLACED IN xiaoche.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\c51.exe xiaoche.c DB OE SMALL ROM(LARGE)
line level source
1
2 #include"reg51.h"
3 #include"absacc.h"
4 //#include"io.h"
5
6 sbit in_g1 = P1^1;
7 sbit in_g2 = P1^2;
8 sbit in_h1 = P1^3;
9 sbit in_h2 = P1^4;
10 sbit in_h3 = P1^5;
11
12 sbit out_zuo1 = P2^1;
13 sbit out_zuo2 = P2^2;
14 sbit out_you1 = P2^3;
15 sbit out_you2 = P2^4;
16
17
18 //sbit PWM = p2^7;
19
20 #define FOSC 110592001 // 振荡器频率 22.1184Mhz
21 #define uint unsigned int
22 #define uchar unsigned char
23
24 void init_sys(void);
25 void init_break();
26 void sudu(uint n);
27 void zuozhuan(); ///循迹
28 void youzhuan();
29 void zuozhuan2(uint t); ///避障
30 void youzhuan2(uint t);
31
32 static unsigned int click=0; //中断次数计数器变量
33
34
35 //unsigned int ZKB1,ZKB2;
36 ZKB1=25; //占空比定值
37 ZKB2=13;
38
39 void main(void)
40 {
41 1
42 1 ///初始化函数,前行
43 1
44 1 while(!(in_g1||in_g2)){ sudu(1);}
45 1
46 1 while(!(in_g1 && in_g2)) ///循迹,结束条件是在最后两个都触发
47 1 {
48 2
49 2 if(in_g1) ///左光电触发
50 2 {
51 3
52 3 init_break(); ///刹车
53 3 //sudu(2); ///降速
54 3 zuozhuan(); ///左转
55 3
C51 COMPILER V7.50 XIAOCHE 12/04/2007 20:56:19 PAGE 2
56 3 }
57 2
58 2 if (in_g2)
59 2 {
60 3
61 3 init_break(); ///刹车
62 3 //sudu(2); ///降速
63 3 youzhuan(); ///右转
64 3 //in_g1 = 0;
65 3 }
66 2 sudu(1);
67 2 }
68 1
69 1
70 1
71 1 if(in_h2||in_h1||in_h3) ///避障
72 1 {
73 2 int t = 1000000;
74 2 int b=0;
75 2 init_break();
76 2 //sudu(2);
77 2 if (in_h1)
78 2 {
79 3 while(in_h1)
80 3 {
81 4 youzhuan2(t);
82 4 b++;
83 4 }
84 3 while(t--){ sudu(2);}
85 3 zuozhuan2(t*b);
86 3
87 3 }
88 2
89 2 if (in_h3)
90 2 {
91 3 while(in_h3)
92 3 {
93 4 zuozhuan2(t);
94 4 b++;
95 4 }
96 3 while(t--){ sudu(2);}
97 3 youzhuan2(t*b);
98 3 }
99 2
100 2 sudu(1);
101 2 }
102 1
103 1 }
104
105
106
107
108
109 void sudu(unsigned int n) ///初始化前进
110 {
111 1 ++click;
112 1 if (click>=100) click=0;
113 1 if(n==1)
114 1 {
115 2 if (click<=ZKB1) //当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整
116 2 { out_zuo1=1;
117 3 out_zuo2=0;
C51 COMPILER V7.50 XIAOCHE 12/04/2007 20:56:19 PAGE 3
118 3 out_you1=1;
119 3 out_you2=0;}
120 2 else
121 2 { out_zuo1=1;
122 3 out_zuo2=1;
123 3 out_you1=1;
124 3 out_you2=1;}
125 2 }
126 1 else
127 1 {
128 2 if (click<=ZKB2) //当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整
129 2 { out_zuo1=1;
130 3 out_zuo2=0;
131 3 out_you1=1;
132 3 out_you2=0;}
133 2 else
134 2 { out_zuo1=1;
135 3 out_zuo2=1;
136 3 out_you1=1;
137 3 out_you2=1;}
138 2 }
139 1 }
140
141
142
143 void init_break() //刹车
144 {
145 1 out_zuo1=1;
146 1 out_zuo2=1;
147 1 out_you1=1;
148 1 out_you2=1;
149 1
150 1 }
151
152
153 void zuozhuan() ///循迹时的左转弯
154 {
155 1
156 1 while(in_g1)
157 1 {
158 2 ++click;
159 2 if (click>=100) click=0 ;
160 2 if (click<=ZKB2) ///左轮慢速
161 2 {
162 3 out_zuo1=1;
163 3 out_zuo2=0;
164 3 }
165 2 else
166 2 {
167 3 out_zuo1=1;
168 3 out_zuo2=1;
169 3 }
170 2 if (click<=ZKB1) ///右轮快速
171 2 { out_you1=1;
172 3 out_you2=0;}
173 2 else {
174 3 out_zuo1=1;
175 3 out_zuo2=1;
176 3 }
177 2 }
178 1 }
179
C51 COMPILER V7.50 XIAOCHE 12/04/2007 20:56:19 PAGE 4
180
181 void youzhuan() ///循迹时的右转弯
182 {
183 1 while(in_g2)
184 1 {
185 2 ++click;
186 2 if (click>=100) click=0;
187 2 if (click<=ZKB1) ///左轮快慢速
188 2 { out_zuo1=1;
189 3 out_zuo2=0;
190 3 }
191 2 else
192 2 {
193 3 out_zuo1=1;
194 3 out_zuo2=1;
195 3 }
196 2 if (click<=ZKB2) ///右轮慢速
197 2 {
198 3 out_you1=1;
199 3 out_you2=0;
200 3 }
201 2 else
202 2 {
203 3 out_zuo1=1;
204 3 out_zuo2=1;
205 3 }
206 2 }
207 1 }
208
209
210 void zuozhuan2(int t) ///蔽障的左转弯
211 {
*** WARNING C235 IN LINE 211 OF XIAOCHE.C: parameter 1: different types
212 1 while(t--)
213 1 {
214 2 ++click;
215 2 if (click>=100) click=0;
216 2 if (click<=ZKB2) ///左轮慢速
217 2 {
218 3 out_zuo1=1;
219 3 out_zuo2=0;
220 3 }
221 2 else
222 2 {
223 3 out_zuo1=1;
224 3 out_zuo2=1;
225 3 }
226 2 if (click<=ZKB1) ///右轮快速
227 2 {
228 3 out_you1=1;
229 3 out_you2=0;
230 3 }
231 2 else
232 2 {
233 3 out_zuo1=1;
234 3 out_zuo2=1;
235 3 }
236 2 }
237 1 }
238
239
240
C51 COMPILER V7.50 XIAOCHE 12/04/2007 20:56:19 PAGE 5
241 void youzhuan2(int t) ///蔽障时的右转弯
242 {
*** WARNING C235 IN LINE 242 OF XIAOCHE.C: parameter 1: different types
243 1 while(t--)
244 1 {
245 2 ++click;
246 2 if (click>=100) click=0;
247 2 if (click<=ZKB1) ///左轮快速
248 2 { out_zuo1=1;
249 3 out_zuo2=0;
250 3 }
251 2 else {
252 3 out_zuo1=1;
253 3 out_zuo2=1;
254 3 }
255 2 if (click<=ZKB2) ///右轮慢速
256 2 { out_you1=1;
257 3 out_you2=0;}
258 2 else
259 2 {
260 3 out_zuo1=1;
261 3 out_zuo2=1;
262 3 }
263 2 }
264 1 }
265
266
267
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 565 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -