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

📄 main.lst

📁 一个用来实现单片机USB接口的程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 894   7                STORE_DATAy1[YX1_LEN].xianhao=XIANHAO;
 895   7                STORE_DATAy1[YX1_LEN++].direct=DIRECTOR;    
 896   7                }
 897   6          if(YUE_XIAN==1)
 898   6            {
 899   7              if(YUE_XIAN_rank2==0)
 900   7                { FMQ_CNT=4;FMQ_CNTcai=3;BUZZEN=1;BUZZEN=1;}
 901   7              PRINT_DATA.AH=accH;
 902   7              PRINT_DATA.AV=accV;
 903   7              PRINT_DATA.SPEED=GPS_DATA.speed; 
 904   7              PRINT_DATA.mileageH=mileageH;
 905   7              PRINT_DATA.mileageL=mileageL/10;
 906   7              PRINT_DATA.XIANHAO=XIANHAO;
 907   7              PRINT_DATA.RPCOUNT=0;
 908   7              if(STORE_DATAb[NOW_BCODE].gap>0xfff0)
 909   7                PRINT_DATA.RPCOUNT=(unsigned char)(STORE_DATAb[NOW_BCODE].gap&0x000f);
 910   7              PRINT_DATA.year=GPS_DATA.year;
 911   7              PRINT_DATA.month=GPS_DATA.month;
 912   7              PRINT_DATA.date=GPS_DATA.date;;
 913   7              PRINT_DATA.hour=GPS_DATA.hour;
 914   7              PRINT_DATA.min=GPS_DATA.min;
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 16  

 915   7              PRINT_DATA.direct=DIRECTOR; 
 916   7              if(YUE_XIAN_rank2)
 917   7                PRINT_DATA.rank=2;
 918   7              else
 919   7               PRINT_DATA.rank=3;
 920   7              YUE_XIAN_rank2=0;
 921   7              if(rank2_ENABLE==1||PRINT_DATA.rank==3)
 922   7              PRINT_DATASEND=1; 
 923   7              if(YUE_XIAN_rank2==0)
 924   7              {  
 925   8                STORE_DATAy3[YX3_LEN].mileage=mileageH*1000+mileageL/10;
 926   8                STORE_DATAy3[YX3_LEN].speed=GPS_DATA.speed;
 927   8                STORE_DATAy3[YX3_LEN].accelerath=accH;
 928   8                STORE_DATAy3[YX3_LEN].acceleratv=accV;
 929   8                STORE_DATAy3[YX3_LEN].date=GPS_DATA.date;
 930   8                STORE_DATAy3[YX3_LEN].month=GPS_DATA.month;
 931   8                STORE_DATAy3[YX3_LEN].year=GPS_DATA.year;
 932   8                STORE_DATAy3[YX3_LEN].hour=GPS_DATA.hour;
 933   8                STORE_DATAy3[YX3_LEN].min=GPS_DATA.min;
 934   8                STORE_DATAy3[YX3_LEN].xianhao=XIANHAO;
 935   8                STORE_DATAy3[YX3_LEN++].direct=DIRECTOR;
 936   8              }
 937   7              else
 938   7              {  
 939   8                STORE_DATAy2[YX2_LEN].mileage=mileageH*1000+mileageL/10;
 940   8                STORE_DATAy2[YX2_LEN].speed=GPS_DATA.speed;
 941   8                STORE_DATAy2[YX2_LEN].accelerath=accH;
 942   8                STORE_DATAy2[YX2_LEN].acceleratv=accV;
 943   8                STORE_DATAy2[YX2_LEN].date=GPS_DATA.date;
 944   8                STORE_DATAy2[YX2_LEN].month=GPS_DATA.month;
 945   8                STORE_DATAy2[YX2_LEN].year=GPS_DATA.year;
 946   8                STORE_DATAy2[YX2_LEN].hour=GPS_DATA.hour;
 947   8                STORE_DATAy2[YX2_LEN].min=GPS_DATA.min;
 948   8                STORE_DATAy2[YX2_LEN].xianhao=XIANHAO;
 949   8                STORE_DATAy2[YX2_LEN++].direct=DIRECTOR;
 950   8              }
 951   7              Lastmile=mileageL/10; 
 952   7              if(YX3_LEN>99)
 953   7               YX3_DATA=1;
 954   7              if(YX2_LEN>99)
 955   7               YX2_DATA=1;
 956   7              if(YX1_LEN>99)
 957   7               YX1_DATA=1; 
 958   7             SEND_LCD=1;
 959   7         }
 960   6            }    
 961   5           }
 962   4          }
 963   3          if(ADC[1]==0x03)
 964   3          {
 965   4           LCD_DATA.voltage=ADC[2]+ADC[3]*256;;
 966   4           AD_MCU=1;
 967   4           if(START_RUN==0)
 968   4              SEND_LCD=1;
 969   4          }   
 970   3      }   
 971   2      }
 972   1      intT2_exit:
 973   1              TH2=0xff;
 974   1              TL2=0xff;
 975   1              TF2=0;
 976   1           EA=1;
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 17  

 977   1      }  
 978          void int1_dealing( ) interrupt 2 
 979          {  
 980   1         unsigned char i=0;
 981   1         unsigned int m=0;
 982   1         unsigned char checksum=0;
 983   1         unsigned char *mp; 
 984   1         DDBUF[0]=RGPS_ADDR; 
 985   1         EA=0;
 986   1        if(DDBUF[0]==0xa5)
 987   1        {     
 988   2           for(i=1;i<24;i++)
 989   2           { 
 990   3            while((!IE1)&&(m++<5000))
 991   3            Watch_Dog=~Watch_Dog; 
 992   3            DDBUF[i]=RGPS_ADDR;
 993   3            IE1=0;
 994   3            if(m>=5000)
 995   3            goto int1_exit;                
 996   3           }
 997   2      
 998   2      //---------------------------- calculate checksum
 999   2           i=0;
1000   2           mp=(unsigned char *)&GPS_DATA;
1001   2           for(i=0;i<24;i++)
1002   2           *mp++=DDBUF[i];
1003   2         mp=(unsigned char *)&GPS_DATA;
1004   2         mp++;
1005   2         for(i=1;i<24;i++)
1006   2         checksum=checksum+(*mp++);
1007   2         if(checksum==0)
1008   2        {
1009   3         
1010   3            GPS_MCU=1;
1011   3         
1012   3          if((GPS_DATA.state&0xf0)==0xa0)
1013   3          {
1014   4            
1015   4             ALTERNATE=1;
1016   4             LCD_DATA.gps=0x22;
1017   4             if(GPS_DATA.flag==0xaa)
1018   4             BIG_LON=1;
1019   4            else
1020   4             BIG_LON=0;
1021   4          }
1022   3          else
1023   3          {
1024   4             LCD_DATA.gps=0x0; 
1025   4             GPS_DATA.speed=OLD_speed;
1026   4            GPS_DATA.dtmiles=OLD_dtmiles;
1027   4            SEND_LCD=1;
1028   4          }
1029   3         }
1030   2        else
1031   2         {
1032   3           GPS_DATA.state=(GPS_DATA.state&0x0f);
1033   3           LCD_DATA.gps=0x0;
1034   3           GPS_DATA.speed=OLD_speed;
1035   3           GPS_DATA.dtmiles=OLD_dtmiles;
1036   3            
1037   3         }
1038   2      //----------------------------over
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 18  

1039   2       }
1040   1       int1_exit:
1041   1       EA=1;
1042   1      }
1043          
1044          void main(void)
1045          {    unsigned char xdata  Wtest[16]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee
             -,0xff,0x00};
