📄 222.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 222 09/06/2007 04:24:22 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 if(chazhi1>chazhi) //chazhi1>=20
342 4 {
343 5 START=1;
344 5 LASTS=0;
345 5 counter2=50;
346 5
347 5 if(avge>avge0-1)
348 5 {
349 6 BACK=0;//后退
350 6 LASTB=1;
351 6 LASTF=1;
352 6 delayms(3);
353 6 judgementback(40,1,15,0);
354 6 }
355 5 if(avge<avge0)
356 5 {
357 6
358 6 BACK=1; //前进
359 6 LASTB=0;
360 6 LASTF=0;
361 6 delayms(3);
362 6 judgement(40,1,15);
363 6
364 6 }
365 5
C51 COMPILER V8.02 222 09/06/2007 04:24:22 PAGE 7
366 5 }
367 4
368 4 else
369 4 {
370 5 START=0;
371 5 LASTS=1;
372 5 delayms(500);
373 5 TR1=1; //开定时器
374 5 time1=0;
375 5 time2=1;
376 5
377 5 }
378 4
379 4 }
380 3 else
381 3 {
382 4 START=0;
383 4 LASTS=1;
384 4 }
385 3
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 black=0;
409 2 BCD_H_L(avge0-200,1);
410 2 }
411 1 else if(0x63==key)
412 1 {
413 2 delayms(2);
414 2 black=1;
415 2 xianshi=0;
416 2 TR0=1;
417 2 for(t=0;t<8;t++)
418 2 CH452_Write((CH452_DIG0+ (t<<8))|16);
419 2 CH452_Write(CH452_DIG1);
420 2 stage_clk_start();
421 2 }
422 1 else if(0x7A==key)
423 1 {
424 2 delayms(2);
425 2 counter1=counter1+10;
426 2 CH452_Write(CH452_DIG3 | 1);
427 2 }
C51 COMPILER V8.02 222 09/06/2007 04:24:22 PAGE 8
428 1 else if(0x7B==key)
429 1 {
430 2 delayms(2);
431 2 counter1=counter1-10;
432 2 CH452_Write(CH452_DIG3 | 0);
433 2 }
434 1 else if(0x50==key)
435 1 {
436 2 delayms(2);
437 2 transform=1;
438 2 CH452_Write(CH452_DIG7 | 1);
439 2
440 2 }
441 1 else if(0x58==key)
442 1 {
443 2 delayms(2);
444 2 transform=0;
445 2 CH452_Write(CH452_DIG7 | 2);
446 2 }
447 1 else if(0x78==key)
448 1 {
449 2 delayms(2);
450 2 chazhi=chazhi+1;
451 2 CH452_Write(CH452_DIG7 | chazhi);
452 2 }
453 1 else ;
454 1 EA=1;
455 1 }
456
457 /*定时器0中断子程序*/
458 void T0_ISR(void) interrupt 1 using 0
459 {
460 1 TR0=0;
461 1 TF0=0;
462 1 TH0=0x7D ;
463 1 TL0=0xCC ; //0xCC由0xCB+1得来
464 1 TR0=1;
465 1 if(T0_OF<10)
466 1 T0_OF++;
467 1 else
468 1 {
469 2
470 2 if(sec<59)
471 2 sec++;
472 2 else
473 2 {
474 3 sec=0;
475 3 min++;
476 3 CH452_Write(CH452_DIG3 | min); //先写min,因为人眼分辨不出
477 3 CH452_Write(0x1FB);
478 3 }
479 2 CH452_Write(CH452_DIG1 | (sec%10));
480 2 CH452_Write(CH452_DIG2 | (sec/10));
481 2 if(stage_clk_flag)
482 2 {
483 3 stage_sec++;
484 3 CH452_Write(CH452_DIG4 | (stage_sec%10));
485 3 if(stage_sec/10) CH452_Write(CH452_DIG5 | (stage_sec/10));
486 3 }
487 2 T0_OF=0;
488 2 }
489 1 if(--counter3==0)
C51 COMPILER V8.02 222 09/06/2007 04:24:22 PAGE 9
490 1 {
491 2 counter3=2;
492 2 look=1;
493 2
494 2 }
495 1 }
496
497 /*定时器1中断子程序*/
498 void TIMER1_ISR (void) interrupt 3 using 1
499 {
500 1 uchar i;
501 1 TR1=0;
502 1 TF1=0;
503 1 TH1=0x7D;
504 1 TL1=0xFB;
505 1 TR1=1;
506 1 if(time1==1) //执行黑线判断程序17s
507 1 {
508 2 if(--counter1==0)
509 2 {
510 3 TR1=0; //关定时器
511 3 time1=0; //标志
512 3 black=0; //不执行黑线判断程序
513 3 START=0;
514 3 keykey=1;//执行角度黑线判断程序
515 3 }
516 2
517 2 }
518 1 if(time2==1) //判断3s后5s显示
519 1 {
520 2 if(--counter2==0)
521 2 {
522 3 TR1=0; //关定时器
523 3 time2=0;//标志
524 3 keykey=0;
525 3 counter2=0;
526 3 stage_clk_flag=0;//stage_clk_stop();//显示平衡的时间
527 3 CH452_Write(CH452_SELF_BCD|0x39);
528 3 CH452_Write(CH452_DIG0|0x1E);
529 3 CH452_Write(CH452_TWINKLE | 0x31);
530 3 for(i=5;i>0;i--)
531 3 {
532 4 CH452_Write(CH452_DIG7 | i);
533 4 SPOKER=1;
534 4 delay_s(1);
535 4 SPOKER=0;
536 4 delay_s(1);
537 4 }
538 3 CH452_Write(CH452_DIG7);//计数显示
539 3 stage_clk_start();
540 3 CH452_Write(CH452_DIG0|16);
541 3 if(transform==0)
542 3 {
543 4 forward=0;
544 4 backward=0;
545 4 black=0;
546 4 xianshi=0;
547 4 transform=0;
548 4 keykey=1;
549 4
550 4 }//循环角度判断
551 3 if(transform==1)
C51 COMPILER V8.02 222 09/06/2007 04:24:22 PAGE 10
552 3 {
553 4 keykey=0;
554 4 black=0;
555 4 backward=0;
556 4 xianshi=0;
557 4 transform=1;
558 4 forward=1;
559 4
560 4 }//平衡后前进
561 3
562 3 }
563 2 }
564 1
565 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2352 ----
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 + -