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

📄 main.lst

📁 一个用来实现单片机USB接口的程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 591   1        if(TAX_HEAD[1]==0x11)
 592   1           SP=(unsigned char *)&MAX_VALUE;
 593   1        if(TAX_HEAD[1]==0x22)
 594   1           SP=(unsigned char *)&PRINT_DATA;// 赋3级越限数据缓冲首址//
 595   1        for(i=0;i<TAX_HEAD[2]*TAX_HEAD[3];i++)// not include check_sum
 596   1        {
 597   2          SETint1=1;
 598   2          _nop_();
 599   2          _nop_();         
 600   2          WUDK_ADDR=*SP++;
 601   2          SETint1=0;
 602   2           _nop_();
 603   2           _nop_();   
 604   2          while((SETdata==0)&&(m++<5000))
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 11  

 605   2          Watch_Dog=~Watch_Dog;
 606   2          if(m>=5000)
 607   2          {
 608   3           MCU_LED2=0;  
 609   3             break;
 610   3          }
 611   2        }
 612   1      }                 
 613           void TAX_To_MCUU( )
 614           {
 615   1        unsigned int i;
 616   1        unsigned int m=0;
 617   1        unsigned char  check_sum=0;
 618   1        unsigned char *SP;
 619   1        if(TAX_HEAD[1]==0x11)
 620   1           SP=(unsigned char *)&MAX_VALUE;
 621   1        if(TAX_HEAD[1]==0x22)
 622   1           SP=(unsigned char *)&PRINT_DATA;// 赋3级越限数据缓冲首址//
 623   1        for(i=1;i<4;i++)
 624   1        check_sum+=TAX_HEAD[i];
 625   1        for(i=0;i<TAX_HEAD[2]*TAX_HEAD[3];i++)
 626   1        check_sum+=*SP++;
 627   1        TAX_HEAD[4]=check_sum; 
 628   1        EA=0;
 629   1         for(i=0;i<4;i++)
 630   1        {
 631   2          Watch_Dog=~Watch_Dog; 
 632   2          SETint1=1;
 633   2           _nop_();
 634   2           _nop_(); 
 635   2           _nop_();
 636   2           _nop_();        
 637   2          WUDK_ADDR=TAX_HEAD[i];    
 638   2          SETint1=0;
 639   2           _nop_();
 640   2           _nop_(); 
 641   2           _nop_();
 642   2           _nop_();             
 643   2          while((SETdata==0)&&(m++<2000))
 644   2          Watch_Dog=~Watch_Dog;
 645   2          if(m>=2000)
 646   2          {
 647   3           MCU_LED2=0;
 648   3          goto int1_exit;
 649   3          }
 650   2        }
 651   1      //---------------------------------buck data;    
 652   1        Write_To_MCUU();
 653   1      //---------------------------------send check_sum 
 654   1          SETint1=1;
 655   1          _nop_();
 656   1          _nop_(); 
 657   1          WUDK_ADDR=TAX_HEAD[4]; 
 658   1          SETint1=0;
 659   1          _nop_();
 660   1          _nop_(); 
 661   1         while((SETdata==0)&&(m++<600))
 662   1         Watch_Dog=~Watch_Dog; 
 663   1        
 664   1          PRINT_MCU=1;
 665   1      //--------------------------------- 
 666   1      int1_exit:
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 12  

 667   1        EA=1;
 668   1      } 
 669          void Init_COMM( )
 670             {
 671   1      	SCON = 0x52;
 672   1      	PCON = 0x80;
 673   1      	TMOD |= 0x20;
 674   1      	TCON |= 0x40;    /* TCON */
 675   1      	TH1 = 0xFC;		// 9600bps @ 11.0592MHz
 676   1      	
 677   1      	TI=0;
 678   1      	RI=0;
 679   1      	PS=1;
 680   1      	ES = 1;
 681   1      	
 682   1          } 
 683          void temp()
 684          {
 685   1       unsigned int  i;
 686   1       //GPS_DATA.dtmiles=20;
 687   1       //----------1/16s licheng  jifen
 688   1       mileageL=mileageL+GPS_DATA.dtmiles/10;
 689   1       //----------1/16s jingweidu jifen
 690   1      if(ALTERNATE)
 691   1       {  
 692   2       now_longitude=GPS_DATA.longitude;
 693   2        now_latitude=GPS_DATA.latitude;
 694   2        ALTERNATE=0;
 695   2        if(CHECK_BCODE!=0xff)
 696   2        {
 697   3         if(!COUNTd_STARTUP)
 698   3         {
 699   4          if(BIG_LON)
 700   4          {
 701   5            if(abs(now_longitude-longitude_LOCATED)/GPS_DATA.dtlon<=16)
 702   5            {
 703   6              MCOUNTd=abs(now_longitude-longitude_LOCATED)/GPS_DATA.dtlon; 
 704   6              COUNTd_STARTUP=1;
 705   6            }
 706   5          }
 707   4          else
 708   4          {
 709   5            if(abs(now_latitude-latitude_LOCATED)/GPS_DATA.dtlat<=16)
 710   5            {
 711   6               MCOUNTd=abs(now_latitude-latitude_LOCATED)/GPS_DATA.dtlat; 
 712   6              COUNTd_STARTUP=1;
 713   6            }
 714   5          }
 715   4         }
 716   3        }
 717   2       }
 718   1       else
 719   1       {
 720   2         i=GPS_DATA.state&0x0f;
 721   2         switch(i)
 722   2         {
 723   3         case 1: {now_longitude=now_longitude+GPS_DATA.dtlon;now_latitude=now_latitude+GPS_DATA.dtlat;break;}
 724   3         case 2: {now_longitude=now_longitude+GPS_DATA.dtlon;now_latitude=now_latitude+GPS_DATA.dtlat;break;}
 725   3         case 3: {now_longitude=now_longitude+GPS_DATA.dtlon;now_latitude=now_latitude-GPS_DATA.dtlat;break;}
 726   3         case 4: {now_longitude=now_longitude+GPS_DATA.dtlon;now_latitude=now_latitude-GPS_DATA.dtlat;break;}
 727   3         case 5: {now_longitude=now_longitude-GPS_DATA.dtlon;now_latitude=now_latitude-GPS_DATA.dtlat;break;}
 728   3         case 6: {now_longitude=now_longitude-GPS_DATA.dtlon;now_latitude=now_latitude-GPS_DATA.dtlat;break;}
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 13  

 729   3         case 7: {now_longitude=now_longitude-GPS_DATA.dtlon;now_latitude=now_latitude+GPS_DATA.dtlat;break;}
 730   3         case 8: {now_longitude=now_longitude-GPS_DATA.dtlon;now_latitude=now_latitude+GPS_DATA.dtlat;break;}
 731   3         break;
 732   3         }
 733   2       }    
 734   1       if(COUNTd_STARTUP)  
 735   1       { if(MCOUNTd!=0)
 736   2           MCOUNTd--;
 737   2         if(MCOUNTd==0)
 738   2         {
 739   3          mileageH=mileage_LOCATED;
 740   3          mileageL=0;
 741   3          COUNTd_STARTUP=0;
 742   3          if((gap_LOCATED>=0x7fff)&&(gap_LOCATED<0xfff0))
 743   3          {
 744   4             mileageL=(gap_LOCATED-0x7fff)*10;
 745   4             XIANHAO=STORE_DATAb[ CHECK_BCODE].xianhao;
 746   4          }
 747   3      //----------------------将下一公里标信息写入缓冲
 748   3          NOW_BCODE=1+CHECK_BCODE;
 749   3          if(NOW_BCODE<100)
 750   3          CHECK_BCODE=Get_next_biao(NOW_BCODE);
 751   3         }
 752   2       }
 753   1       else
 754   1        {
 755   2          if(STORE_DATAb[NOW_BCODE].gap==0)
 756   2          {
 757   3             if(mileageL/10>=1500)
 758   3             {
 759   4               if(DIRECTOR)
 760   4                 mileageH++;
 761   4               else
 762   4                 mileageH--;
 763   4               STORE_DATAb[NOW_BCODE].mileage=mileageH;
 764   4               mileageL=mileageL-10000;
 765   4               NOW_BCODE++;
 766   4             }
 767   3          }
 768   2          
 769   2         if(NOW_BCODE==CHECK_BCODE)
 770   2          {
 771   3             i=STORE_DATAb[NOW_BCODE].gap;
 772   3            if(STORE_DATAb[NOW_BCODE].gap>=0x7fff&&STORE_DATAb[NOW_BCODE].gap<0xffff)
 773   3               i=1200;
 774   3            if(STORE_DATAb[NOW_BCODE].gap==0xffff)
 775   3               i=2200;
 776   3            if((mileageL/10)>i*6/5)
 777   3            {
 778   4              
 779   4              mileageH=STORE_DATAb[NOW_BCODE].mileage;
 780   4              if((gap_LOCATED>=0x7fff)&&(gap_LOCATED<0xfff0))  
 781   4                 mileageL=(gap_LOCATED-0x7fff)*10;
 782   4              else
 783   4                 mileageL=0;
 784   4              NOW_BCODE++;
 785   4              if(NOW_BCODE<100)
 786   4              CHECK_BCODE=Get_next_biao(NOW_BCODE);  
 787   4             }
 788   3           }
 789   2          
 790   2       }
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 14  

 791   1       
 792   1      }
 793          
 794          void intT0_dealing( ) interrupt 1 
 795          {
 796   1        Watch_Dog=~Watch_Dog;
 797   1        bXXGFlags.bits.bTimer = 1;
 798   1        HALF_COUNT++;
 799   1        if(new_yxdata==1)
 800   1        {
 801   2         if(abs(Lastmile-mileageL/10)>=20)
 802   2            new_yxdata=0;  
 803   2        }
 804   1        
 805   1        if(HALF_COUNT>=2)
 806   1          {
 807   2           HALF_COUNT=0;
 808   2           TIMING_FLAG=1;
 809   2          } 
 810   1        if(FMQ_CNTcai!=0)
 811   1           FMQ_CNTcai--;
 812   1        if(START_RUN)
 813   1           temp();
 814   1        TH0=0xff;TL0=0xff;
 815   1        }
 816          void intT2_dealing( ) interrupt 5 
 817          {  
 818   1         unsigned char i;
 819   1         unsigned int m=0;
 820   1         unsigned char checksum=0;
 821   1         Watch_Dog=~Watch_Dog;
 822   1         EA=0;
 823   1         ADC[0]=RADC_ADDR;
 824   1         TH2=0xff;TL2=0xff;TF2=0;
 825   1      if(ADC[0]==0xff)
 826   1      {
 827   2           for(i=1;i<5;i++)
 828   2           {  while(!TF2&&(m++<5000))
 829   3              Watch_Dog=~Watch_Dog;
 830   3              ADC[i]=RADC_ADDR;
 831   3              TH2=0xff;
 832   3              TL2=0xff;
 833   3              TF2=0;
 834   3              if(m>=5000)
 835   3             
 836   3              goto intT2_exit;                  
 837   3           } 
 838   2           checksum=ADC[1]+ADC[2]+ADC[3]+ADC[4];
 839   2        if(checksum==0)
 840   2        {
 841   3          if(ADC[1]==0x01)
 842   3          {
 843   4          
 844   4           if(START_RUN)
 845   4           {
 846   5             
 847   5            accH=ADC[2]/4;
 848   5            accV=ADC[3]/4;   
 849   5            MAX_VALUE[MLEN].speed=GPS_DATA.speed; 
 850   5            MAX_VALUE[MLEN].mileageH=mileageH;
 851   5            MAX_VALUE[MLEN].mileageL=mileageL; 
 852   5            MAX_VALUE[MLEN].accH=accH;
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 15  

 853   5            MAX_VALUE[MLEN++].accV=accV;
 854   5            if(MLEN>=2)
 855   5               MLEN=1;
 856   5            MAX_VALUESEND=1; 
 857   5           Watch_Dog=~Watch_Dog; 
 858   5             if(mileageH==0)
 859   5                SEND_LCD=1; 
 860   5           if(new_yxdata==0)
 861   5           {
 862   6              new_yxdata=1;
 863   6              if(accH>MEN_TAB[25+GPS_DATA.speed/10]&&accV>MEN_TAB[GPS_DATA.speed/10])
 864   6              {
 865   7                 LCD_DATA.yue_flag=0xa3;
 866   7                 YUE_XIAN=1;
 867   7              }    
 868   6         else if(accH>MEN_TAB[25+GPS_DATA.speed/10])
 869   6              {
 870   7                LCD_DATA.yue_flag=0xa2;
 871   7                YUE_XIAN=1;
 872   7              }
 873   6         else if(accV>MEN_TAB[GPS_DATA.speed/10])
 874   6              {
 875   7                 LCD_DATA.yue_flag=0xa1;
 876   7                 YUE_XIAN=1;
 877   7              }
 878   6         else if(accH>(MEN_TAB[25+GPS_DATA.speed/10]*7/10)||accV>(MEN_TAB[GPS_DATA.speed/10]*7/10))
 879   6              {
 880   7                 YUE_XIAN_rank2=1;
 881   7                 YUE_XIAN=1;
 882   7              }
 883   6         else if(accH>(MEN_TAB[25+GPS_DATA.speed/10]*4/10)||accV>(MEN_TAB[GPS_DATA.speed/10]*4/10))
 884   6                {
 885   7                STORE_DATAy1[YX1_LEN].mileage=mileageH*1000+mileageL/10;
 886   7                STORE_DATAy1[YX1_LEN].speed=GPS_DATA.speed;
 887   7                STORE_DATAy1[YX1_LEN].accelerath=accH;
 888   7                STORE_DATAy1[YX1_LEN].acceleratv=accV;
 889   7                STORE_DATAy1[YX1_LEN].date=GPS_DATA.date;
 890   7                STORE_DATAy1[YX1_LEN].month=GPS_DATA.month;
 891   7                STORE_DATAy1[YX1_LEN].year=GPS_DATA.year;
 892   7                STORE_DATAy1[YX1_LEN].hour=GPS_DATA.hour;
 893   7                STORE_DATAy1[YX1_LEN].min=GPS_DATA.min;

⌨️ 快捷键说明

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