📄 main.lst
字号:
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 + -