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