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

📄 f020.lst

📁 多通道高速数据采集源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 958   9                                    //AIN02_ADDR[2]=0x08;//AIN0.2     存储区域0x040000~0x05FFFF共128K
 959   9                                  }
 960   8      
 961   8                                }
 962   7                  ET0=1;
 963   7                              TR0=1;
 964   7                         }//end if m2>0x02FF
 965   6                 if(n2>0X12FF)//地址注意之处
 966   6                         {
 967   7                  TR0=0;
 968   7                  ET0=0;
 969   7                          n2=0x1200;//AIN1.2缓存区首地址
 970   7                              
 971   7                  switch (first_flag12)
 972   7                              {
 973   8                 case 0X00: Read_Data_T0_Flash (AIN12_ADDR[0],AIN12_ADDR[1],0x08,n2+8,248);
 974   8                          AIN12_ADDR[1]++;
 975   8                          //AIN12_ADDR[2]=0x00;
 976   8                          first_flag12=1;
 977   8                                              break;
 978   8                 case 0X01: Read_Data_T0_Flash (AIN12_ADDR[0],AIN12_ADDR[1],0x00,n2,256);
 979   8                          AIN12_ADDR[1]++;
 980   8                          //AIN12_ADDR[2]=0x00;
 981   8                                              break;
 982   8                 default:break;
 983   8                              }
 984   7                  
 985   7                  if(AIN12_ADDR[1]>255)
 986   7                                {
 987   8                                 AIN12_ADDR[1]=0x00;
 988   8                                 //AIN12_ADDR[2]=0x00;
 989   8                                 AIN12_ADDR[0]++;
 990   8                                 if( AIN12_ADDR[0]>=0X16)//存储区域0x140000~0x15FFFF共128K
 991   8                                   {
 992   9                                    FLASH_SE(0x14,0x00,0x00);
 993   9                            FLASH_SE(0x15,0x00,0x00);
 994   9                       
 995   9                                    first_flag12=0;
 996   9                                    Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x14,0x
             -00,0x00,0x12);//通道AIN1。2
 997   9                                    AIN12_ADDR[0]=0x14;
 998   9                                    AIN12_ADDR[1]=0x00;
 999   9                                    //AIN12_ADDR[2]=0x08;//AIN1.2     存储区域0x140000~0x15FFFF共128K
1000   9                                       }
1001   8      
1002   8                                }
1003   7                  ET0=1;
1004   7                              TR0=1;
1005   7                         }//end if n2>0x12FF
1006   6      /*****************AIN02************************************/
1007   6      /***信号517-1*******/
1008   6      /***射控驱动器速度给定***/
1009   6      /***电压范围0~15V*****/
1010   6      /*****阀值0.5V*****/
1011   6      /*******还原算法Xn*9.4922*11********/
1012   6      /**AIN0.2 存储区域0x040000~0x05FFFF共128K*/
1013   6                    last_xn=x[0x2200];//AIN0.2上次值缓存
1014   6                AMX0SL = 0x02;//AIN0.2                                          //AIN00-AIN07->0X00-0X07        
1015   6                    AD0INT = 0;               // 清除ADC转换完成标志
1016   6                    AD0BUSY = 1;
C51 COMPILER V7.50   F020                                                                  09/08/2007 13:14:11 PAGE 18  

