📄 monitor.lst
字号:
312 3 break;
313 3 case 0x21:
314 3 num1=2;
315 3 num2=num2*10+num1;
316 3 disp_num(num1);
317 3 break;
318 3 case 0x41:
319 3 num1=3;
320 3 num2=num2*10+num1;
321 3 disp_num(num1);
322 3 break;
323 3 case 0x0a:
324 3 num1=4;
325 3 num2=num2*10+num1;
326 3 disp_num(num1);
327 3 break;
328 3 case 0x12:
329 3 num1=5;
330 3 num2=num2*10+num1;
331 3 disp_num(num1);
332 3 break;
333 3 case 0x22:
334 3 num1=6;
335 3 num2=num2*10+num1;
336 3 disp_num(num1);
337 3 break;
338 3 case 0x42:
339 3 num1=7;
340 3 num2=num2*10+num1;
341 3 disp_num(num1);
342 3 break;
343 3 case 0x0c:
344 3 num1=8;
345 3 num2=num2*10+num1;
346 3 disp_num(num1);
347 3 break;
348 3 case 0x14:
349 3 num1=9;
350 3 num2=num2*10+num1;
351 3 disp_num(num1);
352 3 break;
353 3 case 0x24:
354 3 num1=0;
355 3 num2=0;
356 3 lcd_mwc(0xba);
357 3 lcd_mwc(0x40);
358 3 for (num1=0;num1<8;num1++) disp_num(10);
359 3 lcd_mwc(0xba);
360 3 lcd_mwc(0x40);
361 3 break;
362 3 case 0x44:
363 3 lcd_mwc(0xba);
364 3 lcd_mwc(0x40);
C51 COMPILER V7.02b MONITOR 09/27/2005 23:33:35 PAGE 7
365 3 for (num1=0;num1<8;num1++) disp_num(10);
366 3 lcd_mwc(0xba);
367 3 lcd_mwc(0x40);
368 3 break;
369 3 }
370 2 }
371 1 return(num2);
372 1 }
373
374 /*两个中断处理函数*/
375
376 void timer0(void) interrupt 1 using 1
377 {
378 1 EA=0;//diable interrupt
379 1 time_counter++;
380 1 P3_5=0;//enable cpld
381 1 circle=P0;
382 1 P3_5=1;
383 1 ttcy+=circle;
384 1 timer0_flag=1;
385 1 EA=1;
386 1 }
387
388
389 void int0(void) interrupt 0 using 2
390 {
391 1 EA=0;
392 1 WMCON=WMCON&0xfe;
393 1 int0_flag=1;
394 1 }
395
396 void main(void)
397 {
398 1 uint a;
399 1 uchar m,n,l;
400 1 for (m=0;m<200;m++) for (n=0;n<250;n++) ; //delay 200ms,should be adjusted to be not less then 200ms
401 1 //in order to wait peripheral to be ready
402 1
403 1 P3_0=0;//turn alarm off
404 1 P3_5=1;//diable cpld output
405 1 P3_2=1;//ready for int0
406 1 buffer_counter=6;
407 1
408 1 lcd_clear();
409 1 lcd_init();
410 1
411 1 lcd_mwc(0xb8);
412 1 lcd_mwc(0x40);
413 1 dispm_hz_up(&QING);
414 1 dispm_hz_up(&CHA);
415 1 dispm_hz_up(&KA);
416 1 lcd_mwc(0xb9);
417 1 lcd_mwc(0x40);
418 1 dispm_hz_down(&QING);
419 1 dispm_hz_down(&CHA);
420 1 dispm_hz_down(&KA);//display "请插卡"
421 1
422 1 P1=0xff;
423 1 while (cardin()&0xa0) ;//这个地方,用什么来表示已经插卡需要商量。
424 1
425 1 page_counter=getcurpage();
426 1
C51 COMPILER V7.02b MONITOR 09/27/2005 23:33:35 PAGE 8
427 1 lcd_mwc(0xb8);
428 1 lcd_mwc(0x50);
429 1 // dispm_hz_up(&QING);
430 1 dispm_hz_up(&SHU);
431 1 dispm_hz_up(&CHE);
432 1 dispm_hz_up(&HAO);
433 1 lcd_mwc(0xb9);
434 1 lcd_mwc(0x50);
435 1 // dispm_hz_down(&QING);
436 1 dispm_hz_down(&SHU);
437 1 dispm_hz_down(&CHE);
438 1 dispm_hz_down(&HAO);//display "请输车号"
439 1
440 1 lcd_mwc(0xba);
441 1 lcd_mwc(0x40);
442 1 a=getkey();
443 1 write_to_flash((uchar)(a>>8));
444 1 write_to_flash((uchar)a);//store 车号
445 1
446 1 lcd_mwc(0xb8);
447 1 lcd_mwc(0x60);
448 1 // dispm_hz_up(&QING);
449 1 // dispm_hz_up(&SHU);
450 1 dispm_hz_up(&ZHAN);
451 1 // dispm_hz_up(&HAO);
452 1 lcd_mwc(0xb9);
453 1 lcd_mwc(0x60);
454 1 // dispm_hz_down(&QING);
455 1 // dispm_hz_down(&SHU);
456 1 dispm_hz_down(&ZHAN);
457 1 // dispm_hz_down(&HAO);//display "请输站号"
458 1
459 1 lcd_mwc(0xba);
460 1 lcd_mwc(0x40);
461 1 a=getkey();
462 1 write_to_flash((uchar)(a>>8));
463 1 write_to_flash((uchar)a);//store 站号
464 1
465 1 // buffer_counter=0;
466 1
467 1 set_5s_counter();
468 1
469 1 lcd_mwc(0xb8);
470 1 lcd_mwc(0x40);
471 1 dispm_hz_up(&SU);
472 1 dispm_hz_up(&DU);
473 1 lcd_mwc(0xb9);
474 1 lcd_mwc(0x40);
475 1 dispm_hz_down(&SU);
476 1 dispm_hz_down(&DU);//display "速度"
477 1
478 1 lcd_mwc(0xbc);
479 1 lcd_mwc(0x40);
480 1 dispm_hz_up(&LI);
481 1 dispm_hz_up(&CHENG);
482 1 lcd_mwc(0xbd);
483 1 lcd_mwc(0x40);
484 1 dispm_hz_down(&LI);
485 1 dispm_hz_down(&CHENG);//display "里程"
486 1
487 1
488 1
C51 COMPILER V7.02b MONITOR 09/27/2005 23:33:35 PAGE 9
489 1 while (!run_bit) ;//wait for vehicle move
490 1 storetime();
491 1 buffer_counter=10;
492 1
493 1 WMCON=0xe0;//2.048s watchdog timer
494 1 WMCON=WMCON|0x01;//enable watchdog
495 1
496 1 while (1)//sycling wait
497 1 {
498 2 for (m=0;m<250;m++) for (n=0;n<250;n++) ;
499 2 for (m=0;m<250;m++) for (n=0;n<250;n++) ;//should be adjusted for 500ms delay
500 2 WMCON=WMCON|0x02;//reset watchdog
501 2
502 2 if (circle>LIMIT) P3_0=1;
503 2 else P3_0=0;//if overspeed then alarm
504 2
505 2 if (timer0_flag==1)
506 2 {
507 3 write_to_flash(circle);
508 3 timer0_flag=0;
509 3 }
510 2
511 2 WMCON=WMCON|0x02;//reset watchdog
512 2 if (time_counter>=120)//if 10 min,show speed and distance
513 2 {
514 3 time_counter=0;
515 3 m=36*circle/35;
516 3 n=m/100;
517 3
518 3 lcd_mwc(0xba);
519 3 lcd_mwc(0x40);
520 3 disp_num(n);
521 3
522 3 l=(m-n*100)/10;
523 3 disp_num(l);
524 3
525 3 disp_num(m-n*100-l*10);
526 3 disp_num(11);
527 3
528 3 n=(36*circle-35*m)*10/35;
529 3 disp_num(n);//以上计算速度并显示
530 3
531 3 a=ttcy/700;
532 3 m=a/100;
533 3
534 3 lcd_mwc(0xbd);
535 3 lcd_mwc(0x40);
536 3 disp_num(m);
537 3 n=(a-m*100)/10;
538 3 disp_num(n);
539 3 disp_num(a-m*100-n*10);
540 3 disp_num(11);
541 3 m=(ttcy-700*a)*10/700;
542 3 disp_num(m);//以上计算并显示里程
543 3 }
544 2
545 2 WMCON=WMCON|0x02;//reset watchdog
546 2
547 2 if (int0_flag==1)
548 2 {
549 3 write_to_flash(0xf0);
550 3 write_to_flash(0xf1);
C51 COMPILER V7.02b MONITOR 09/27/2005 23:33:35 PAGE 10
551 3 storetime();
552 3
553 3 lcd_clear();
554 3 lcd_init();
555 3 lcd_mwc(0xb8);
556 3 lcd_mwc(0x40);
557 3 dispm_hz_up(&QING);
558 3 dispm_hz_up(&SHU);
559 3 dispm_hz_up(&ZHAN);
560 3 dispm_hz_up(&HAO);
561 3 lcd_mwc(0xb9);
562 3 lcd_mwc(0x40);
563 3 dispm_hz_down(&QING);
564 3 dispm_hz_down(&SHU);
565 3 dispm_hz_down(&ZHAN);
566 3 dispm_hz_down(&HAO);//display "请输站号"
567 3
568 3 lcd_mwc(0xba);
569 3 lcd_mwc(0x40);
570 3 a=getkey();
571 3 write_to_flash((uchar)(a>>8));
572 3 write_to_flash((uchar)a);//store 站号
573 3
574 3 if (buffer_counter!=0)
575 3 {
576 4 while (!(df_busy()&0x80)) ;
577 4 P1 &= ~DF_CHIP_SELECT; // enable DataFlash
578 4
579 4 if (active_buffer==1) write_spi(B1_TO_MM_PAGE_PROG_WITHOUT_ERASE);
580 4 else write_spi(B2_TO_MM_PAGE_PROG_WITHOUT_ERASE);
581 4 write_spi(0x00); // don't cares
582 4 write_spi((uchar)(page_counter>>7)); // don't cares plus first 4 bits of page address
583 4 write_spi((uchar)(page_counter<<1)); // page address
584 4 write_spi(0x00); // don't cares
585 4
586 4 P1 |= DF_CHIP_SELECT; // disable DataFlash
587 4 if (active_buffer==1) active_buffer=0;
588 4 else active_buffer=1;
589 4 buffer_counter=0;
590 4 }
591 3
592 3
593 3 a=getfrnpg();
594 3 write_to_flash((uchar)(page_counter>>8));
595 3 write_to_flash((uchar)page_counter);
596 3 while (!(df_busy()&0x80)) ;
597 3 P1 &= ~DF_CHIP_SELECT; // enable DataFlash
598 3
599 3 if (active_buffer==1) write_spi(B1_TO_MM_PAGE_PROG_WITHOUT_ERASE);
600 3 else write_spi(B2_TO_MM_PAGE_PROG_WITHOUT_ERASE);
601 3 write_spi(0x00); // don't cares
602 3 write_spi((uchar)(a>>7)); // don't cares plus first 4 bits of page address
603 3 write_spi((uchar)(a<<1)); // page address
604 3 write_spi(0x00); // don't cares
605 3
606 3 P1 |= DF_CHIP_SELECT; // disable DataFlash
607 3
608 3 page_counter++;
609 3 TIME_LSTPGH=(uchar)(page_counter>>8);
610 3 TIME_LSTPGL=(uchar)(page_counter);
611 3 a--;
612 3 TIME_FRNPGH=(uchar)(a>>8);
C51 COMPILER V7.02b MONITOR 09/27/2005 23:33:35 PAGE 11
613 3 TIME_FRNPGL=(uchar)a;
614 3 }
615 2 }
616 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1913 ----
CONSTANT SIZE = 448 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 19 5
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 + -