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

📄 try.lst

📁 GPS开发 NEA1803 51单片机与12864 由串口中断收取数据 显示经度纬度 高度 速度 时间 使用卫星数
💻 LST
📖 第 1 页 / 共 2 页
字号:
 107          //串口接收中断
 108          void uart(void) interrupt 4
 109          {
 110   1           unsigned char tmp;
 111   1           if(RI){
 112   2                 tmp=SBUF;
 113   2                 switch(tmp)
 114   2                         {
 115   3                       case '$':
 116   3                             cmd_number=0;            //命令类型清空
 117   3                             mode=1;                  //接收命令模式
C51 COMPILER V8.02   TRY                                                                   07/17/2008 19:14:02 PAGE 3   

 118   3                             byte_count=0;            //接收位数清空
 119   3                             break;
 120   3                       case ',':
 121   3                             seg_count++;            //逗号计数加1
 122   3                             byte_count=0;
 123   3                             break;
 124   3                       case '*':
 125   3                             mode=0;
 126   3                                                 buf_full=1;
 127   3                             break;
 128   3                       default:
 129   3                             if(mode==1){
 130   4                                   //命令种类判断
 131   4                                   cmd[byte_count]=tmp;                  //接收字符放入类型缓存
 132   4                                   if(byte_count>=4){                        //如果类型数据接收完毕,判断类型
 133   5                                         if(cmd[0]=='G'){
 134   6                                               if(cmd[1]=='P'){
 135   7                                                     if(cmd[2]=='R'){
 136   8                                                         if(cmd[3]=='M'){
 137   9                                                                if(cmd[4]=='C'){
 138  10                                                                       cmd_number=1;
 139  10                                                                       mode=2;
 140  10                                                                       seg_count=0;
 141  10                                                                       byte_count=0;
 142  10                                                                                               }
 143   9                                                                         }
 144   8        
 145   8                                                 
 146   8                                                                   }
 147   7                                                             }
 148   6                                                       }
 149   5                                                   }
 150   4                                         }
 151   3                                else if((mode==2)&cmd_number){
 152   4                                    //接收数据处理 GPGGA,132920.487,,n,,w,0,00,,,M,0.0,M,,0000*56
 153   4                                       //$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598, ,*10
 154   4                                                              //$GPGGA,161229.487,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M, , , ,0000*18
 155   4                                               switch(seg_count){
 156   5                                                                                                 case 1:
 157   5                                                           if(byte_count<6){                        //时间处理
 158   6                                                                 time[byte_count]=tmp;      
 159   6                                                           }
 160   5                                                           break;
 161   5                                                     case 3:                                                //纬
             -度处理
 162   5                                                           if(byte_count<9){
 163   6                                                                 WD[byte_count]=tmp;
 164   6                                                           }
 165   5                                                           break;
 166   5                                                     case 4:                                                //纬
             -度方向处理
 167   5                                                           if(byte_count<1){
 168   6                                                                 WD_a=tmp;
 169   6                                                           }
 170   5                                                           break;
 171   5                                                     case 5:                                                //经
             -度处理
 172   5                                                           if(byte_count<10){
 173   6                                                                 JD[byte_count]=tmp;
 174   6                                                           }
 175   5                                                           break;
 176   5                                                     case 6:                                                //经
C51 COMPILER V8.02   TRY                                                                   07/17/2008 19:14:02 PAGE 4   

             -度方向处理
 177   5                                                           if(byte_count<1){
 178   6                                                                 JD_a=tmp;
 179   6                                                           }
 180   5                                                           break;
 181   5                                                                                                      case 7:                                                //speed
 182   5                                                           if(byte_count<4){
 183   6                                                                 speed[byte_count]=tmp;
 184   6                                                           }
 185   5                                                           break;
 186   5                                                                                              //      case 9:                                                //date
 187   5                                                  //         if(byte_count<6){
 188   5                                                   //              date[byte_count]=tmp;
 189   5                                                   //        }
 190   5                                                   //       break;
 191   5                                                                     }
 192   4                                            
 193   4                                                                                              }
 194   3                             
 195   3                             byte_count++;            //接收数位加1
 196   3                             break;
 197   3                                              }
 198   2                 }
 199   1           RI=0;
 200   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    858    ----
   CONSTANT SIZE    =     55    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     52       7
   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 + -