1046   1           unsigned char xdata  Rtest[16]={0x00};
1047   1           unsigned int i=0;
1048   1           unsigned char m=0;
1049   1           unsigned char n=0;	
1050   1           unsigned char *mp;
1051   1           BUZZEN=0; 
1052   1           EA=0;
1053   1           
1054   1           
1055   1          
1056   1       //-------------------------------------------------
1057   1        IT1=1;//外部中断1触发方式控制位,=1为下降沿触发;
1058   1        EX1=0;
1059   1        IE1=0;
1060   1        IT0=0;//外部中断0触发方式控制位,=1为下降沿触发;
1061   1        EX0=1;
1062   1        IE0=0;
1063   1      //----------------------------------------------------- 
1064   1      //---------------------------------------------------
1065   1        TMOD|=0x05; //GATE=0;C/T=1;M1M0=01;
1066   1        TCON|=0x10;//TF1=0;TR1=0;TF0=0;TR0=1;IE1=0;IT1=0;IE0=0;IT0=0;
1067   1        TH0=0xff;
1068   1        TL0=0xff; // set T2  value
1069   1        ET0=1;    //int permit bit
1070   1        PT0=0;
1071   1        
1072   1      //--------------------------------------------------
1073   1      // confingure T2 =counter;
1074   1      //--------------------------------------------------
1075   1        T2MOD|=0x01; //0bit:counter/timer confinguration bit,=1 is counter//
1076   1        T2CON|=0x0e;//TF2=0;EXF2=0;RCLK=0;TCLK=0;EXEN2=0;TR2=1;C/T2=1;CP/RL2=0
1077   1        TH2=0xff;
1078   1        TL2=0xff; // set T2  value
1079   1        ET2=0;    //int permit bit
1080   1        TF2=0;
1081   1        EA=1;
1082   1       Init_COMM( );    
1083   1      //---------------------------------------------------
1084   1      // T2 confingure over
1085   1      //----------------------------------------------------
1086   1        
1087   1              Watch_Dog=~Watch_Dog;
1088   1             DelayMs(254);
1089   1      	bXXGFlags.bits.SLAVE_IS_ATTACHED=0;
1090   1      	bXXGFlags.bits.bUartInDone=0;	
1091   1      	SL811BufWrite(0x40,Wtest,16);
1092   1      	SL811BufRead(0x40,Rtest,16);
1093   1      	
1094   1      	for(i=0;i<64;i++)
1095   1      	
1096   1      		DBUF[i]=0;
1097   1      	Watch_Dog=~Watch_Dog;	
1098   1      	SL811_CS=0;
1099   1      	SL811_Init();
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 19  

