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

📄 code.lst

📁 此程序实现无线信标定位
💻 LST
字号:
C51 COMPILER V7.06   CODE                                                                  01/11/2008 16:53:39 PAGE 1   


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

stmt level    source

   1          #include<AT89X51.H>
   2          
   3          void    port_init(void);
   4          
   5          
   6          
   7          void main(void)
   8          {
   9   1              unsigned char dflag,send_code;
  10   1              unsigned int mod;
  11   1              unsigned char i = 0,j = 0,data_buf;
  12   1              unsigned char data latitude[11];//="(244)6.5211N";
  13   1              unsigned char data longitude[12];//="(1210)0.1536E";    
  14   1              port_init(); 
  15   1              while(1)
  16   1              {       
  17   2                      while(!RI)
  18   2                      {}
  19   2                      data_buf = SBUF;
  20   2                      if(data_buf == 'M')
  21   2                      break;
  22   2                      RI = 0;
  23   2              }       
  24   1              TR1 = 0;
  25   1              RI = 0; 
  26   1              
  27   1      /*接收数据  $GPRMC,062321,V,2446.5211,N,12100.1536,E,000.0,000.0,030222,,*0C */
  28   1              
  29   1              do
  30   1              {
  31   2                      while(!RI)
  32   2                      {}
  33   2                      data_buf = SBUF;
  34   2                      if(data_buf == ',') dflag++;
  35   2                      if(dflag == 3 && data_buf != ',')       
  36   2                              {
  37   3                                      latitude[i] = data_buf;
  38   3                                      i++;
  39   3                              }
  40   2      
  41   2                      if(dflag == 4 && data_buf != ',') 
  42   2                              {
  43   3                                      latitude[i] = data_buf;
  44   3                                      latitude[i+1] = '\0';           //以字符串的方式结束
  45   3                              }
  46   2      
  47   2                      if(dflag == 5 && data_buf != ',')
  48   2                              {       
  49   3                                      longitude[j] = data_buf;
  50   3                                      j++;
  51   3                              }
  52   2      
  53   2                      if(dflag == 6 && data_buf != ',') 
  54   2                              {
  55   3                                      longitude[j] = data_buf;
C51 COMPILER V7.06   CODE                                                                  01/11/2008 16:53:39 PAGE 2   

  56   3                                      longitude[j+1] = '\0';          //以字符串的方式结束
  57   3                              }
  58   2                      RI = 0;
  59   2              }while(data_buf != 'E');                        // latitude[11]: (244)6.5211N   longitude[12]:  (1210)0.1536E
  60   1              RI = 0; 
  61   1              REN = 0;                //      forbid recieve
  62   1              
  63   1              TR1 = 1;                        //握手信号
  64   1              for(i = 0;i < 3;i ++)
  65   1              {
  66   2                      SBUF = 0xFF;
  67   2                      while(!TI)
  68   2                      {}
  69   2                      TI = 0;
  70   2                      for(j = 0;j < 100;j ++)
  71   2                      {}
  72   2              }
  73   1              TR1 = 0;
  74   1      
  75   1              for(i = 0;i < 14;i ++)
  76   1              {       
  77   2                      if(i < 7)
  78   2                      send_code = latitude[i + 3];
  79   2                      else
  80   2                      send_code = longitude[i - 3];
  81   2                      switch(send_code)
  82   2                      {       
  83   3                              case '0':       mod = 0x00;break;       //      0b00000000      last bit odd check
  84   3                              case '1':       mod = 0x17;break;       //      0b00010111
  85   3                              case '2':       mod = 0x2B;break;       //      0b00101011
  86   3                              case '3':       mod = 0x3C;break;       //      0b00111100
  87   3                              case '4':       mod = 0x4D;break;       //      0b01001101
  88   3                              case '5':       mod = 0x5A;break;       //      0b01011010
  89   3                              case '6':       mod = 0x66;break;       //      0b01100110
  90   3                              case '7':       mod = 0x71;break;       //      0b01110001
  91   3                              case '8':       mod = 0x8E;break;       //      0b10001110
  92   3                              case '9':       mod = 0x99;break;       //      0b10011001
  93   3                              case '.':       mod = 0xA5;break;       //      0b10100101
  94   3                              case 'N':       mod = 0xB2;break;       //      0b10110010
  95   3                              case 'E':       mod = 0xC3;break;       //      0b11000011
  96   3                              case 'W':       mod = 0xD4;break;       //      0b11010100
  97   3                              case 'S':       mod = 0xE8;break;       //      0b11101000
  98   3                              default:        break;                          //      wrong coded , noted
  99   3                      }
 100   2              TR1 = 1;
 101   2              SBUF = mod;
 102   2              while(!TI)
 103   2              {}
 104   2              TI = 0;
 105   2              }
 106   1              TR1 = 0;
 107   1      }
 108          
 109          void port_init(void)
 110          {
 111   1              TMOD=0x20;
 112   1              PCON=0;         //SMOD=0
 113   1              SCON=0x50;      //  MODE 1              
 114   1              TH1=0xCC;       //600baud 12MHz oscillator frequence,SMOD=0
 115   1              TL1=0xCC;
 116   1              TR1=1;          //Start timer 1
 117   1      }
C51 COMPILER V7.06   CODE                                                                  01/11/2008 16:53:39 PAGE 3   

 118          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    409    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      30
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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