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

📄 remoter.lst

📁 Gps数据的获得及处理
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.01  REMOTER                                                                05/18/2006 11:54:09 PAGE 1   


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

stmt level    source

   1          #if 0
              
              // Data frame format MaxLen=255
              // Token + type + frameLen + Data + CheckSum
              //frameLen is sum of Token,type,frameLen+data+CheckSum
              // Token = 0x24
              #include<common.h>
              //extern uChar CompareData(void);
              //extern uChar GetCurLongitudeLatitude(uChar *p);
              extern uChar Handle776InfoData(uChar *p);
              extern uChar CompareData(void);
              extern void ViewGpsDat();
              extern uChar GetCurLongitudeLatitude(uChar *p);
              
              volatile uChar gIrKeyValue=0;
              volatile uChar gNecState = Nec_Null;
              volatile uInt2 gIrTick;//per tick 200us
              
              void Init(void);
              void delay(uchar);
              void SendCharsToSerial(uchar *p,uchar);
              void PrintNum(uChar i);
              
              volatile uInt2 gSystemTick=0;
              volatile uChar g500usCnt = 0;
              volatile uChar g100msCnt = 0;
              volatile uChar xdata pReceiveBuffer[150] ;
              volatile uChar gGetInfoDataSuccessFlag=0;
              
              //max 100 station.
              uChar gTotalStation=0;
              uChar gReceiveTotalStation=0;
              
              GpsInfo xdata pGpsInfo[50];
              uInt4 gCurLongitude = 0;
              uInt4 gCurLatitude = 0;
              
              volatile uChar gReceiveTimeout = 8;
              volatile uChar gSerialReceiveFlag=0;
              volatile uInt2 gSendTimeout = 0; 
              volatile uInt2 gSendArray=0;
              volatile uChar gSendBit=0;
              volatile uInt2 gSendLen = 0;
              
              
              
              volatile uChar g776SendFlag=0;
              //volatile uChar idata p776SendArray[20];
              volatile uChar g776SendBytePos=0;
              volatile uChar g776SendBitPos=0;
              volatile uChar g776SendFinishFlag = 0;
              volatile uChar g776SendTimeout = 0;
              
              const uChar code pByteMap[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
              void Delay_100ms(uChar param)
C51 COMPILER V7.01  REMOTER                                                                05/18/2006 11:54:09 PAGE 2   

              {
                      g100msCnt=param;
                      while(1)
                      {
                              if((g500usCnt==0)&&(g100msCnt==0))
                                      break;
                      }
              }
              void init_reg(void)
              {
                      CHPENT=0x87;
                      CHPENT=0x59;
                      CHPCON|=0x10;
                      CHPENT=0;
              }
              
              void Init(void)
              {
                      TMOD=0x21;
                      TH0=0xfa;
                      TL0=0x00;
                      ET0=1;
                      EX0=0;
                      EX1=1;
              //      TH1=0xfa;//0xf4 is 4800 for 22.1184 ,0xfa is 9600 for 22.1184 
              //      TL1=0xfa;//0xfd for 19200
                      TH1=0xf4;
                      TL1=0xf4;
                      ET1=0;
              //      PCON=0x80;      //bandrate=19200 for 11.0592 
                      PCON=0x00;              //bandrate=19200 for 22.1184
                      SCON=0x50;
                      RI=TI=0;
                      ES=1;
                      TR1=1;
                      TR0=1;
                      EA=1;
                      IT0=1;
                      IT1=1;
                      P1=0xff;
                      IP=0x05;
                      OpenInt0AndCloseSerial();
                      init_reg();
              }
              
              
              
              void SendCharsToSerial(uchar *p,uchar count)
              {
                      uchar i;
                      EA=0;
                      for(i=0 ; i<count; i++)
                      {
                              SBUF = p[i];
                              while(!TI);
                              TI=RI=0;
                      }
                      EA=1;
              }
              
              void PrintNum(uChar i)
              {
C51 COMPILER V7.01  REMOTER                                                                05/18/2006 11:54:09 PAGE 3   

                      #define SBUF_SERIAL SBUF=tTemp + 0x30; \
                                                              while(!TI); \
                                                              TI=RI=0
              
                      uChar tTemp = i/100;
                      EA=0;
                      SBUF_SERIAL;
                      tTemp = (i%100)/10;
                      SBUF_SERIAL;
                      tTemp = i%10;
                      SBUF_SERIAL;
                      EA=1;
              }
              
              void Timer0()interrupt 1        //for all sort of timeout and system'tick 
              {
              
                      TR0 = 0 ;
              //      TH0=0xfb;
              //      TL0=0xf5; //560us for 22.1184M
                      TH0=0xfe;
                      TL0=0x8f; //200us for 22.1184M
                      TR0 = 1 ;
                      
                      if(gReceiveTimeout)
                              gReceiveTimeout--;
                      if(gSendTimeout)
                              gSendTimeout--;
                      if(g776SendTimeout)
                              g776SendTimeout--;
                      if(g500usCnt)
                              g500usCnt--;
                      if((g100msCnt)&&(g500usCnt==0))
                      {
                              g500usCnt = 200;
                              g100msCnt--;
                      }
              
                      gSystemTick++;
                      GUEST ^=0x01; 
              
              }
              
              void Int1() interrupt 2         //for remoter
              {
                      #define dIr_Margin              2
              
                      static uChar sTempCnt = 0;
                      static uChar sIrBuffer[4];
                              
                      switch(gNecState)
                      {
                              case    Nec_Null:
                                      gIrTick=gSystemTick;
                                      gNecState = Nec_Head;
                                      sTempCnt=0;
                                      break;  
                              case    Nec_Head:
                              {
                                      if((gSystemTick>=(gIrTick+67-dIr_Margin)) && (gSystemTick<=(gIrTick+67+dIr_Margin)))
                                      {
                                              gIrTick=gSystemTick;
C51 COMPILER V7.01  REMOTER                                                                05/18/2006 11:54:09 PAGE 4   

                                              gNecState = Nec_FacDat;
                                      }
                                      else
                                      {
                                              gNecState = Nec_Null;
                                      }
                                      break;
                              }
                              case    Nec_FacDat:
                                      if((gSystemTick>=(gIrTick+6-dIr_Margin)) && (gSystemTick<=(gIrTick+6+dIr_Margin)))//0
                                              sIrBuffer[sTempCnt/8] &= ~pByteMap[sTempCnt%8];
                                      else if((gSystemTick>=(gIrTick+11-dIr_Margin)) && (gSystemTick<=(gIrTick+11+dIr_Margin)))//1
                                              sIrBuffer[sTempCnt/8] |= pByteMap[sTempCnt%8];
                                      else
                                              gNecState = Nec_Null;
                              
                                      sTempCnt++;
                                      gIrTick = gSystemTick ;
                                      if(sTempCnt==32)
                                      {
                                              gNecState = Nec_Null;
                                              if((sIrBuffer[0]==~sIrBuffer[1])&&(sIrBuffer[2]==~sIrBuffer[3]))
                                                      gIrKeyValue = sIrBuffer[2];
                                      }
                                      break;
              
                              default:
                                      gNecState = Nec_Null;
                                      break;
                      }
              }
              
              void Int0() interrupt 0         //for bi_communication
              {
              
                      //for receive data from 776
                      if(g776SendFlag==1)     
                      {
                              DAT = 1;
                              if(DAT==1)
                              //      p776SendArray[g776SendBytePos] |= pByteMap[g776SendBitPos];
                                      pReceiveBuffer[g776SendBytePos] |= pByteMap[g776SendBitPos];
                              else
                              //      p776SendArray[g776SendBytePos] &= ~pByteMap[g776SendBitPos];
                                      pReceiveBuffer[g776SendBytePos] &= ~pByteMap[g776SendBitPos];
                              g776SendTimeout = 200;
                              g776SendBitPos++;
                              if(g776SendBitPos==8)
                              {
                                      g776SendBitPos=0;
                              //      if(++g776SendBytePos==(p776SendArray[2]))
                                      if(++g776SendBytePos==(pReceiveBuffer[2]))
                                      if(g776SendBytePos>4)
                                      {
                                              g776SendBytePos=0;
                                              g776SendFlag = 0;
                                              DAT = 1;
                                              g776SendFinishFlag = 1;
                                      }
                              }
                              return;
                      }
C51 COMPILER V7.01  REMOTER                                                                05/18/2006 11:54:09 PAGE 5   

                      
                      //send data to 776
                      if((gSendArray==0)&&(gSendBit==0))
                              return;
              
                      if(pReceiveBuffer[gSendLen-gSendArray]&pByteMap[8-gSendBit])
                              DAT =1;
                      else
                              DAT =0;
                      gSendTimeout = 200;
              
                      if(gSendBit)
                              gSendBit-=1;            
                      if((gSendBit==0)&&(gSendArray))
                      {
                              gSendArray--;
                              if(gSendArray)
                                      gSendBit=8;
                              else
                                      DAT = 1;//finished send
                      }
              }
              
              void delay(uChar a)//delay(1) for 500us 
              {
                      uChar i,k;
                      for(k=0 ;k<a; k++)
                              for(i=0 ;i<200; i++)
                                              _nop_();
              }
              
              
              void Serial_int(void) interrupt 4 
              {       //$GPRMC,212110.64,V,3339.1116,N,11742.9893,W
                      //pReceive[]=",212110.64,V,3339.1116,N,11742.9893,W";
                      code uChar pGPRMC[]={0x24, 0x47, 0x50, 0x52 ,0x4d ,0x43};//"$GPRMC";
                      static uChar sReceiveState=0;
                      uChar   c;
                      if(_testbit_(RI))
                      {
                              RI=0;
                              TI=0;
                              c=SBUF; 
              
                              if(sReceiveState<6)
                              {
                                      if(pGPRMC[sReceiveState] != c)
                                      {
                                              sReceiveState = 0;
                                              return;
                                      }

⌨️ 快捷键说明

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