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

📄 gps.lst

📁 w77E58开发的具备蓝牙功能的GPS导航仪
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.08   GPS                                                                   04/06/2008 23:24:33 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE GPS
OBJECT MODULE PLACED IN gps.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE gps.c BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          #include <w77e58.h>
   2          #include "global.h"
   3          #include "io.h"
   4          #include "serial.h"
   5          #include "timer.h"
*** WARNING C258 IN LINE 4 OF TIMER.H: 'd': mspace on parameter ignored
*** WARNING C258 IN LINE 5 OF TIMER.H: 'd': mspace on parameter ignored
   6          #include "gps.h"
   7          
   8          enum
   9          {
  10            LONLAT_DMM=1,    /*LONGITUDE LATITUDE DEGREE MINUTE MINUTE/10000 format */
  11            LONLAT_DMS,      /*LONGITUDE LATITUDE DEGREE MINUTE SECOND format */
  12                  
  13          };
*** ERROR C141 IN LINE 13 OF GPS.C: syntax error near '}', expected '<id>'
  14          
  15          #define GPRMC_TIME             1
  16          #define GPRMC_AV_STATUS        2
  17          #define GPRMC_NS_STATUS        4
  18          #define GPRMC_EW_STATUS        6
  19          
  20          
  21          #define GPRMC_LONGITUDE        5
  22          #define GPRMC_LATTUDE          3
  23          #define GPRMC_SPEED            7
  24          #define GPRMC_ANGLE            8
  25          #define GPRMC_YMD              9
  26          
  27          #ifdef DEBUG_GPS
  28          code uchar * debug_gps ="$GPRMC,090058.01,A,2233.4264,N,11406.1970,E,000.0,000.0,041206,002.1,W,A*29";
  29          #endif
  30          
  31          bit             GPSReady;
  32          bit             GPSav;           //1 = A
  33          bit             GPSns;           //1 = N 
  34          bit             GPSew;           //1 = E
  35          uchar    xdata  JWDMode;
  36          UINT32   xdata  Speed;
  37          UINT32   xdata  LonDeg,LonMin1,LonMin2,LatDeg,LatMin1,LatMin2;
  38          UINT32   xdata  xYear,xMonth,xDay;
  39          UINT32   xdata  xHour,xMin,xSec;
  40          
  41          enum
  42          {
  43             JWD_DU=0,
  44             JWD_DMS,
  45             JWD_DMM,
  46          };
*** ERROR C141 IN LINE 46 OF GPS.C: syntax error near '}', expected '<id>'
  47          
  48          
  49          uchar xdata m_Buffer[100];
  50          
  51          