1100   1      	MCU_LED2=1;
1101   1      	//ENABLE_INTERRUPTS;//
1102   1      	Watch_Dog=~Watch_Dog;
1103   1      	bXXGFlags.bits.bTimer=1;
1104   1      	TEST_HARD=1;
1105   1      	//rank2_ENABLE=1;
1106   1      	bXXGFlags.bits.SLAVE_FOUND=0;
1107   1              EA=1;
1108   1      	while(TRUE)
1109   1      	{
1110   2      		
1111   2      		Watch_Dog=~Watch_Dog;
1112   2      		if (bXXGFlags.bits.bTimer){
1113   3      			DISABLE_INTERRUPTS;
1114   3      			bXXGFlags.bits.bTimer = 0;
1115   3      			ENABLE_INTERRUPTS;
1116   3      			Watch_Dog=~Watch_Dog;
1117   3      			check_key_LED();
1118   3      			Watch_Dog=~Watch_Dog;
1119   3      			}
1120   2      		
1121   2      		if(bXXGFlags.bits.SLAVE_FOUND){
1122   3      			DISABLE_INTERRUPTS;
1123   3      			EX1=0;
1124   3      			ET2=0;
1125   3      			bXXGFlags.bits.SLAVE_FOUND=FALSE;
1126   3      			Watch_Dog=~Watch_Dog;
1127   3      			DelayMs(250);
1128   3      			Watch_Dog=~Watch_Dog;
1129   3      			if(EnumUsbDev(1))				// enumerate USB device, assign USB address = #1
1130   3      			{
1131   4      			   	bXXGFlags.bits.SLAVE_ENUMERATED = TRUE;
1132   4      			   	Watch_Dog=~Watch_Dog;	// Set slave USB device enumerated flag
1133   4      			   	//MCU_LED0=0;
1134   4      			}	
1135   3      			ENABLE_INTERRUPTS;
1136   3      			}
1137   2      		if(bXXGFlags.bits.SLAVE_REMOVED){
1138   3      		        MCU_LED2=1;//GUAN ZHISHIDENG
1139   3      			DISABLE_INTERRUPTS;
1140   3      			bXXGFlags.bits.SLAVE_REMOVED=FALSE;
1141   3      			bXXGFlags.bits.SLAVE_ENUMERATED = FALSE;
1142   3      			bXXGFlags.bits.SLAVE_IS_ATTACHED = FALSE;
1143   3      			ENABLE_INTERRUPTS;
1144   3      			}
1145   2      		if(bXXGFlags.bits.bMassDevice){
1146   3      			DISABLE_INTERRUPTS;
1147   3      			bXXGFlags.bits.bMassDevice=FALSE;
1148   3      			Watch_Dog=~Watch_Dog;
1149   3      			if(EnumMassDev())
1150   3      				{
1151   4      				bXXGFlags.bits.SLAVE_IS_ATTACHED = TRUE;
1152   4      				EX1=1;
1153   4      				ET2=1;
1154   4      				Watch_Dog=~Watch_Dog;
1155   4      				}
1156   3      			else
1157   3      				{
1158   4      				bXXGFlags.bits.SLAVE_IS_ATTACHED = FALSE;
1159   4      				}		
1160   3      			ENABLE_INTERRUPTS;
1161   3      			}
C51 COMPILER V6.20c  MAIN                                                                  10/09/2005 11:31:22 PAGE 20  

1162   2      			
1163   2      //-----------------------------------------------------custom program
1164   2      //U盘中文件的组织格式:
1165   2      //一条线路形成一个文件
1166   2      //采标文件Dbiao从第0簇开始存放,存储空间为(22886*10+512)/1024=224K=0x38000;第7簇
1167   2      //开始的512个字节为索引表,每个索引文件的格式为:线号、起始里程、上下行、起始地址、记录组数、保留
1168   2      //                                                 1      4          1      2         2        22  =32
1169   2      //32~512:每快的记录数00为未采标
1170   2      //越限文件Dxian3从第8簇开始存放,存储空间为(22886*10+256)/1024=98K=0x186A0;
1171   2      //开始的256个字节为索引表,每个索引文件的格式为:线号、起始里程、上下行、起始地址、记录组数、保留
1172   2      //                                                 1      3          1      2         2        6  =16
1173   2      //------------------------------------------------------------------------------------------
1174   2      
1175   2      if(bXXGFlags.bits.SLAVE_IS_ATTACHED)
1176   2      //-------------------------------------------------
1177   2       { 
1178   3        
1179   3         Watch_Dog=~Watch_Dog;         
1180   3         UDSK_MCU=1;
1181   3         //TIAN_START=0;
1182   3         //MCU_LED2=0;// KAI ZHISHIDENG 
1183   3        //CONFIG=1;
1184   3       // CREATE_FILE=1;
1185   3       	//OPEN_FILE=1;
1186   3       //FileNumber=24;
1187   3        //XIANCHANGE=1;
1188   3       // NOW_BCODE=8;
1189   3        //BGROUP=1;
1190   3       //DIRECTOR=1;  
1191   3      if(GET_MXI)
1192   3       {
1193   4         Watch_Dog=~Watch_Dog;
1194   4         EA=0;
1195   4         MCU_LED2=1;

⌨️ 快捷键说明

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