📄 duojiceshi.lst
字号:
C51 COMPILER V7.06 DUOJICESHI 06/06/2011 15:56:51 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DUOJICESHI
OBJECT MODULE PLACED IN duojiceshi.OBJ
COMPILER INVOKED BY: D:\软件\工具\C51\BIN\C51.EXE duojiceshi.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
2 #include <intrins.h>
3 sbit PWM=P1^0; //定义LED端口
4 sbit PWM1=P1^1;
5 sbit PWM2=P1^2;
6 int a; //定时器中断计数
7 int m,n,o; //前进标志参数
8 int flag ; //动作执行标志
9 int i,j,k; //后退标志参数
10 int e,f,g; //右转标志参数
11 int flag1,flag2; // 执行次数标志
12
13 void Init_Timer1(void)
14 {
15 1 TMOD |= 0x10; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
16 1 TH1=0xFF; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
17 1 TL1=0xA3;
18 1 EA=1; //总中断打开
19 1 ET1=1; //定时器中断打开
20 1 TR1=1; //定时器开关打开 传感器控制端定义
21 1 IT0=1; //下降沿触发
22 1 EX0=1;
23 1 }
24
25 void delay(unsigned int t)
26
27 {
28 1 while(--t);
29 1
30 1
31 1 }
32 void zuotuiqian () //定义左腿往前迈 同时中间腿撑起
33 {
34 1 if (a<7)
35 1 {
36 2 PWM2=1;
37 2 PWM=1;
38 2 }
39 1 else if (a>7&&a<20)
40 1 {
41 2 PWM2=0;
42 2 PWM=1;
43 2 }
44 1 else if (a>20&&a<200)
45 1 {
46 2 PWM2=0;
47 2 PWM=0;
48 2 }
49 1 else if (a==200)
50 1 {
51 2 a=0;
52 2 m++;
53 2 }
54 1
55 1
C51 COMPILER V7.06 DUOJICESHI 06/06/2011 15:56:51 PAGE 2
56 1
57 1 }
58
59
60 void youtuiqian() //定义右腿往前迈 同时中间腿撑起
61 {
62 1 if (a<5)
63 1 {
64 2 PWM=1;
65 2 PWM1=1;
66 2 }
67 1 else if (a>5&&a<14)
68 1 {
69 2 PWM=0;
70 2 PWM1=1;
71 2 }
72 1 else if (a>14&&a<200)
73 1 {
74 2 PWM=0;
75 2 PWM1=0;
76 2 }
77 1 else if (a==200)
78 1 {
79 2 a=0;
80 2 n++;
81 2 }
82 1 }
83
84
85 void qianmai() //定义左右腿同时往前迈 实现前进的动作
86 {
87 1
88 1 if (a<5)
89 1 {
90 2 PWM1=1;
91 2 PWM2=1;
92 2 }
93 1 else if (a>5&&a<14)
94 1 {
95 2 PWM1=0;
96 2 PWM2=1;
97 2 }
98 1 else if (a>14&&a<200)
99 1 {
100 2 PWM1=0;
101 2 PWM2=0;
102 2 }
103 1 else if (a==200)
104 1 {
105 2 a=0;
106 2 o++;
107 2
108 2 }
109 1
110 1 }
111
112
113 void qianjin() // 前进动作整合
114 {
115 1
116 1 m=0;
117 1 n=0;
C51 COMPILER V7.06 DUOJICESHI 06/06/2011 15:56:51 PAGE 3
118 1 o=0;
119 1 flag++;
120 1 while(1)
121 1 {
122 2
123 2 if(m<30)
124 2 zuotuiqian();
125 2 else
126 2 {
127 3 if (n<30)
128 3 youtuiqian();
129 3 else
130 3 {
131 4 if (o<30)
132 4 qianmai();
133 4 else
134 4 break;
135 4 }
136 3 }
137 2
138 2 }
139 1 }
140
141
142 void zuotuihou() // 定义左腿往后迈 同时中间腿撑起
143 {
144 1
145 1 if (a<14 )
146 1 {
147 2 PWM2=1;
148 2 PWM=1;
149 2 }
150 1 else if (a>14&&a<20)
151 1 {
152 2 PWM2=0;
153 2 PWM=1;
154 2 }
155 1 else if (a>20&&a<200)
156 1 {
157 2 PWM=0;
158 2 PWM2=0;
159 2 }
160 1 else if (a==200)
161 1 {
162 2 a=0;
163 2 i++;
164 2 }
165 1
166 1 }
167
168
169 void youtuihou() //定义右腿往后迈 同时中间腿撑起
170 {
171 1
172 1 if (a<5)
173 1 {
174 2 PWM1=1;
175 2 PWM=1;
176 2 }
177 1 else if (a>5&&a<7)
178 1 {
179 2 PWM=0;
C51 COMPILER V7.06 DUOJICESHI 06/06/2011 15:56:51 PAGE 4
180 2 PWM1=1;
181 2 }
182 1 else if (a>7&&a<200)
183 1 {
184 2 PWM=0;
185 2 PWM1=0;
186 2 }
187 1 else if (a==200)
188 1 {
189 2 a=0;
190 2 j++;
191 2 }
192 1
193 1 }
194
195 void houmai() //定义左右腿同时往前迈 实现后退的动作
196 {
197 1
198 1
199 1 if (a<7)
200 1 {
201 2 PWM2=1;
202 2 PWM1=1;
203 2 }
204 1 else if (a>7&&a<14)
205 1 {
206 2 PWM2=0;
207 2 PWM1=1;
208 2 }
209 1 else if (a>14&&a<200)
210 1 {
211 2 PWM2=0;
212 2 PWM1=0;
213 2 }
214 1 else if (a==200)
215 1 {
216 2 a=0;
217 2 k++;
218 2
219 2 }
220 1
221 1 }
222
223
224 void houtui() //后退动作整合
225 {
226 1
227 1 i=0;
228 1 j=0;
229 1 k=0;
230 1 flag1++;
231 1 while(1)
232 1 {
233 2
234 2 if(i<30)
235 2 zuotuihou();
236 2 else
237 2 {
238 3 if (j<30)
239 3 youtuihou();
240 3 else
241 3 {
C51 COMPILER V7.06 DUOJICESHI 06/06/2011 15:56:51 PAGE 5
242 4 if (k<30)
243 4 houmai();
244 4 else
245 4 break;
246 4 }
247 3 }
248 2
249 2 }
250 1
251 1 }
252
253 void youzhuan1() // 左腿往前迈 中间腿撑起
254 {
255 1
256 1 if (a<7)
257 1 {
258 2 PWM2=1;
259 2 PWM=1;
260 2 }
261 1 else if (a>7&&a<20)
262 1 {
263 2 PWM2=0;
264 2 PWM=1;
265 2 }
266 1 else if (a>20&&a<200)
267 1 {
268 2 PWM2=0;
269 2 PWM=0;
270 2 }
271 1 else if (a==200)
272 1 {
273 2 a=0;
274 2 e++;
275 2 }
276 1
277 1 }
278
279 void youzhuan2() //右腿往后迈 同时中间腿撑起
280 {
281 1 if (a<5)
282 1 {
283 2 PWM1=1;
284 2 PWM=1;
285 2 }
286 1 else if (a>5&&a<7)
287 1 {
288 2 PWM=0;
289 2 PWM1=1;
290 2 }
291 1 else if (a>7&&a<200)
292 1 {
293 2 PWM=0;
294 2 PWM1=0;
295 2 }
296 1 else if (a==200)
297 1 {
298 2 a=0;
299 2 f++;
300 2 }
301 1 }
302
303
C51 COMPILER V7.06 DUOJICESHI 06/06/2011 15:56:51 PAGE 6
304 void youzhuan3()
305 {
306 1
307 1 if (a<14)
308 1 {
309 2 PWM1=1;
310 2 PWM2=1;
311 2 }
312 1 else if (a<200)
313 1 {
314 2 PWM1=0;
315 2 PWM2=0;
316 2 }
317 1 else if (a==200)
318 1 {
319 2 a=0;
320 2 g++;
321 2 }
322 1
323 1 }
324
325 void youzhuan()
326 {
327 1
328 1 e=0;
329 1 f=0;
330 1 g=0;
331 1 flag2++;
332 1
333 1 while(1)
334 1 {
335 2
336 2 if(e<30)
337 2 youzhuan1();
338 2 else
339 2 {
340 3 if (f<30)
341 3 youzhuan2();
342 3 else
343 3 {
344 4 if (g<30)
345 4 youzhuan3();
346 4 else
347 4 break;
348 4 }
349 3 }
350 2
351 2 }
352 1
353 1 }
354
355
356
357
358
359
360 void main()
361
362 {
363 1
364 1
365 1 Init_Timer1();
C51 COMPILER V7.06 DUOJICESHI 06/06/2011 15:56:51 PAGE 7
366 1
367 1 while(1)
368 1 {
369 2 if(flag<8)
370 2 qianjin();
371 2 else
372 2 {
373 3 if(flag1<4)
374 3 houtui();
375 3 else
376 3 {
377 4 flag=0;
378 4 flag1=0;
379 4 }
380 3
381 3
382 3 }
383 2
384 2
385 2 }
386 1
387 1
388 1
389 1 }
390
391
392 void Timer1_isr(void) interrupt 3 using 1
393 {
394 1 TH1=0xFF; //中赂持
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -