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