1017   6                Delay_us(5);
1018   6                    while (!AD0INT);
1019   6                current_xn= ADC0H;
1020   6                Temp_AD=abs(current_xn-last_xn);
1021   6                x[0x2200]= current_xn;
1022   6                      if(Temp_AD>=B)//阀值设定
1023   6                      {
1024   7                          if(timepoint>253)
1025   7                              {
1026   8                              x[m2-2]=current_xn;
1027   8                          //m2++;
1028   8                  x[m2-1]=0XFE;
1029   8                  //m2++;
1030   8                              }
1031   7                              else
1032   7                              {
1033   8                         x[m2]=current_xn;
1034   8                         m2++;
1035   8                 x[m2]=timepoint;
1036   8                 m2++;
1037   8                         }
1038   7                         if(m2>0X02FF)//地址注意之处
1039   7                         {
1040   8                  TR0=0;
1041   8                  ET0=0;
1042   8                          m2=0x0200;//AIN0.2缓存区首地址
1043   8                  
1044   8                              switch (first_flag02)
1045   8                              {
1046   9                              case 0X00: Read_Data_T0_Flash (AIN02_ADDR[0],AIN02_ADDR[1],0x08,m2+8,248);
1047   9                                      AIN02_ADDR[1]++;
1048   9                                      //AIN02_ADDR[2]=0x00;
1049   9                                      first_flag02=1;
1050   9                                              break;
1051   9                         case 0X01: Read_Data_T0_Flash (AIN02_ADDR[0],AIN02_ADDR[1],0x00,m2,256);
1052   9                                     AIN02_ADDR[1]++;
1053   9                                     //AIN02_ADDR[2]=0x00;
1054   9                                              break;
1055   9                            default:break;
1056   9                              }
1057   8                  if(AIN02_ADDR[1]>255)
1058   8                                {
1059   9                     AIN02_ADDR[1]=0x00;
1060   9                     //AIN02_ADDR[2]=0x00;
1061   9                                 AIN02_ADDR[0]++;
1062   9                                 if( AIN02_ADDR[0]>=0x06)
1063   9                                   {
1064  10                                    FLASH_SE(0x04,0x00,0x00);
1065  10                                FLASH_SE(0x05,0x00,0x00);
1066  10                        
1067  10                                    first_flag02=0;
1068  10                                    Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x04,0x
             -00,0x00,0x02);//通道AIN0。2
1069  10                                    AIN02_ADDR[0]=0x04;
1070  10                                    AIN02_ADDR[1]=0x00;
1071  10                                    //AIN02_ADDR[2]=0x08;//AIN0.2     存储区域0x040000~0x05FFFF共128K
1072  10                                       }
1073   9      
1074   9                                }
1075   8                              TR0=1;
1076   8                  ET0=1;
1077   8                         }//end if m2>0X02FF
C51 COMPILER V7.50   F020                                                                  09/08/2007 13:14:11 PAGE 19  

