📄 gps.lst
字号:
290 4 switch(nBcdField)
291 4 {
292 5 case 0:
293 5 nData = 20;
294 5 break;
295 5 case 1:
296 5 nData = Date[0];
297 5 break;
298 5 case 2:
299 5 nData = Date[1];
300 5 break;
301 5 case 3:
302 5 nData = Date[2];
303 5 break;
C51 COMPILER V6.14 GPS 08/21/2002 10:44:35 PAGE 6
304 5 case 4:
305 5 nData = Date[0];
306 5 break;
307 5 case 5:
308 5 nData = Date[1];
309 5 break;
310 5 }
311 4 if( nBcdPos < 6 )
312 4 nBcdCounter = ((nData/10) & (0x01 << (5 - nBcdPos)))?8:1;
313 4 else
314 4 nBcdCounter = ((nData%10) & (0x01 << (9 - nBcdPos)))?8:1;
315 4 }
316 3 nSecondSign = 0;
317 3 }
318 2
319 2 if(nCheckKey)
320 2 {
321 3 Scankeyboad();
322 3 nCheckKey = 0;
323 3 }
324 2 }
325 1 }
326
327
328 void Init(void)
329 {
330 1 CORRECTSIGN = 0;
331 1 LOSTSIGN = 1;
332 1 nGpsStatus = GPS_LOST;
333 1
334 1 Init8279();
335 1 InitSerial();
336 1
337 1 while(nGpsStatus ==GPS_LOST);
338 1
339 1 InitTime0();
340 1 InitTimer2();
341 1
342 1 // Initlize the extern interrupt source 0
343 1 IT0 = 1; // 设置负跳变引起中断
344 1 PX0 = 1;
345 1 }
346
347 void Init8279(void)
348 {
349 1 COM = 0XD1;
350 1 COM = 0x08;
351 1 COM = 0X32;
352 1 }
353
354 void InitSerial(void)
355 {
356 1 SCON = 0x50; // SCON: mode 1, 8-bit UART, enable rcvr
357 1 TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload
358 1 TH1 = 0xFA; // TH1: reload value for 9600 baud
359 1 TR1 = 1; // TR1: timer 1 run
360 1 PCON |= 0X80; // SET THE SMOD 1
361 1 TI = 1; // TI: set TI to send first char of UART
362 1 EA = 1;
363 1 ES = 1;
364 1 }
365
C51 COMPILER V6.14 GPS 08/21/2002 10:44:35 PAGE 7
366 void InitTime0(void)
367 {
368 1 TMOD |= 0X01;
369 1 TH0 = -(46080/256); // 500us
370 1 TL0 = -(46080%256); //
371 1 ET0 = 1;
372 1 TR0 = 1;
373 1 }
374
375 void InitTimer2(void)
376 {
377 1 T2CON &= 0xf0;
378 1 T2CON |= 0x80; // Set T2Ex valid
379 1 TH2 = -(TIMER2COUNTER/256); // 50ms
380 1 TL2 = -(TIMER2COUNTER%256); //
381 1 RCAP2H = TH2;
382 1 RCAP2L = TL2;
383 1 PT2 = 1;
384 1 //ET2 = 1; // open the T
385 1 }
386
387 void Scankeyboad()
388 {
389 1 if(COM&0X0F)
390 1 {
391 2 COM = 0X40;
392 2 nInputKey = DAT;
393 2 nInputKey = nInputKey&0x3f;
394 2 }
395 1 }
396
397 void OutSign(void)
398 {
399 1 OUTBCD = 1;
400 1 if(nMinuteSign)
401 1 {
402 2 OUTPPMS = OUTPPML = 1;
403 2 nMinuteSign = 0;
404 2 if(nHourSign)
405 2 {
406 3 OUTPPHS = OUTPPHL = 1;
407 3 nMinuteSign = 0;
408 3 }
409 2 nBcdPos = -1;
410 2 nBcdField = 0;
411 2 }
412 1
413 1 nSecondSign = 1;
414 1 nSignCounteNum = 0;
415 1 }
416
417 void ShowLED(void)
418 {
419 1 uchar i;
420 1 COM = 0x90;
421 1 //if(!nInputKey)
422 1 {
423 2 for(i = 0; i<16; i++)
424 2 {
425 3 COM = i+0x80;
426 3 switch(i)
427 3 {
C51 COMPILER V6.14 GPS 08/21/2002 10:44:35 PAGE 8
428 4 case 0:
429 4 DAT = table[2];
430 4 break;
431 4 case 1:
432 4 DAT = table[0];
433 4 break;
434 4 case 2:
435 4 DAT = table[Date[0]/10];
436 4 break;
437 4 case 3:
438 4 DAT = table[Date[0]%10];
439 4 break;
440 4 case 4:
441 4 DAT = table[Date[1]/10];
442 4 break;
443 4 case 5:
444 4 DAT = table[Date[1]%10];
445 4 break;
446 4 case 6:
447 4 DAT = table[Date[2]/10];
448 4 break;
449 4 case 7:
450 4 DAT = table[Date[2]%10+10];
451 4 break;
452 4 case 8:
453 4 DAT = table[Time[0]/10];
454 4 break;
455 4 case 9:
456 4 DAT = table[Time[0]%10];
457 4 break;
458 4 case 10:
459 4 DAT = 0x40;
460 4 break;
461 4 case 11:
462 4 DAT = table[Time[1]/10];
463 4 break;
464 4 case 12:
465 4 DAT = table[Time[1]%10];
466 4 break;
467 4 case 13:
468 4 DAT = 0x40;
469 4 break;
470 4 case 14:
471 4 DAT = table[Time[2]/10];
472 4 break;
473 4 case 15:
474 4 DAT = table[Time[2]%10];
475 4 break;
476 4 }
477 3 }
478 2 }
479 1 /* else if(!(nInputKey&0x10))
480 1 {
481 1 for(i = 0; i<7; i++)
482 1 {
483 1 COM = i+0x80;
484 1 DAT = table[led[i]];
485 1 }
486 1 COM = 7+0x80;
487 1 DAT = table[20];
488 1 for(i = 8;i<16;i++)
489 1 {
C51 COMPILER V6.14 GPS 08/21/2002 10:44:35 PAGE 9
490 1 COM = i+0x80;
491 1 DAT = table[led[i-1]];
492 1 }
493 1 }
494 1 else
495 1 {
496 1 for(i = 0;i<2;i++)
497 1 {
498 1 COM = i + 0x80;
499 1 DAT = table[Satelite[i]];
500 1 }
501 1 COM = 2 + 0x80;
502 1 DAT = table[20];
503 1 for(i =3;i<8;i++)
504 1 {
505 1 COM = i + 0x80;
506 1 DAT = table[Satelite[i-1]];
507 1 }
508 1 for(i = 8;i<16;i++)
509 1 {
510 1 COM = i + 0x80;
511 1 DAT = table[20];
512 1 }
513 1 }*/
514 1 }
515
516 // 为了与GPS输出同步输出时间信号,必须计算出下一秒时间和日期
517 //
518 void NextSecond(void)
519 {
520 1 if(++Time[2] == 60)
521 1 {
522 2 Time[2] = 0;
523 2 nMinuteSign = 1;
524 2 if(++Time[1] == 60)
525 2 {
526 3 Time[1] = 0;
527 3 nHourSign = 1;
528 3 if(++Time[0] == 24)
529 3 {
530 4 Time[0] = 0;
531 4 if(++Date[2] == 29 && Date[1] == 2 && (Date[0]%4) )
532 4 {
533 5 Date[2] = 1; // 3月1号
534 5 Date[1] = 3;
535 5 }
536 4 else if(Date[2] == 30 && Date[1] == 2 && !(Date[0]%4))
537 4 {
538 5 Date[2] = 1;
539 5 Date[1] = 3;
540 5 }
541 4 else if(Date[2] == 31)
542 4 {
543 5 if(Date[1] == 9 || Date[1] == 11 || Date[1] == 2 ||
544 5 Date[1] == 4 || Date[1] == 6)
545 5 {
546 6 Date[2] = 1;
547 6 Date[1] ++;
548 6 }
549 5 }
550 4 else if(Date[2] == 32)
551 4 {
C51 COMPILER V6.14 GPS 08/21/2002 10:44:35 PAGE 10
552 5 if( (Date[1] >= 8 && !(Date[1]%2)) ||
553 5 (Date[1] <8 && (Date[1]%2)))
554 5 {
555 6 Date[2] = 1;
556 6 if(++Date[1] == 13)
557 6 {
558 7 Date[1] = 1;
559 7 Date[0] ++;
560 7 }
561 6 }
562 5 }
563 4 }
564 3 }
565 2 }
566 1 }
567
568
569
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1685 ----
CONSTANT SIZE = 63 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 57 3
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -