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

📄 main.lst

📁 一个用来实现单片机USB接口的程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 288          serial_tax( unsigned char  *Taxdress)
 289             { 
 290   1           unsigned char  i;
 291   1           unsigned char  m=0;
 292   1           unsigned char  Taxlen;
 293   1           unsigned char check_sum=0;
 294   1           EA=0;
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 6   

 295   1           Taxlen=*(Taxdress+2);
 296   1          for(i=1;i<Taxlen+3;i++)
 297   1           check_sum+=*(Taxdress+i);
 298   1            *(Taxdress+i)=check_sum;
 299   1          for(i=0;i<Taxlen+4;i++)
 300   1         
 301   1           { SBUF=*(Taxdress++);
 302   2             while(!TI&&(m++<3000))
 303   2              Watch_Dog=~Watch_Dog;
 304   2              TI=0;
 305   2              if(m>=3000)
 306   2              goto tax_exit;
 307   2             
 308   2           }
 309   1        tax_exit:
 310   1           
 311   1           EA=1;
 312   1         } 
 313          void serial_int( )  interrupt 4   
 314          {
 315   1         unsigned int i,j,n=0;
 316   1         unsigned int m=0;
 317   1         unsigned char check_sum=0;
 318   1          EA=0;
 319   1         SERI_BUFF[0]=SBUF;
 320   1         RI=0;TI=0;
 321   1         if(SERI_BUFF[0]==0xff)
 322   1         {
 323   2           for(i=1;i<3;i++)
 324   2           {  
 325   3             while(!RI)
 326   3              Watch_Dog=~Watch_Dog; 
 327   3              SERI_BUFF[i]=SBUF; 
 328   3              RI=0;
 329   3            }
 330   2           for(i=3;i<SERI_BUFF[2]+4;i++) 
 331   2           {  while(!RI)
 332   3               Watch_Dog=~Watch_Dog;
 333   3               SERI_BUFF[i]=SBUF;
 334   3               RI=0;
 335   3            }
 336   2           for(i=1;i<SERI_BUFF[2]+3;i++)
 337   2               check_sum=SERI_BUFF[i]+check_sum;
 338   2          if(check_sum==SERI_BUFF[SERI_BUFF[2]+3])
 339   2          {
 340   3           
 341   3           if(SERI_BUFF[1]==0x1e)
 342   3            {
 343   4              tax_ccode();
 344   4              if((GPS_DATA.state&0xf0)==0xa0)
 345   4              caibiao(); 
 346   4              FMQ_CNTcai=5;
 347   4              BUZZEN=1;// feng ming qi 
 348   4            }
 349   3           if(SERI_BUFF[1]==0xf1)
 350   3            {
 351   4              tax_ccode();
 352   4              j=(SERI_BUFF[3]&0xf0)>>4;
 353   4              j=j*1000+(SERI_BUFF[3]&0x0f)*100;
 354   4              
 355   4                  if(NOW_BCODE>0)
 356   4                  {
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 7   

 357   5                    NOW_BCODE--;
 358   5                    STORE_DATAb[NOW_BCODE-1].longitude=STORE_DATAb[NOW_BCODE].longitude;
 359   5                    STORE_DATAb[NOW_BCODE-1].latitude=STORE_DATAb[NOW_BCODE].latitude;
 360   5                    STORE_DATAb[NOW_BCODE-1].mileage=j;
 361   5                    STORE_DATAb[NOW_BCODE-1].gap=0xffff;
 362   5                    STORE_DATAb[NOW_BCODE].longitude=0;
 363   5                    STORE_DATAb[NOW_BCODE].latitude=0;
 364   5                    STORE_DATAb[NOW_BCODE].mileage=0;
 365   5                    STORE_DATAb[NOW_BCODE].gap=0;
 366   5                    mileageH=j;
 367   5                    SEND_LCD=1;
 368   5                  }
 369   4                  else
 370   4                   {
 371   5                     STORE_DATAb[100].longitude=STORE_DATAb[NOW_BCODE].longitude;
 372   5                     STORE_DATAb[100].latitude=STORE_DATAb[NOW_BCODE].latitude;
 373   5                     STORE_DATAb[100].mileage=j;
 374   5                     STORE_DATAb[100].gap=0xffff;
 375   5                     BGROUP=BGROUP-2;
 376   5                     XIU_LASTBLOCK=1;
 377   5                     NOW_BCODE=100;
 378   5                     BAKE_CODE=0;
 379   5                   }
 380   4            }
 381   3           if(SERI_BUFF[1]==0xee)
 382   3            {
 383   4              tax_ccode();
 384   4              i=j=0;
 385   4              j=(SERI_BUFF[3]&0xf0)>>4;
 386   4              mileageH=j*1000+(SERI_BUFF[3]&0x0f)*100;
 387   4              j=(SERI_BUFF[4]&0xf0)>>4;
 388   4              mileageH=mileageH+j*10+(SERI_BUFF[4]&0x0f);
 389   4              j=(SERI_BUFF[5]&0xf0)>>4;
 390   4              i=j*1000+(SERI_BUFF[5]&0x0f)*100;
 391   4              j=(SERI_BUFF[6]&0xf0)>>4;
 392   4              i=i+j*10+(SERI_BUFF[6]&0x0f);
 393   4              HANDRED=mileageL/1000;
 394   4              XIANTEMP=SERI_BUFF[7]*256+SERI_BUFF[8];
 395   4              if(XIANTEMP!=XIANHAO)
 396   4              {
 397   5                XIANCHANGE=1;
 398   5                XIANHAO=XIANTEMP;
 399   5                XIAN_SPOT=FILE_START+(BGROUP-1)*1600+(NOW_BCODE-1)*16;
 400   5              }
 401   4              STORE_DATAb[NOW_BCODE-1].mileage=mileageH;
 402   4              STORE_DATAb[NOW_BCODE-1].gap=0x7fff+i;
 403   4              mileageL=mileageL+i*10;
 404   4              SEND_LCD=1;  
 405   4            }
 406   3           if(SERI_BUFF[1]==0xed)
 407   3            {
 408   4              tax_ccode();
 409   4              j=(SERI_BUFF[3]&0xf0)>>4;
 410   4              m=j*1000+(SERI_BUFF[3]&0x0f)*100;
 411   4              j=(SERI_BUFF[4]&0xf0)>>4;
 412   4              m=m+j*10+(SERI_BUFF[4]&0x0f);
 413   4              j=(SERI_BUFF[5]&0xf0)>>4;
 414   4              mileageL=j*1000+(SERI_BUFF[5]&0x0f)*100;
 415   4              j=(SERI_BUFF[6]&0xf0)>>4;
 416   4              mileageL=mileageL+j*10+(SERI_BUFF[6]&0x0f);
 417   4              mileageL=mileageL*10;
 418   4              HANDRED=mileageL/1000;
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 8   

 419   4              XIANTEMP=SERI_BUFF[7]*256+SERI_BUFF[8];
 420   4              if(DIRECTOR)
 421   4              {
 422   5                if(m>mileageH)
 423   5                {
 424   6                   n=m-mileageH+NOW_BCODE-1;
 425   6                   if(n>99)
 426   6                    {  BAKE_CODE=n-100;n=100;}
 427   6                }
 428   5                else
 429   5                {
 430   6                   n=NOW_BCODE-(mileageH-m)-1;
 431   6                   if(NOW_BCODE<mileageH-m+1)
 432   6                   {n=(mileageH-m)-NOW_BCODE+1;
 433   7                    BAKE_CODE=100-n;BGROUP=BGROUP-2; n=100;
 434   7                    XIU_LASTBLOCK=1;}
 435   6                }
 436   5                NOW_BCODE=n+1;
 437   5                SEND_LCD=1;
 438   5                mileageH=m;
 439   5                if(n==100)         
 440   5                    NOW_BCODE=100;
 441   5                else
 442   5                CHECK_BCODE=Get_next_biao(NOW_BCODE);
 443   5              } 
 444   4             else
 445   4             {
 446   5               if(m>mileageH)
 447   5               {
 448   6                  n=(NOW_BCODE-1)-(m-mileageH);
 449   6                  if(NOW_BCODE<m-mileageH+1)
 450   6                   { n=m-mileageH+1-NOW_BCODE;
 451   7                     BAKE_CODE=100-n;BGROUP=BGROUP-2;n=100;
 452   7                     XIU_LASTBLOCK=1;
 453   7                     }
 454   6                  
 455   6               }
 456   5               else
 457   5               {
 458   6                  n=mileageH-m+NOW_BCODE-1; 
 459   6                  if(n>99)
 460   6                    { BAKE_CODE=n-100; n=100;}
 461   6               } 
 462   5               NOW_BCODE=n+1;
 463   5               SEND_LCD=1;
 464   5               mileageH=m;
 465   5               if(n==100)
 466   5                    NOW_BCODE=100; 
 467   5               else
 468   5               CHECK_BCODE=Get_next_biao(NOW_BCODE);
 469   5              }      
 470   4            } 
 471   3           if(SERI_BUFF[1]==0xef)
 472   3           {
 473   4            if(DIRECTOR)
 474   4               mileageH--;
 475   4            else
 476   4               mileageH++;
 477   4            STORE_DATAb[NOW_BCODE-1].mileage=mileageH;
 478   4            RPCOUNT++;
 479   4            STORE_DATAb[NOW_BCODE-1].gap=0xfff0+RPCOUNT;
 480   4            SEND_LCD=1; 
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 9   

 481   4            tax_ccode();
 482   4           } 
 483   3           if(SERI_BUFF[1]==0xcc)
 484   3            {
 485   4               tax_ccode();
 486   4              CREATE_FILE=1;
 487   4              j=(SERI_BUFF[3]&0xf0)>>4;
 488   4              mileageH=j*1000+(SERI_BUFF[3]&0x0f)*100;
 489   4              j=(SERI_BUFF[4]&0xf0)>>4;
 490   4              mileageH=mileageH+j*10+(SERI_BUFF[4]&0x0f);
 491   4              j=(SERI_BUFF[5]&0xf0)>>4;
 492   4              mileageL=j*1000+(SERI_BUFF[5]&0x0f)*100;
 493   4              j=(SERI_BUFF[6]&0xf0)>>4;
 494   4              mileageL=mileageL+j*10+(SERI_BUFF[6]&0x0f);
 495   4              mileageL=mileageL*10;
 496   4              HANDRED=mileageL/1000;
 497   4              FileNumber=SERI_BUFF[7];
 498   4              XIANHAO=SERI_BUFF[8]*256+SERI_BUFF[9];
 499   4              DIRECTOR=(SERI_BUFF[10]&0x0f);
 500   4              TIAN_START=mileageH;
 501   4              CONFIG=1;
 502   4             LCD_DATA.soutineH=mileageH;
 503   4             LCD_DATA.soutineL=mileageL/10;
 504   4             SEND_LCD=1;
 505   4            } 
 506   3          if(SERI_BUFF[1]==0xdd)
 507   3            {
 508   4              tax_ccode();
 509   4              OPEN_FILE=1;
 510   4              j=(SERI_BUFF[3]&0xf0)>>4;
 511   4              mileageH=j*1000+(SERI_BUFF[3]&0x0f)*100;
 512   4              j=(SERI_BUFF[4]&0xf0)>>4;
 513   4              mileageH=mileageH+j*10+(SERI_BUFF[4]&0x0f);
 514   4              j=(SERI_BUFF[5]&0xf0)>>4;
 515   4              mileageL=j*1000+(SERI_BUFF[5]&0x0f)*100;
 516   4              j=(SERI_BUFF[6]&0xf0)>>4;
 517   4              mileageL=mileageL+j*10+(SERI_BUFF[6]&0x0f);
 518   4              mileageL=mileageL*10;
 519   4              HANDRED=mileageL/1000;
 520   4              FileNumber=SERI_BUFF[7];
 521   4              XIANHAO=SERI_BUFF[8]*256+SERI_BUFF[9];
 522   4              DIRECTOR=SERI_BUFF[10]&0x0f;
 523   4              TIAN_START=mileageH;
 524   4              CONFIG=1;
 525   4              LCD_DATA.soutineH=mileageH;
 526   4             LCD_DATA.soutineL=mileageL/10;
 527   4             SEND_LCD=1;
 528   4            }   
 529   3            if(SERI_BUFF[1]==0x08)
 530   3            {
 531   4             STORE_DATA=1;
 532   4             YX3_DATA=1;
 533   4             YX2_DATA=1;
 534   4            
 535   4            }
 536   3             if(SERI_BUFF[1]==0xaa)
 537   3            {
 538   4              GET_MXI=1;
 539   4              CHEXING=SERI_BUFF[3];
 540   4              CHE_XING=1;
 541   4              tax_ccode();
 542   4            }
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 10  

 543   3            if(SERI_BUFF[1]==0x3c)
 544   3            {
 545   4              
 546   4             if(SERI_BUFF[3]==0xa5)
 547   4                rank2_ENABLE=0;
 548   4             if(SERI_BUFF[3]==0x5a)
 549   4                rank2_ENABLE=1; 
 550   4              tax_ccode();
 551   4            }
 552   3          if(SERI_BUFF[1]==0x2d)
 553   3            {
 554   4              if((OPEN_FILE||CREATE_FILE)&&CHE_XING)
 555   4              {  
 556   5                START_RUN=1;
 557   5                STARTOK[0]=0xff;
 558   5                STARTOK[1]=0x01;
 559   5                STARTOK[2]=0x01;
 560   5                STARTOK[3]=0x00;
 561   5                STARTOK[4]=0x02;
 562   5                tax_ok();
 563   5              }
 564   4              else
 565   4              {
 566   5                STARTOK[0]=0xff;
 567   5                STARTOK[1]=0x02;
 568   5                STARTOK[2]=0x01;
 569   5                STARTOK[3]=0x00;
 570   5                STARTOK[4]=0x03;
 571   5                tax_ok();
 572   5              }
 573   4            }
 574   3        }        
 575   2       }
 576   1       EA=1; 
 577   1      }       
 578          //-------------------------------------------------------------
 579          // 向控制USB的单片机写数据
 580          // 函数名 Write_To_MCU( )
 581          // 功能:写一个数据的同时,将P1。6置低,P1。4产生一个下降沿
 582          //       触发从单片机的外部中断1,从单片机读取数据的同时将P1。6
 583          //       置高,只有在P1。6为高时,主单片机才能写下一个数据。	 
 584          //-------------------------------------------------------------  
 585          void Write_To_MCUU( )  
 586           {
 587   1        unsigned int i; 
 588   1        unsigned char *SP;
 589   1        unsigned int m=0;
 590   1        SETint1=1;

⌨️ 快捷键说明

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