📄 finally.lst
字号:
280 2 avge=pingjun();
281 2 if(xianshi==1)
282 2 {BCD_H_L(avge-200,0); }
283 2 a=IN0;
284 2 bb=IN1;
285 2 c=IN2;
286 2 //d=IN3;
287 2 //e=IN4;
288 2 f=IN5;
289 2 g=IN6;
290 2
291 2 if(backward==1)
292 2 {
293 3 START=1;
294 3 LASTS=0;
295 3 BACK=0;
296 3 LASTB=1;
297 3 LASTF=1;
298 3 counter2=0;
299 3 judgementback(90,20,20,1);
300 3 }
301 2 if(forward==1)
302 2 {
303 3 START=1;
C51 COMPILER V8.02 FINALLY 09/06/2007 19:43:26 PAGE 6
304 3 LASTS=0;
305 3 BACK=1; //前进
306 3 LASTB=0;
307 3 LASTF=0;
308 3 judgement(90,20,20);
309 3 }
310 2 if(black==1)
311 2 {
312 3 START=1;
313 3 LASTS=0;
314 3 TR1=1; //开定时器
315 3 time2=0;
316 3 judgement(90,20,20);
317 3 }
318 2 if(keykey==1)
319 2 {
320 3 speedchange(35,1);
321 3 speedchange(35,0);
322 3 chazhi1=abs((int)(avge-avge0));
323 3 if(chazhi1>chazhi) //chazhi1>=20
324 3 { move_or_not=1;
325 4 START=1;
326 4 LASTS=0;
327 4 counter2=50;
328 4
329 4 if(avge>avge0)
330 4 {
331 5 BACK=0;//后退
332 5 LASTB=1;
333 5 LASTF=1;
334 5 delayms(2);
335 5 judgementback(35,1,10,0);
336 5 }
337 4 if(avge<avge0)
338 4 {
339 5
340 5 BACK=1; //前进
341 5 LASTB=0;
342 5 LASTF=0;
343 5 delayms(2);
344 5 judgement(35,1,10);
345 5
346 5 }
347 4 }
348 3
349 3 else
350 3 {
351 4 START=0;
352 4 LASTS=1;
353 4 delayms(500);
354 4 delayms(200);
355 4 TR1=1; //开定时器
356 4 time1=0;
357 4 time2=1;
358 4
359 4
360 4 }
361 3 }
362 2
363 2 }
364 1 }
365
C51 COMPILER V8.02 FINALLY 09/06/2007 19:43:26 PAGE 7
366
367 //////////////////////////////////////////////
368 ////////////中断子程序///////////////////////
369 ////////////////////////////////////////////
370 /*PCA中断子程序*/
371 void PCA_ISR (void) interrupt 9
372 {
373 1
374 1 CCF0 = 0; /*清匹配中断标志*/
375 1
376 1 }
377 /*键盘中断子程序*/
378 void led(void) interrupt 19
379 {
380 1 uchar key,t;
381 1 EA=0;
382 1 key=CH452_Read();
383 1 if(0x62==key)
384 1 {
385 2 delayms(2);
386 2 avge0=avge;
387 2 //black=0;
388 2 BCD_H_L(avge0-200,1);
389 2 }
390 1 else if(0x63==key)
391 1 {
392 2 delayms(2);
393 2 xianshi=0;
394 2 TR0=1;
395 2 for(t=0;t<8;t++)
396 2 CH452_Write((CH452_DIG0+ (t<<8))|16);
397 2 CH452_Write(CH452_DIG1);
398 2 stage_clk_start();
399 2 black=1;
400 2 }
401 1 else if(0x7A==key)
402 1 {
403 2 delayms(2);
404 2 counter1=counter1+10;
405 2 CH452_Write(CH452_DIG3 | 1);
406 2 }
407 1 else if(0x7B==key)
408 1 {
409 2 delayms(2);
410 2 counter1=counter1-10;
411 2 CH452_Write(CH452_DIG3 | 0);
412 2 }
413 1 else if(0x50==key)
414 1 {
415 2 delayms(2);
416 2 transform=1;
417 2 CH452_Write(CH452_DIG7 | 1);
418 2
419 2 }
420 1 else if(0x58==key)
421 1 {
422 2 delayms(2);
423 2 transform=0;
424 2 CH452_Write(CH452_DIG7 | 2);
425 2 }
426 1 else if(0x78==key)
427 1 {
C51 COMPILER V8.02 FINALLY 09/06/2007 19:43:26 PAGE 8
428 2 delayms(2);
429 2 chazhi=chazhi+1;
430 2 CH452_Write(CH452_DIG7 | chazhi);
431 2 }
432 1 else if(0x79==key)
433 1 {
434 2 delayms(2);
435 2 time=time+1;
436 2 CH452_Write(CH452_DIG7 | 10);
437 2 }
438 1 else ;
439 1 EA=1;
440 1 }
441
442 /*定时器0中断子程序*/
443 void T0_ISR(void) interrupt 1 using 0
444 {
445 1 TR0=0;
446 1 TF0=0;
447 1 TH0=0x7D ;
448 1 TL0=0xCC ; //0xCC由0xCB+1得来
449 1 TR0=1;
450 1 if(T0_OF<10)
451 1 T0_OF++;
452 1 else
453 1 {
454 2
455 2 if(sec<59)
456 2 sec++;
457 2 else
458 2 {
459 3 sec=0;
460 3 min++;
461 3 CH452_Write(CH452_DIG3 | min); //先写min,因为人眼分辨不出
462 3 CH452_Write(0x1FB);
463 3 }
464 2 CH452_Write(CH452_DIG1 | (sec%10));
465 2 CH452_Write(CH452_DIG2 | (sec/10));
466 2 if(stage_clk_flag)
467 2 {
468 3 stage_sec++;
469 3 CH452_Write(CH452_DIG4 | (stage_sec%10));
470 3 if(stage_sec/10) CH452_Write(CH452_DIG5 | (stage_sec/10));
471 3 }
472 2 T0_OF=0;
473 2 }
474 1 }
475
476 /*定时器1中断子程序*/
477 void TIMER1_ISR (void) interrupt 3 using 1
478 {
479 1 uchar i;
480 1 TR1=0;
481 1 TF1=0;
482 1 TH1=0x7D;
483 1 TL1=0xFB;
484 1 TR1=1;
485 1 if(time1==1) //执行黑线判断程序17s
486 1 {
487 2 if(--counter1==0)
488 2 {
489 3 TR1=0; //关定时器
C51 COMPILER V8.02 FINALLY 09/06/2007 19:43:26 PAGE 9
490 3 time1=0; //标志
491 3 black=0; //不执行黑线判断程序
492 3 START=0;
493 3 keykey=1;//执行角度黑线判断程序
494 3 }
495 2
496 2 }
497 1 if(time2==1) //判断3s后5s显示
498 1 {
499 2 if(--counter2==0)
500 2 {
501 3 TR1=0; //关定时器
502 3 time2=0;//标志
503 3 keykey=0;
504 3 counter2=0;
505 3 if(move_or_not==1)
506 3 {
507 4 stage_clk_flag=0;//stage_clk_stop();//显示平衡的时间
508 4
509 4 CH452_Write(CH452_SELF_BCD|0x39);
510 4 CH452_Write(CH452_DIG0|0x1E);
511 4 CH452_Write(CH452_TWINKLE | 0x31);
512 4 for(i=5;i>0;i--)
513 4 {
514 5 CH452_Write(CH452_DIG7 | i);
515 5 SPOKER=1;
516 5 delay_s(1);
517 5 SPOKER=0;
518 5 delay_s(1);
519 5 }
520 4 CH452_Write(CH452_DIG7);//计数显示
521 4 stage_clk_start();
522 4 CH452_Write(CH452_DIG0|16);
523 4 move_or_not=0;
524 4 }
525 3 if(transform==0)
526 3 {
527 4 forward=0;
528 4 backward=0;
529 4 black=0;
530 4 xianshi=0;
531 4 transform=0;
532 4 keykey=1;
533 4
534 4 }//循环角度判断
535 3 if(transform==1)
536 3 {
537 4 keykey=0;
538 4 black=0;
539 4 backward=0;
540 4 xianshi=0;
541 4 transform=1;
542 4 forward=1;
543 4
544 4 }//平衡后前进
545 3
546 3 }
547 2 }
548 1
549 1 }
C51 COMPILER V8.02 FINALLY 09/06/2007 19:43:26 PAGE 10
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2323 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 60 ----
PDATA SIZE = ---- ----
DATA SIZE = 37 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 + -