1078   7               }//end if Temp_AD>B
1079   6      /*****************AIN12************************************/
1080   6      /***信号562-1*******/
1081   6      /***火控台单发射击开关***/
1082   6      /***电压范围0~15V*****/
1083   6      /*****阀值1.5V*****/
1084   6      /*******还原算法Xn*9.4922*11********/
1085   6      /**AIN1.2 存储区域0x140000~0x15FFFF共128K*/
1086   6                last_xn=x[0x3200];//AIN1.2上次值缓存
1087   6                AMX1SL=0x02;//AIN1.2
1088   6                ADC1CN &= 0xDF;// 清除ADC转换完成标志 AD1INT = 0;
1089   6                ADC1CN |= 0x10;//  AD1BUSY = 1;
1090   6                Delay_us(5);
1091   6                while (!ADC1CN&0x20);              //等待AD1INT=1;
1092   6                current_xn=ADC1;
1093   6                Temp_AD=abs(current_xn-last_xn);
1094   6                x[0x3200]= current_xn;
1095   6                        if(Temp_AD>=A)//阀值设定
1096   6                        {
1097   7                         if(timepoint>253)
1098   7                         {
1099   8                         x[n2-2]=current_xn;
1100   8                         //n2++;
1101   8                 x[n2-1]=0XFE;
1102   8                 //n2++;
1103   8                         }
1104   7                         else
1105   7                         {
1106   8                         x[n2]=current_xn;
1107   8                         n2++;
1108   8                 x[n2]=timepoint;
1109   8                 n2++;
1110   8                         }
1111   7                         if(n2>0X12FF)//注意之处
1112   7                         {
1113   8                  TR0=0;
1114   8                  ET0=0;
1115   8                          n2=0x1200;//AIN1.2缓存区首地址
1116   8                  
1117   8                  switch (first_flag12)
1118   8                              {
1119   9                              case 0X00: Read_Data_T0_Flash (AIN12_ADDR[0],AIN12_ADDR[1],0x08,n2+8,248);
1120   9                                      AIN12_ADDR[1]++;
1121   9                                      //AIN12_ADDR[2]=0x00;
1122   9                                      first_flag12=1;
1123   9                                              break;
1124   9                              case 0X01: Read_Data_T0_Flash (AIN12_ADDR[0],AIN12_ADDR[1],0x00,n2,256);
1125   9                                      AIN12_ADDR[1]++;
1126   9                                      //AIN12_ADDR[2]=0x00;
1127   9                                              break;
1128   9                              default:break;
1129   9                              }
1130   8                  
1131   8                  if(AIN12_ADDR[1]>255)
1132   8                                {
1133   9                                 AIN12_ADDR[1]=0x00;
1134   9                                // AIN12_ADDR[2]=0x00;
1135   9                                 AIN12_ADDR[0]++;
1136   9                                 if( AIN12_ADDR[0]>=0X16)//存储区域0x140000~0x15FFFF共128K
1137   9                                   {
1138  10                                    FLASH_SE(0x14,0x00,0x00);
1139  10                             FLASH_SE(0x15,0x00,0x00);
C51 COMPILER V7.50   F020                                                                  09/08/2007 13:14:11 PAGE 20  

1140  10                       
1141  10                                    first_flag12=0;
1142  10                                    Flash_Write_address (shijian_data[0],shijian_data[1],shijian_data[2],0x14,0x
             -00,0x00,0x12);//通道AIN1。2
1143  10                                    AIN12_ADDR[0]=0x14;
1144  10                                    AIN12_ADDR[1]=0x00;
1145  10                                    //AIN12_ADDR[2]=0x08;//AIN1.2     存储区域0x140000~0x15FFFF共128K
1146  10                                       }
1147   9      
1148   9                                }
1149   8                  ET0=1;
1150   8                              TR0=1;
1151   8                         }//end if n2>0x12FF
1152   7            }//end if Temp_AD>A
1153   6                        
1154   6       }//end if AIN==0X03
1155   5      /**********************************END AIN=0X03**********************************/      
1156   5      
1157   5      /***********************************START AIN=0X04*********************************************/
1158   5      if(AIN==0X04)
1159   5      {
1160   6                        AIN_Flag=0;
1161   6      /***************************AD LONG TIME NO CHANGE****************************/
1162   6        if(timepoint>253)
1163   6                         {
1164   7                   TR0=0;
1165   7                   ET0=0;
1166   7                       
1167   7                   AMX0SL = 0x03;//AIN0.3                                       //AIN00-AIN07->0X00-0X07        
1168   7                   AD0INT = 0;               // 清除ADC转换完成标志
1169   7                       AD0BUSY = 1;
1170   7                   Delay_us(5);
1171   7                       while (!AD0INT);
1172   7                   current_xn = ADC0H;
1173   7                   x[m3]=current_xn;
1174   7                       m3++;
1175   7                   x[m3]=0xFE;
1176   7                   m3++;
1177   7                      
1178   7                   
1179   7                   AMX1SL=0x03;//AIN1.3
1180   7                   ADC1CN &= 0xDF;// 清除ADC转换完成标志 AD1INT = 0;
1181   7                   ADC1CN |= 0x10;//  AD1BUSY = 1;
1182   7                   Delay_us(5);
1183   7                   while (!ADC1CN&0x20);              //等待AD1INT=1;
1184   7                   current_xn=ADC1;
1185   7                   x[n3]=current_xn;
1186   7                       n3++;
1187   7                   x[n3]=0xFE;
1188   7                   n3++;
1189   7                           ET0=1;
1190   7                   TR0=1;
1191   7      
1192   7                          }
1193   6                 if(m3>0X03FF)
1194   6                         {
1195   7                  TR0=0;
1196   7                  ET0=0;
1197   7                          m3=0x0300;//AIN0.3缓存区首地址
1198   7                  switch (first_flag03)
1199   7                              {
1200   8                  case 0X00: Read_Data_T0_Flash (AIN03_ADDR[0],AIN03_ADDR[1],0x08,m3+8,248);
C51 COMPILER V7.50   F020                                            

⌨️ 快捷键说明

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