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