📄 pp.lst
字号:
C51 COMPILER V7.06 PP 11/22/2007 14:57:15 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE PP
OBJECT MODULE PLACED IN pp.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pp.c LARGE BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
stmt level source
1 #include <reg52.H>
2 #include <stdio.h>
3 #include <intrins.h>
4 #include <stdlib.h>
5 #define uchar unsigned char
6 #define uint unsigned int
7 void delay(uint i);
8 // ================= 引脚定义 =======================
9 sbit IN1 = P1^0; //电机
10 sbit IN2 = P1^1; //电机
11 sbit IN3 = P1^2; //电机
12 sbit IN4 = P1^3; //电机
13 sbit youx= P1^4;
14 sbit zuox= P1^5;
15 sbit bz = P1^6;
16 sbit fm = P1^7;
17 uint flag=0;
18 uint h_leve=0;
19 uint l_leve=0;
20 uint time=500;
21 uint pwm=500;
22 uchar second=0;
23 uint n=0;
24 void interrupt_init(void)
25 {
26 1 TMOD=0x01;
27 1 TH0=(65535-1000)/256;
28 1 TL0=(65535-1000)%256 ;
29 1 EA =1;
30 1 ET0=1;
31 1 TR0=1;
32 1 IN1=1;
33 1 IN2=1;
34 1 IN3=1;
35 1 IN4=1;
36 1 EX0=0;
37 1 EX1=0;
38 1 }
39 //==================前进==================
40 void go1(void)
41 {
42 1 pwm=200;
43 1 IN1=1;IN2=0;
44 1 IN3=1;IN4=0;
45 1 }
46 //==================前进==================
47 void go2(void)
48 {
49 1 pwm=150;
50 1 IN1=1;IN2=0;
51 1 IN3=1;IN4=0;
52 1 }
53
54
55 //==================后退==================
C51 COMPILER V7.06 PP 11/22/2007 14:57:15 PAGE 2
56 void back1(void)
57 {
58 1 pwm=200;
59 1 IN1=0; IN2=1;
60 1 IN3=0; IN4=1;
61 1 }
62 void back2(void)
63 {
64 1 pwm=80;
65 1 IN1=0; IN2=1;
66 1 IN3=0; IN4=1;
67 1 }
68 //==================左转(两电机转向相反)==================
69 void left(void)
70 {
71 1 pwm=230;
72 1 IN1=1;IN2=0;
73 1 IN3=0;IN4=1;
74 1 }
75 //==================右转(两电机转向相反)==================
76 void right(void)
77 {
78 1 pwm=200;
79 1 IN1=0;IN2=1;
80 1 IN3=1;IN4=0;
81 1 }
82 //==================制动==================
83 void stop(void)
84 {
85 1 pwm=0;
86 1 IN1=0;IN2=0;
87 1 IN3=0;IN4=0;
88 1 }
89 //==================避障==================
90 void BZ(void)
91 {
92 1 back2();
93 1 delay(1000);
94 1 right();
95 1 delay(500);
96 1 go2();
97 1 delay(1000);
98 1 }
99
100 void delay(uint i)//延时
101 {
102 1 uint idata a;
103 1 uchar idata b;
104 1 for(a=0;a<i;a++)
105 1 for(b=0;b<227;b++)
106 1 {
107 2 _nop_();
108 2 }
109 1 }
110
111 void delay800ms(void)
112 {
113 1 uchar i=10;
114 1 uint j;
115 1 while(i--)
116 1 {j=1817;
117 2 while(j--);
C51 COMPILER V7.06 PP 11/22/2007 14:57:15 PAGE 3
118 2 }
119 1 }
120
121 void delay5ms(void)
122 {uint i=5552;
123 1 while(i--);
124 1 }
125 void timeinterrupt1(void) interrupt 1
126 {
127 1 TH0=(65535-100)/256;
128 1 TL0=(65535-100)%256;
129 1 n++;
130 1 if(n==10000) {second++;n=0;}
131 1 if(h_leve)
132 1 {
133 2 h_leve--;
134 2 IN1=1;
135 2 IN3=1;
136 2 return;
137 2 }
138 1 if(l_leve)
139 1 {
140 2 l_leve--;
141 2 IN1=0;
142 2 IN3=0;
143 2 return;
144 2 }
145 1 h_leve=pwm;
146 1 l_leve=time-pwm;
147 1 }
148
149 void main(void)
150 {
151 1 interrupt_init();
152 1 fm=0;
153 1 go2();
154 1 delay(100);
155 1 while(1)
156 1 {
157 2 youx=1;zuox=1;
158 2 loop1:
159 2 while(!(youx||zuox))
160 2 {
161 3 bz=1;
162 3 go1();
163 3 delay(300);
164 3 if(bz==0)BZ();
165 3 delay(100);
166 3 right();
167 3 delay(300);
168 3 if(bz==0)BZ();
169 3 if(zuox||youx)goto loop2;
170 3 if(youx&&zuox)goto loop3;
171 3 stop();
172 3 delay(100);
173 3 if(zuox||youx)goto loop2;
174 3 if(youx&&zuox)goto loop3;
175 3 left();
176 3 delay(450);
177 3 if(bz==0)BZ();
178 3 if(zuox||youx)goto loop2;
179 3 if(youx&&zuox)goto loop3;
C51 COMPILER V7.06 PP 11/22/2007 14:57:15 PAGE 4
180 3 stop();
181 3 delay(100);
182 3 if(zuox||youx)goto loop2;
183 3 if(youx&&zuox)goto loop3;
184 3 right();
185 3 delay(260);
186 3 if(bz==0)BZ();
187 3 if(zuox||youx)goto loop2;
188 3 if(youx&&zuox)goto loop3;
189 3 stop();
190 3 delay(100);
191 3 go1();
192 3 delay(500);
193 3 if(bz==0)BZ();
194 3 if(zuox||youx)goto loop2;
195 3 if(youx&&zuox)goto loop3;
196 3 stop();
197 3 delay(100);
198 3 }
199 2 loop2:
200 2 while(youx!=zuox)
201 2 {
202 3 if(youx&&zuox)goto loop3;
203 3 if(youx){right();delay(60);}
204 3 stop();
205 3 delay(50);
206 3 if(!(youx||zuox))goto loop1;
207 3 if(youx&&zuox)goto loop3;
208 3 go2();
209 3 delay(100);
210 3 if(!(youx||zuox))goto loop1;
211 3 if(youx&&zuox)goto loop3;
212 3 if(zuox){left();delay(60);
213 4 stop();
214 4 delay(50);
215 4 if(!(youx||zuox))goto loop1;
216 4 if(youx&&zuox)goto loop3;
217 4 go2();delay(100);}
218 3 if(!(youx||zuox))goto loop1;
219 3 if(youx&&zuox)goto loop3;
220 3 }
221 2 loop3:
222 2 while(youx&&zuox)
223 2 {
224 3
225 3
226 3
227 3 go2();
228 3 if(!(zuox))
229 3 { right();
230 4 delay(60);
231 4 }
232 3 stop();
233 3 delay(50);
234 3 if(!(youx))
235 3 { left();
236 4 delay(60);
237 4 }
238 3 go2();
239 3 delay(200);
240 3 stop();
241 3 delay(50);
C51 COMPILER V7.06 PP 11/22/2007 14:57:15 PAGE 5
242 3 if(!(youx||zuox))break;
243 3 if(bz==0)
244 3 {
245 4 fm=1;
246 4 delay(200);
247 4 stop();
248 4 delay(5000);
249 4 }
250 3 }
251 2
252 2 }
253 1 }
254
C51 COMPILER V7.06 PP 11/22/2007 14:57:15 PAGE 6
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION interrupt_init (BEGIN)
; SOURCE LINE # 24
; SOURCE LINE # 25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -