📄 base.lst
字号:
233 1 START=0;
234 1 LASTS=1;
235 1 time1=1;
236 1 time2=1;
237 1 counter1=170;
238 1 counter2=30;
239 1 EA=1;
240 1 while(1)
241 1 {
C51 COMPILER V8.02 BASE 09/05/2007 14:31:49 PAGE 5
242 2 LEDG=~LEDG;
243 2 avge=pingjun();
244 2 if(xianshi==1)
245 2 {BCD_H_L(avge-200,0); }
246 2 a=IN0;
247 2 bb=IN1;
248 2 c=IN2;
249 2 //d=IN3;
250 2 //e=IN4;
251 2 f=IN5;
252 2 g=IN6;
253 2 if(backward==1)
254 2 {
255 3 START=1;
256 3 LASTS=0;
257 3 BACK=0;
258 3 LASTB=1;
259 3 judgementback(90,20,20);
260 3 }
261 2 if(forward==1)
262 2 {
263 3 START=1;
264 3 LASTS=0;
265 3 BACK=1; //前进
266 3 LASTB=0;
267 3 judgement(90,20,20);
268 3 }
269 2 if(black==1)
270 2 {
271 3 START=1;
272 3 LASTS=0;
273 3 TR1=1; //开定时器
274 3 time2=0;
275 3 judgement(90,20,20);
276 3 }
277 2 if(keykey==1)
278 2 {
279 3 chazhi1=abs((int)(avge-avge0));
280 3 if(chazhi1>10) //chazhi1>=20
281 3 {
282 4 START=1;
283 4 LASTS=0;
284 4 counter2=30;
285 4 if(avge>(avge0+chazhi-3))
286 4 {
287 5 BACK=0;
288 5 LASTB=1;
289 5 //delayms(5);
290 5 judgementback(0,50,15);
291 5 }
292 4 if(avge<(avge0-chazhi))
293 4 {
294 5
295 5 BACK=1;
296 5 LASTB=0;
297 5 //delayms(5);
298 5 judgement(0,50,15);
299 5
300 5 }
301 4 }
302 3 /*/else if((chazhi1<20)&&())
303 3 //{
C51 COMPILER V8.02 BASE 09/05/2007 14:31:49 PAGE 6
304 3 counter2=30;
305 3 if(avge>(avge0+chazhi-3))
306 3 {
307 3 START=1;
308 3 BACK=0;
309 3 //delayms(5);
310 3 judgementback(0,50,15);
311 3 }
312 3 if(avge<(avge0-chazhi))
313 3 {
314 3 START=1;
315 3 BACK=1;
316 3 //delayms(5);
317 3 judgement(0,50,15);
318 3 }
319 3 //}*/
320 3 else
321 3 {
322 4 START=0;
323 4 LASTS=1;
324 4 TR1=1; //开定时器
325 4 time1=0;
326 4 time2=1;
327 4
328 4 }
329 3 }
330 2
331 2 }
332 1 }
333 /*PCA中断子程序*/
334 void PCA_ISR (void) interrupt 9
335 {
336 1
337 1 CCF0 = 0; /*清匹配中断标志*/
338 1
339 1 }
340 /*键盘中断子程序*/
341 void led(void) interrupt 19
342 {
343 1 uchar key,t;
344 1 EA=0;
345 1 key=CH452_Read();
346 1 if(0x62==key)
347 1 {
348 2 delayms(2);
349 2 avge0=avge;
350 2 black=0;
351 2 BCD_H_L(avge0-200,1);
352 2 }
353 1 if(0x63==key)
354 1 {
355 2 delayms(2);
356 2 black=1;
357 2 xianshi=0;
358 2 TR0=1;
359 2 for(t=0;t<8;t++)
360 2 CH452_Write((CH452_DIG0+ (t<<8))|16);
361 2 CH452_Write(CH452_DIG1);
362 2 stage_clk_start();
363 2 }
364 1 if(0x7A==key)
365 1 {
C51 COMPILER V8.02 BASE 09/05/2007 14:31:49 PAGE 7
366 2 delayms(2);
367 2 counter1=counter1+10;
368 2 CH452_Write(CH452_DIG3 | 1);
369 2 }
370 1 if(0x7B==key)
371 1 {
372 2 delayms(2);
373 2 counter1=counter1-10;
374 2 CH452_Write(CH452_DIG3 | 0);
375 2 }
376 1 EA=1;
377 1 }
378
379 /*定时器0中断子程序*/
380 void T0_ISR(void) interrupt 1 using 0
381 {
382 1 TR0=0;
383 1 TF0=0;
384 1 TH0=0x7D ;
385 1 TL0=0xCC ; //0xCC由0xCB+1得来
386 1 TR0=1;
387 1 if(T0_OF<10)
388 1 T0_OF++;
389 1 else
390 1 {
391 2
392 2 if(sec<59)
393 2 sec++;
394 2 else
395 2 {
396 3 sec=0;
397 3 min++;
398 3 CH452_Write(CH452_DIG3 | min); //先写min,因为人眼分辨不出
399 3 CH452_Write(0x1FB);
400 3 }
401 2 CH452_Write(CH452_DIG1 | (sec%10));
402 2 CH452_Write(CH452_DIG2 | (sec/10));
403 2 if(stage_clk_flag)
404 2 {
405 3 stage_sec++;
406 3 CH452_Write(CH452_DIG4 | (stage_sec%10));
407 3 if(stage_sec/10) CH452_Write(CH452_DIG5 | (stage_sec/10));
408 3 }
409 2 T0_OF=0;
410 2 }
411 1 }
412
413 /*定时器1中断子程序*/
414 void TIMER1_ISR (void) interrupt 3 using 1
415 {
416 1 uchar i;
417 1 TR1=0;
418 1 TF1=0;
419 1 TH1=0x7D;
420 1 TL1=0xFB;
421 1 TR1=1;
422 1 if(time1==1) //执行黑线判断程序17s
423 1 {
424 2 if(--counter1==0)
425 2 {
426 3 TR1=0; //关定时器
427 3 time1=0; //标志
C51 COMPILER V8.02 BASE 09/05/2007 14:31:49 PAGE 8
428 3 keykey=1;//执行角度黑线判断程序
429 3 black=0; //不执行黑线判断程序
430 3 }
431 2
432 2 }
433 1 if(time2==1) //判断3s后5s显示
434 1 { if(--counter2==0)
435 2 {
436 3 TR1=0; //关定时器
437 3 time2=0;//标志
438 3 keykey=0;
439 3 stage_clk_flag=0;//stage_clk_stop();//显示平衡的时间
440 3 CH452_Write(CH452_TWINKLE | 0x30);
441 3 for(i=5;i>0;i--)
442 3 {
443 4 CH452_Write(CH452_DIG7 | i);
444 4 SPOKER=1;
445 4 delay_s(1);
446 4 SPOKER=0;
447 4 delay_s(1);
448 4 }
449 3 CH452_Write(CH452_DIG7);//计数显示
450 3 stage_clk_start();
451 3 forward=1;//平衡后前进
452 3
453 3 }
454 2 }
455 1
456 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2035 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 60 ----
PDATA SIZE = ---- ----
DATA SIZE = 31 25
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 + -