⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monitor.lst

📁 基于单片机控制的汽车行驶状态纪录仪系统设计
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -