📄 xiaoche.lst
字号:
C51 COMPILER V6.12 XIAOCHE 03/30/2009 18:12:37 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE XIAOCHE
OBJECT MODULE PLACED IN .\xiaoche.OBJ
COMPILER INVOKED BY: G:\keil\C51\BIN\C51.EXE .\xiaoche.c DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h>
2 #include<intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define N 2
6 sbit black1=P2^0;
7 sbit black2=P2^1;
8 sbit left1=P2^2;
9 sbit right1=P2^3;
10 sbit left2=P2^4;
11 sbit right2=P2^5;
12 sbit rs=P2^7;
13 sbit lcden=P2^6;
14 sbit IN4=P1^0;
15 sbit ENB=P1^1;
16 sbit IN3=P1^2;
17 sbit IN2=P1^3;
18 sbit ENA=P1^4;
19 sbit IN1=P1^5;
20 void xunji();
21 uchar t,a,b,c,d,e,f,g;
22 uint s,t1,road,speed;
23 uchar code table[]="T:000s S:00.00m";
24 uchar code table1[]="V:00.00cm/s 00s";
25 void delay(uint z)
26 {
27 1 uint x,y;
28 1 for(x=z;x>0;x--)
29 1 for(y=110;y>0;y--);
30 1 }
31
32 void write_com(uchar com)
33 {
34 1 rs=0;
35 1 lcden=0;
36 1 P0=com;
37 1 delay(N);
38 1 lcden=1;
39 1 delay(N);
40 1 lcden=0;
41 1 }
42
43 void write_date(uchar date)
44 {
45 1 rs=1;
46 1 lcden=0;
47 1 P0=date;
48 1 delay(N);
49 1 lcden=1;
50 1 delay(N);
51 1 lcden=0;
52 1 }
53 void write_time(uchar dat)
54 {
55 1 uchar bai,shi,ge;
C51 COMPILER V6.12 XIAOCHE 03/30/2009 18:12:37 PAGE 2
56 1 bai=dat/100;
57 1 shi=dat%100/10;
58 1 ge=dat%10;
59 1 write_com(0x80+2);
60 1 write_date(0x30+bai);
61 1 write_date(0x30+shi);
62 1 write_date(0x30+ge);
63 1 }
64 void write_rosp(uchar add,uint rosp)
65 {
66 1 uchar qian,bai,shi,ge;
67 1 qian=rosp/1000;
68 1 bai=rosp%1000/100;
69 1 shi=rosp%1000%100/10;
70 1 ge=rosp%10;
71 1 write_com(0x80+add);
72 1 write_date(0x30+qian);
73 1 write_date(0x30+bai);
74 1 write_com(0x80+add+3);
75 1 write_date(0x30+shi);
76 1 write_date(0x30+ge);
77 1 }
78 void write_daoji(uchar daoji)
79 {
80 1 uchar shi,ge;
81 1 shi=daoji/10;
82 1 ge=daoji%10;
83 1 write_com(0x80+0x40+13);
84 1 write_date(0x30+shi);
85 1 write_date(0x30+ge);
86 1 }
87 void init()
88 {
89 1 uchar num;
90 1 lcden=0;
91 1 write_com(0x38);
92 1 write_com(0x0c);
93 1 write_com(0x06);
94 1 write_com(0x01);
95 1 write_com(0x80);
96 1 for(num=0;num<15;num++)
97 1 {
98 2 write_date(table[num]);
99 2 delay(N);
100 2 }
101 1 write_com(0x80+0x40);
102 1 for(num=0;num<16;num++)
103 1 {
104 2 write_date(table1[num]);
105 2 delay(2);
106 2 }
107 1 TMOD=0x11;
108 1 TH0=(65536-10000)/256;
109 1 TL0=(65536-10000)%256;
110 1 TH1=(65536-50000)/256;
111 1 TL1=(65536-50000)%256;
112 1 EA=1;//开总中
113 1 EX0=1;//开外部中断0
114 1 TCON=0x01;
115 1 ET0=1;//开定时器0中断
116 1 ET1=1;
117 1 TR0=1;//启动定时器0
C51 COMPILER V6.12 XIAOCHE 03/30/2009 18:12:37 PAGE 3
118 1 t=0;
119 1 a=0;
120 1 b=0;
121 1 c=0;
122 1 d=0;
123 1 e=0;
124 1 f=10;
125 1 t1=0;
126 1 s=0;
127 1 }
128 void limit()
129 {
130 1 if(black1==0&&black2==0)
131 1 {
132 2 delay(N);
133 2 c++;
134 2 while(black1==0&&black2==0);
135 2 if(c==9)c=0;
136 2 }
137 1 while(c==2||c==6)
138 1 {
139 2 if(speed>=2450)
140 2 {
141 3 ENA=0;
142 3 ENB=0;
143 3 }
144 2 else
145 2 {
146 3 ENA=1;
147 3 ENB=1;
148 3 }
149 2 xunji();
150 2 }
151 1 if(c==4)
152 1 {
153 2 ENA=1;
154 2 ENB=1;
155 2 IN1=1;
156 2 IN2=1;
157 2 IN3=1;
158 2 IN4=1;
159 2 TR1=1;
160 2 }
161 1 else if(c==8)
162 1 {
163 2 ENA=1;
164 2 ENB=1;
165 2 IN1=1;
166 2 IN2=1;
167 2 IN3=1;
168 2 IN4=1;
169 2 }
170 1 while(c==0||c==1||c==3||c==5||c==7)xunji();
171 1
172 1 }
173 void xunji()
174 {
175 1 while(left1==0||(right1==1&&right2==0)) //左拐
176 1 {
177 2 ENA=0;
178 2 ENB=1;
179 2 IN3=1;
C51 COMPILER V6.12 XIAOCHE 03/30/2009 18:12:37 PAGE 4
180 2 IN4=0;
181 2 }
182 1 while(right1==0||(left1==1&&left2==0)) //右拐
183 1 {
184 2 ENA=1;
185 2 IN1=1;
186 2 IN2=0;
187 2 ENB=0;
188 2 }
189 1 while((right1==left1)&&(left2==right2))
190 1 {
191 2 ENA=1;
192 2 IN1=1;
193 2 IN2=0;
194 2 ENB=1;
195 2 IN3=1;
196 2 IN4=0;
197 2 }
198 1 }
199 void main()
200 {
201 1 init();
202 1 while(1)
203 1 {
204 2 limit();
205 2 }
206 1 }
207 void exter0() interrupt 0
208 {
209 1 speed=60000/t1;
210 1 t1=0;
211 1 s++;
212 1 road=6*s;
213 1 }
214 void timer0() interrupt 1
215 {
216 1 TH0=(65536-10000)/256;
217 1 TL0=(65536-10000)%256;
218 1 t1++; b++;
219 1 if(b==100)
220 1 {
221 2 b=0;
222 2 t++;
223 2 write_time(t);
224 2 write_rosp(0x40+2,speed);
225 2 write_rosp(9,road);
226 2 }
227 1 }
228 void timer1() interrupt 3
229 {
230 1 TH1=(65536-50000)/256;
231 1 TL1=(65536-50000)%256;
232 1 d++;
233 1 if(d%20==0){f--;write_daoji(f);}
234 1 if(d==200)
235 1 {
236 2 d=0;
237 2 TR1=0;
238 2 ENA=1;
239 2 ENB=1;
240 2 IN1=1;
241 2 IN2=0;
C51 COMPILER V6.12 XIAOCHE 03/30/2009 18:12:37 PAGE 5
242 2 IN3=0;
243 2 IN4=1;
244 2 if(left1==0&&right2==0)
245 2 {
246 3 delay(N);e++;
247 3 while(left1==0&&right2==0);
248 3 }
249 2 if(left2==0&&right1==0)
250 2 {
251 3 delay(N);e++;
252 3 while(left2==0&&right1==0);
253 3 }
254 2 if(c==5&&e==2)
255 2 {
256 3 ENA=1;
257 3 ENB=1;
258 3 IN1=1;
259 3 IN2=0;
260 3 IN3=1;
261 3 IN4=0;
262 3 e=0;
263 3 }
264 2 }
265 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 959 ----
CONSTANT SIZE = 33 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -