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