C51 COMPILER V7.08   GPS                                                                   04/06/2008 23:24:33 PAGE 2   

  52          
  53          extern char xdata TP_UD[];
  54          
  55          
  56          //void ParseGPRMC(uchar xdata* GprmcBuff);
  57          //void ParseNMEA0183(uchar xdata* GpsBuff);
  58          
  59          int Split(uchar* str,uchar dot)
  60          {
  61   1            int i;
  62   1            uchar dot_count;
  63   1      
  64   1            dot_count=0;
  65   1       
  66   1            for(i=0;i<250;i++)
  67   1            {
  68   2                if(str[i]==',')
  69   2                {
  70   3                   dot_count++;
  71   3                }
  72   2                if(str[i]=='\r'&&str[i+1]=='\n') break;       
  73   2                if(dot_count==dot) return i;
  74   2              
  75   2            } 
  76   1            return 0;   
  77   1           
  78   1      }
  79          
  80          
  81          
  82          
  83          void GPSModule_init(void)
  84          {
  85   1      
  86   1           GPS_EN = HIGH;
  87   1               delay_ms(20);
  88   1           GPS_RESET=HIGH;
  89   1           delay_ms(20);
  90   1           GPS_RESET=LOW;
  91   1           delay_ms(100);
  92   1           GPS_RESET=HIGH;
  93   1      
  94   1      }
  95          
  96          
  97          UINT32 GetGpsInfoDmm(UINT32 degree,UINT32 minute1,UINT32 minute2,UINT8 mode)
  98          {
  99   1      
 100   1                  if(mode==LONLAT_DMM)
 101   1                     return degree*600000+minute1*10000+minute2;
 102   1                  else
 103   1                      return degree*600000+minute1*10000+minute2*10000/60;
 104   1                  
 105   1      }
 106          
 107          extern char xdata cmd[];                       // 命令串     
 108          
 109          
 110          void ParseGPRMC(uchar* GprmcBuff)
 111          {
 112   1              int   i,j,k;
 113   1                      UINT32   xdata Longitude;
C51 COMPILER V7.08   GPS                                                                   04/06/2008 23:24:33 PAGE 3   

 114   1              UINT32   xdata Latitude;
 115   1          
 116   1                  
 117   1                      i=Split(GprmcBuff,GPRMC_TIME);   /*GPRMC_TIME =1*/
 118   1              if(i==0) return;
 119   1                 
 120   1              /*      检查时间数据,eg:204700,A,*/
 121   1              if(GprmcBuff[i+10]==',')  //16
 122   1              {
 123   2                      
 124   2                if(GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
 125   2                    GprmcBuff[i+2]<'0'||GprmcBuff[i+2]>'9'||
 126   2                    GprmcBuff[i+3]<'0'||GprmcBuff[i+3]>'9'||
 127   2                    GprmcBuff[i+4]<'0'||GprmcBuff[i+4]>'9'||
 128   2                    GprmcBuff[i+5]<'0'||GprmcBuff[i+5]>'9'||
 129   2                    GprmcBuff[i+6]<'0'||GprmcBuff[i+6]>'9'||
 130   2                    GprmcBuff[i+7]!='.'||
 131   2                    GprmcBuff[i+8]<'0'||GprmcBuff[i+8]>'9'||
 132   2                    GprmcBuff[i+9]<'0'||GprmcBuff[i+9]>'9')
 133   2                    return;
 134   2                
 135   2              
 136   2              }       
 137   1              else
 138   1              {
 139   2                  if( GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
 140   2                          GprmcBuff[i+2]<'0'||GprmcBuff[i+2]>'9'||
 141   2                          GprmcBuff[i+3]<'0'||GprmcBuff[i+3]>'9'||
 142   2                          GprmcBuff[i+4]<'0'||GprmcBuff[i+4]>'9'||
 143   2                          GprmcBuff[i+5]<'0'||GprmcBuff[i+5]>'9'||
 144   2                          GprmcBuff[i+6]<'0'||GprmcBuff[i+6]>'9'||
 145   2                          GprmcBuff[i+7]!='.'||
 146   2                          GprmcBuff[i+8]<'0'||GprmcBuff[i+8]>'9'||
 147   2                          GprmcBuff[i+9]<'0'||GprmcBuff[i+9]>'9'||
 148   2                          GprmcBuff[i+10]<'0'||GprmcBuff[i+10]>'9')
 149   2                      return; 
 150   2           
 151   2           
 152   2           
 153   2              }       
 154   1              xHour=(GprmcBuff[i+1]-'0')*10+(GprmcBuff[i+2]-'0');
 155   1                  xMin =(GprmcBuff[i+3]-'0')*10+(GprmcBuff[i+4]-'0');
 156   1                  xSec =(GprmcBuff[i+5]-'0')*10+(GprmcBuff[i+6]-'0');
 157   1      
 158   1                      i=Split(GprmcBuff,GPRMC_AV_STATUS);   
 159   1              if(i==0) return;
 160   1              if(GprmcBuff[i+1]!='A'&& GprmcBuff[i+1]!='V')return; 
 161   1              
 162   1                      GPSav = ((GprmcBuff[i+1]=='A')? 1:0); 
 163   1                      
 164   1              //if(GPSav=='V')return; 
 165   1      
 166   1        
 167   1              /*      检查经度数据,eg:11709.432,W,*/
 168   1              i=Split(GprmcBuff,GPRMC_LONGITUDE);   
 169   1              if(i==0) return;
 170   1                  if( GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
 171   1                      GprmcBuff[i+2]<'0'||GprmcBuff[i+2]>'9'||
 172   1                      GprmcBuff[i+3]<'0'||GprmcBuff[i+3]>'9'||
 173   1                      GprmcBuff[i+4]<'0'||GprmcBuff[i+4]>'9'||
 174   1                      GprmcBuff[i+5]<'0'||GprmcBuff[i+5]>'9'||
 175   1                      GprmcBuff[i+6]!='.'||
C51 COMPILER V7.08   GPS                                                                   04/06/2008 23:24:33 PAGE 4   

 176   1                      GprmcBuff[i+7]<'0'||GprmcBuff[i+7]>'9'||
 177   1                      GprmcBuff[i+8]<'0'||GprmcBuff[i+8]>'9'||
 178   1                      GprmcBuff[i+9]<'0'||GprmcBuff[i+9]>'9'||
 179   1                      GprmcBuff[i+10]<'0'||GprmcBuff[i+10]>'9')
 180   1                  return;
 181   1      
 182   1                  LonDeg=(GprmcBuff[i+1]-'0')*100+
 183   1                                         (GprmcBuff[i+2]-'0')*10+
 184   1                                         GprmcBuff[i+3]-'0';
 185   1              LonMin1=(GprmcBuff[i+4]-'0')*10+
 186   1                                   GprmcBuff[i+5]-'0';  
 187   1              LonMin2=(GprmcBuff[i+7]-'0')*1000+
 188   1                                   (GprmcBuff[i+8]-'0')*100+
 189   1                                   (GprmcBuff[i+9]-'0')*10+
 190   1                                   GprmcBuff[i+10]-'0';
 191   1      
 192   1      
 193   1            /*        检查纬度数据,eg:3403.868,N,*/
 194   1             i=Split(GprmcBuff,GPRMC_LATTUDE);   
 195   1             if(i==0) return;
 196   1             if(      GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
 197   1                      GprmcBuff[i+2]<'0'||GprmcBuff[i+2]>'9'||
 198   1                      GprmcBuff[i+3]<'0'||GprmcBuff[i+3]>'9'||
 199   1                      GprmcBuff[i+4]<'0'||GprmcBuff[i+4]>'9'||
 200   1                      GprmcBuff[i+5]!='.'||
 201   1                      GprmcBuff[i+6]<'0'||GprmcBuff[i+6]>'9'||
 202   1                      GprmcBuff[i+7]<'0'||GprmcBuff[i+7]>'9'||
 203   1                      GprmcBuff[i+8]<'0'||GprmcBuff[i+8]>'9'||
 204   1                      GprmcBuff[i+9]<'0'||GprmcBuff[i+9]>'9')
 205   1              return;         
 206   1      
 207   1              LatDeg=(GprmcBuff[i+1]-'0')*10+
 208   1                                         GprmcBuff[i+2]-'0';
 209   1              LatMin1=(GprmcBuff[i+3]-'0')*10+
 210   1                                   GprmcBuff[i+4]-'0';  
 211   1              LatMin2=(GprmcBuff[i+6]-'0')*1000+
 212   1                                   (GprmcBuff[i+7]-'0')*100+
 213   1                                   (GprmcBuff[i+8]-'0')*10+
 214   1                                   GprmcBuff[i+9]-'0';
 215   1      
 216   1              i=Split(GprmcBuff,GPRMC_YMD);   

⌨️ 快捷键说明

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