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