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

📄 main.lst

📁 C8051F023的应用
💻 LST
📖 第 1 页 / 共 3 页
字号:
 258   1              SPI0_Init(potentiometer_data);
 259   1              }
 260   1              else 
 261   1              {
 262   1              main_flag = 0;
 263   1              }
 264   1              delay(5);
 265   1              }while(main_flag);
 266   1              height_flag = 1;
 267   1              ADC0CN &= 0x6F; // ADC Control Register:AD trans disabled
 268   1      */
 269   1      
 270   1      
 271   1          PCA0MD &= ~0x40;                       // WDTE = 0 (clear watchdog timer 
 272   1              sys_ini();
 273   1      
 274   1      //      while(1)
 275   1      //      {
 276   1      //              Indicator_LED=0;
 277   1      //              delay(50);
 278   1      //              Indicator_LED=1;
 279   1      //              delay(50);
 280   1      //      }
 281   1              Start_Point = &OS_PTbl[0];
 282   1              Any_Point   = &OS_PTbl[1];
 283   1      
 284   1      /*********************************************************************/
 285   1      /* system self - testing by sending OK
 286   1      /*********************************************************************/
 287   1        
 288   1                Read_GPS_GPGGA_B();
 289   1                Read_GPS_GPRMC_B();
 290   1                Process_GPS();
 291   1                send_data();
 292   1                LED1 = 0;  // make the led light and dark
 293   1              
 294   1                putbyte('O');
 295   1                putbyte('K');
 296   1      
 297   1                delay(150);
 298   1              
 299   1                do{
 300   2                      delay(60);
 301   2                      putbyte(0x51);
 302   2                      putbyte(0x52);
C51 COMPILER V7.06   MAIN                                                                  01/12/2006 13:06:29 PAGE 6   

 303   2                      Process_GPS();
 304   2                                       gps_point.orientation=0;                       
 305   2                                       gps_point.star_number=3;
 306   2                                       gps_point.OS_UTC.times.hour=8;         
 307   2                                       gps_point.OS_UTC.times.min=30;
 308   2                                       gps_point.OS_UTC.times.sec=59;
 309   2                                       L_X=100;////0x0064
 310   2                                       L_Y=101;//0x0065
 311   2                                       gps_point.f_heading=0x00;
 312   2                                       gps_point.f_speed=0xab;//171
 313   2                                       gps_point.f_altitude=0xcd;//171
 314   2                                       gps_point.f_magval=0xef;//171
 315   2                      LED1=!LED1;  // make the led dark
 316   2                 } while(!GPS_received_data_OK);   // if no gps, flash.
 317   1              
 318   1                LED1 = 1;  // make the led dark
 319   1              
 320   1              /*********************************************************************/
 321   1              /* NAV Start Point Calculation
 322   1              /*********************************************************************/
 323   1              
 324   1              while(!gps_point.orientation||second_flag == 0)
 325   1               { //4
 326   2               _nop_();
 327   2               // GPS_received_data_OK = 1;
 328   2               if(GPS_received_data_OK)
 329   2                {  //3
 330   3                  GPS_received_data_OK = 0;
 331   3      //          Read_GPS_GPRMC_C();
 332   3                      // for (i = 0; i< 90 ; i++) r_buf[i]= s_buf[i];
 333   3                Read_GPS_GPGGA_B();
 334   3                Read_GPS_GPRMC_B();
 335   3                //  gps_point.orientation=1;
 336   3                  if(GPGGA_flag == 1)
 337   3                    { //2
 338   4                         OS_ENTER_CRITICAL();
 339   4                     GPGGA_flag = 0;
 340   4                     GPRMC_flag = 0;
 341   4                     switch(gps_point.orientation)
 342   4                       {  //1
 343   5                        case 0x00:
 344   5                                 _nop_();
 345   5                                 GPS_Count = 0;
 346   5                                 L_X = 0;
 347   5                                 L_Y = 0;
 348   5                                                 putbyte(0x66);
 349   5                                 break;
 350   5                        case 0x01:
 351   5                                 GPS_Count ++;
 352   5                                                if(second_flag == 0 && GPS_Count == 10)
 353   5                                              {
 354   6                                           Start_Point->Ex = gps_point.f_longitude;
 355   6                                           Start_Point->Ny = gps_point.f_latitude ;
 356   6                                      }
 357   5                                 if (GPS_Count >= 10) 
 358   5                                                  { GPS_Count = 0; second_flag = 1; }
 359   5                                                      putbyte(0x77);
 360   5                                 break;
 361   5                        case 2:
 362   5                                 _nop_();
 363   5                                 break;
 364   5                        default:
C51 COMPILER V7.06   MAIN                                                                  01/12/2006 13:06:29 PAGE 7   

 365   5                                 _nop_();
 366   5                                 break;
 367   5                        }  //1
 368   4                         OS_EXIT_CRITICAL();
 369   4                         send_data();
 370   4                     } //2
 371   3                   } //3
 372   2                 _nop_();
 373   2                 } //4
 374   1              
 375   1                 putbyte('A');putbyte('A');putbyte('A');putbyte('A');putbyte('A');
 376   1                 putbyte('\r');
 377   1                 putbyte('\n');
 378   1              
 379   1                 L_X = (int) (Start_Point->Ex );
 380   1                 L_Y = (int) (Start_Point->Ny );
 381   1                 LED1 = 1;                                    // lighting 
 382   1                 send_data();
 383   1                 Process_GPS();
 384   1              
 385   1              //   while(1);
 386   1              /*********************************************************************/
 387   1              /* NAV Point Calculation 
 388   1              /*********************************************************************/
 389   1              
 390   1               while(1){ //4
 391   2               _nop_();
 392   2               _nop_();
 393   2               _nop_();
 394   2               //  GPS_received_data_OK = 1;
 395   2               // gps_point.orientation = 1;
 396   2               if(GPS_received_data_OK)
 397   2                {  //3
 398   3                  GPS_received_data_OK = 0;
 399   3      //          Read_GPS_GPRMC_C();
 400   3                Read_GPS_GPGGA_B();
 401   3                Read_GPS_GPRMC_B();
 402   3                  // Read_GPS_GPGGA_B();
 403   3              //      gps_point.orientation = 1;
 404   3                  if(GPGGA_flag == 1)
 405   3                    { //2
 406   4                         OS_ENTER_CRITICAL();
 407   4                     GPGGA_flag = 0;
 408   4                     GPRMC_flag = 0;
 409   4                         // gps_point.orientation =1;
 410   4                     switch(gps_point.orientation)
 411   4                       {  //1
 412   5                        case 0x00:
 413   5                                 _nop_();
 414   5                                 L_X = 0;
 415   5                                 L_Y = 0;
 416   5                                                 putbyte(0x55);
 417   5                                 break;
 418   5                        case 0x01:
 419   5                                        _nop_();
 420   5                                        any_temp = gps_point.f_latitude;
 421   5                                        Any_Point->Ny = (any_temp - Start_Point->Ny)*110946.306;
 422   5                                        any_temp = gps_point.f_longitude;
 423   5                                        Any_Point->Ex = (any_temp - Start_Point->Ex)*111320.448*cos(Start_Point->Ny*PI/180.);
 424   5                                Any_Point->Distance =sqrt( (Any_Point->Ex)*(Any_Point->Ex)+(Any_Point->Ny)*(Any_Point->
             -Ny) );
 425   5      //                                        Any_Point->G = 10;
C51 COMPILER V7.06   MAIN                                                                  01/12/2006 13:06:29 PAGE 8   

 426   5      //                        if(Any_Point->Distance > 3100) 
 427   5                                                      Any_Point->G = 1;
 428   5      //                                        else
 429   5      //                                          Any_Point->G = 10;
 430   5                                /*
 431   5                                if(Any_Point->Distance <= 500) Any_Point->G = DBSAE_Table[0];
 432   5                                                if(Any_Point->Distance > 500 && Any_Point->Distance <= 1000)  Any_Point->G = DBSAE_Table[0];
 433   5                                                if(Any_Point->Distance > 1000 && Any_Point->Distance <= 2000) Any_Point->G = DBSAE_Table[1];
 434   5                                                if(Any_Point->Distance > 2000 && Any_Point->Distance <= 3000) Any_Point->G = DBSAE_Table[2];
 435   5                                                if(Any_Point->Distance > 3000 && Any_Point->Distance <= 4000) Any_Point->G = DBSAE_Table[3];
 436   5                                                if(Any_Point->Distance > 4000 && Any_Point->Distance <= 5000) Any_Point->G = DBSAE_Table[4];
 437   5                                                if(Any_Point->Distance > 5000 && Any_Point->Distance <= 6000) Any_Point->G = DBSAE_Table[5];
 438   5                                                if(Any_Point->Distance > 6000 && Any_Point->Distance <= 7000) Any_Point->G = DBSAE_Table[6];
 439   5                                */
 440   5                                
 441   5                                        L_X =(int)(Any_Point->Ex);
 442   5                                        L_Y =(int)(Any_Point->Ny);
 443   5              
 444   5                                break;
 445   5                        case 2:
 446   5                                 _nop_();
 447   5                                 break;
 448   5                        default:
 449   5                                 _nop_();
 450   5                                 break;
 451   5                        }  //1
 452   4                         OS_EXIT_CRITICAL();
 453   4                     send_data();
 454   4                              ReportTime_buf[1] = gps_point.OS_UTC.times.year_high*100-2000;
 455   4                              ReportTime_buf[1] = gps_point.OS_UTC.times.year_low+ReportTime_buf[1];
 456   4                              ReportTime_buf[2] = gps_point.OS_UTC.times.month;
 457   4                              ReportTime_buf[3] = gps_point.OS_UTC.times.date;
 458   4                              ReportTime_buf[5] = gps_point.OS_UTC.times.hour;
 459   4                              ReportTime_buf[6] = gps_point.OS_UTC.times.min;
 460   4                              ReportTime_buf[7] = gps_point.OS_UTC.times.sec;
 461   4                              day_count = ReportTime_buf[1];
 462   4                              day_count_temp2 = day_count/4;
 463   4                              if(gps_point.OS_UTC.times.year_low==0)
 464   4                              {
 465   5                                      day_count_temp1 = gps_point.OS_UTC.times.year_high%4;
 466   5                                      if(day_count_temp1!=0)
 467   5                                      {
 468   6                                              day_count_temp2 = day_count_temp2 - 1;
 469   6                                      }
 470   5                              }
 471   4                              else
 472   4                                      day_count_temp1 = day_count%4;
 473   4                              if(day_count_temp1==0)
 474   4                              day_count = day_count*365 + day_count_temp2 + 5;
 475   4                              else day_count = day_count*365 +1 + day_count_temp2 + 5;
 476   4                     switch(gps_point.OS_UTC.times.month)
 477   4                       {  //1
 478   5                        case 0x01:
 479   5                                 day_count = day_count + gps_point.OS_UTC.times.date;
 480   5                                 break;
 481   5                        case 0x02:
 482   5                                 day_count = day_count + 31+ gps_point.OS_UTC.times.date;
 483   5              
 484   5                                break;
 485   5                        case 0x03:
 486   5                                                      if(day_count_temp1==0)
 487   5                                  day_count = day_count + 31+ 29 + gps_point.OS_UTC.times.date;
C51 COMPILER V7.06   MAIN                                                                  01/12/2006 13:06:29 PAGE 9   

 488   5                                                      else  
 489   5                                                      day_count = day_count + 31+ 28 + gps_point.OS_UTC.times.date;
 490   5                                 break;
 491   5                        case 0x04:
 492   5                                                      if(day_count_temp1==0)
 493   5                                  day_count = day_count + 31+ 29 + 31 + gps_point.OS_UTC.times.date;
 494   5                                                      else  
 495   5                                                      day_count = day_count + 31+ 28 + 31 + gps_point.OS_UTC.times.date;
 496   5                                 break;
 497   5                        case 0x05:
 498   5                                                      if(day_count_temp1==0)
 499   5                                  day_count = day_count + 31+ 29 + 31+ 30 + gps_point.OS_UTC.times.date;
 500   5                                                      else  
 501   5                                                      day_count = day_count + 31+ 28 + 31+ 30 + gps_point.OS_UTC.times.date;
 502   5                                 break;
 503   5                        case 0x06:
 504   5                                                      if(day_count_temp1==0)
 505   5                                  day_count = day_count + 31+ 29 + 31+ 30 + 31 + gps_point.OS_UTC.times.date;
 506   5                                                      else  
 507   5                                                      day_count = day_count + 31+ 28 + 31+ 30 + 31 + gps_point.OS_UTC.times.date;
 508   5                                 break;
 509   5                        case 0x07:
 510   5                                                      if(day_count_temp1==0)
 511   5                                  day_count = day_count + 31+ 29 + 31+ 30 + 31 + 30 + gps_point.OS_UTC.times.date;
 512   5                                                      else  
 513   5                                                      day_count = day_count + 31+ 28 + 31+ 30 + 31 + 30 + gps_point.OS_UTC.times.date;
 514   5                                 break;
 515   5                        case 0x08:
 516   5                                                      if(day_count_temp1==0)
 517   5                                  day_count = day_count + 31+ 29 + 31+ 30 + 31 + 30 + 31 + gps_point.OS_UTC.times.date;
 518   5                                                      else  
 519   5                                                      day_count = day_count + 31+ 28 + 31+ 30 + 31 + 30 + 31 + gps_point.OS_UTC.times.date;
 520   5                                 break;
 521   5                        case 0x09:
 522   5                                                      if(day_count_temp1==0)
 523   5                                  day_count = day_count + 31+ 29 + 31+ 30 + 31 + 30 + 31 + 31 + gps_point.OS_UTC.times.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -