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

📄 5112udp.lst

📁 一个嵌入式系统通过GPRS进行数据传输的程序,协议芯片为5112,程序中描述了通过单片机上网及通过UDP数据传输的过程
💻 LST
📖 第 1 页 / 共 5 页
字号:
1071   2                  if ( com0_send_len > 512 )
1072   2                  {
1073   3                  com0_send_len=512;
1074   3                  com1_rcv_len= com1_rcv_len-512;
1075   3                  com1_rcv_addr_hand=com1_rcv_addr_hand+512;
1076   3                              send_7d_cnt=0;
1077   3                              if ( rcv_7d_cnt != 0 )
1078   3                              {
1079   4                                      for ( len = 0 ; len < 512 ; len++ )
1080   4                                      {       itemp=len+com0_send_addr;
1081   5                                              if ( itemp > (SEND_BUF_MAX-1) ) itemp=itemp-SEND_BUF_MAX;
1082   5                                              if ( send_buf0[itemp] == 0x7d ) send_7d_cnt++;
1083   5                                              if ( send_7d_cnt == rcv_7d_cnt )break;
1084   5                                      }
1085   4                                      rcv_7d_cnt=     rcv_7d_cnt-send_7d_cnt;
1086   4                                      itemp=com0_send_addr+511;
1087   4                                      if ( send_buf0[itemp] == 0x7d )
1088   4                                      {
1089   5                                              com0_send_len--;
1090   5                                              com1_rcv_len++;
1091   5                                              com1_rcv_addr_hand--;
1092   5                                              rcv_7d_cnt++;
1093   5                                              send_7d_cnt--;
1094   5                                      }
1095   4                              }
1096   3                  }
1097   2                  else
1098   2                  {
1099   3                      com1_rcv_addr_hand=com1_rcv_addr_hand+com1_rcv_len;
1100   3                              send_7d_cnt=rcv_7d_cnt;
1101   3                              com1_rcv_len=0;
1102   3                              rcv_7d_cnt=0;
1103   3                              rcv_equ_chk=0;
1104   3                      }
1105   2                      send_com0_cnt=0;
1106   2                      if ( com1_rcv_addr_hand > (SEND_BUF_MAX-1) ) com1_rcv_addr_hand=com1_rcv_addr_hand-SEND_BUF_MAX;
C51 COMPILER V7.20   5112UDP                                                               08/18/2004 10:31:57 PAGE 19  

1107   2                      ES1=1;
1108   2                      ES0=1;
1109   2      
1110   2      
1111   2                      send_ctr_com0_buf[0]=0x7e;
1112   2                      send_ctr_com0_buf[1]=0x35;
1113   2                      len=com0_send_len-send_7d_cnt+21;//5112 len
1114   2                      itemp=len & 0xff00;
1115   2                      itemp=itemp>>8;
1116   2                      send_ctr_com0_buf[2]=(unsigned char)itemp;
1117   2                      itemp=len & 0xff;
1118   2                      ch=( unsigned char )itemp;
1119   2                      if (( ch == 0x7d ) | ( ch == 0x7e ))
1120   2                      {
1121   3                              send_ctr_com0_buf[3]=0x7d;
1122   3                              send_ctr_com0_buf[4]=ch ^ 0x20;
1123   3                              addr=5;
1124   3                      }
1125   2                      else
1126   2                      {
1127   3                              send_ctr_com0_buf[3]=ch;
1128   3                              addr=4;
1129   3                      }
1130   2                      send_ctr_com0_buf[addr]=0x55;
1131   2                      addr++;
1132   2                      len=len-12;//send data len
1133   2                      itemp=len & 0xff;
1134   2                      ch=(unsigned char)itemp;
1135   2                  if (( ch == 0x55 ) | ( ch == 0x56 ))
1136   2                      {
1137   3                              itemp=len & 0xff00;
1138   3                              itemp=itemp>>8;
1139   3                              ch=(unsigned char)itemp;
1140   3                              send_ctr_com0_buf[addr]=ch;
1141   3                              addr++;
1142   3                              send_ctr_com0_buf[addr]=0x56;
1143   3                              addr++;
1144   3                              itemp=len & 0xff;
1145   3                              ch=(unsigned char)itemp ^ 0x20;
1146   3                              send_ctr_com0_buf[addr]=ch;
1147   3                              addr++;
1148   3                      }
1149   2                      else
1150   2                      {
1151   3                              if (( ch == 0x7d ) | ( ch == 0x7e ))
1152   3                              {
1153   4                                      send_ctr_com0_buf[addr]=0x00;
1154   4                                      addr++;
1155   4                                      itemp=len & 0xff00;
1156   4                                      itemp=itemp>>8;
1157   4                                      ch=(unsigned char)itemp;
1158   4                                      send_ctr_com0_buf[addr]=ch;
1159   4                                      addr++;
1160   4                                      send_ctr_com0_buf[addr]=0x7d;
1161   4                                      addr++;
1162   4                                      itemp=len & 0xff;
1163   4                                      ch=(unsigned char)itemp ;
1164   4                                      ch=ch ^ 0x20;
1165   4                                      send_ctr_com0_buf[addr]=ch;
1166   4                                      addr++;
1167   4                              }
1168   3                              else
C51 COMPILER V7.20   5112UDP                                                               08/18/2004 10:31:57 PAGE 20  

1169   3                              {
1170   4                                      send_ctr_com0_buf[addr]=0x00;
1171   4                                      addr++;
1172   4                                      itemp=len & 0xff00;
1173   4                                      itemp=itemp>>8;
1174   4                                      ch=(unsigned char)itemp;
1175   4                                      send_ctr_com0_buf[addr]=ch;
1176   4                                      addr++;
1177   4                                      itemp=len & 0xff;
1178   4                                      ch=(unsigned char)itemp ;
1179   4                                      send_ctr_com0_buf[addr]=ch;
1180   4                                      addr++;
1181   4                              }
1182   3                      }
1183   2                      p=conver(eid);
1184   2                      for ( ch = 0 ; ch < p[0] ; ch++ )
1185   2                      {
1186   3                              send_ctr_com0_buf[addr] = p[ch+1];//eid
1187   3                              addr++;
1188   3                      }
1189   2                      ch=p[0]+1;
1190   2                      itemp=p[ch];
1191   2      
1192   2                      itemp=itemp<<8;
1193   2                      ch++;
1194   2                      itemp=itemp+p[ch];
1195   2                      chk=chk+itemp;
1196   2                      send_ctr_com0_buf[addr]=0x00;//type:send data
1197   2                      addr++;
1198   2                      p=conver(sendid);
1199   2                      sendid++;
1200   2                      for ( ch = 0 ; ch < p[0] ; ch++ )
1201   2                      {
1202   3                              send_ctr_com0_buf[addr] = p[ch+1];//send id
1203   3                              addr++;
1204   3                      }
1205   2                      ch=p[0]+1;
1206   2                      itemp=p[ch];
1207   2                      itemp=itemp<<8;
1208   2                      ch++;
1209   2                      chk=chk+itemp+p[ch];
1210   2      
1211   2                      send_ctr_com0_len=addr;
1212   2                      send_com0_finish=0;
1213   2                      send_data0=0;
1214   2                      send_com0_cnt=0;
1215   2                      TI=1;
1216   2                      while ( !send_com0_finish )
1217   2                      {
1218   3                      ;
1219   3                      }
1220   2                      send_com0_finish=0;
1221   2                      send_data0=1;
1222   2                      send_com0_cnt=0;
1223   2                      TI=1;
1224   2                      while ( !send_com0_finish )
1225   2                      {
1226   3                      ;
1227   3                      }
1228   2                      send_com0_finish=0;
1229   2                      addr=0;
1230   2                      p=conver(chk);
C51 COMPILER V7.20   5112UDP                                                               08/18/2004 10:31:57 PAGE 21  

1231   2                      for ( ch = 0 ; ch < p[0] ; ch++ )
1232   2                      {
1233   3                              send_ctr_com0_buf[addr] = p[ch+1];//send id
1234   3                              addr++;
1235   3                      }
1236   2                      send_ctr_com0_buf[addr]=0x55;
1237   2                      addr++;
1238   2                      send_ctr_com0_buf[addr]=0x7e;
1239   2                      addr++;
1240   2                      send_ctr_com0_len=addr;
1241   2                      send_data0=0;
1242   2                      ack=0;
1243   2                      send_com0_cnt=0;
1244   2                      send_com0_finish=0;
1245   2                      TI=1;
1246   2                      settimer(9);
1247   2                      while ( !ack )
1248   2                      {
1249   3                      ;
1250   3                      }
1251   2                      killtimer(9);
1252   2                      ack=0;
1253   2              }
1254   1      }
1255          ///////////////////////////////
1256          //
1257          //NAME: init_5112
1258          //DESCRIPTION: set e5112
1259          //CALL:
1260          //INPUT:
1261          //OUTPUT:NONE
1262          //
1263          ///////////////////////////////
1264          void init_5112(void)
1265          {
1266   1              unsigned char  addr,i,len,temp;
1267   1              unsigned char *p;
1268   1      
1269   1              send_ctr_com0_buf[0]=0x7e;
1270   1              send_ctr_com0_buf[1]=0x2f;
1271   1              send_ctr_com0_buf[2]=0x00;
1272   1              send_ctr_com0_buf[3]=0x04;
1273   1              send_ctr_com0_buf[4]=0x08;//fffd:115200 fffa:57600 ffee:19200 for 11.0592MHz
1274   1              i=0xff;                                   //ffb8 for 9600 ffdc for 19200 fff4 for 57600 for 22.1184MHz
1275   1              addr=0xf4;
1276   1              send_ctr_com0_buf[5]=0x7e;
1277   1              send_data0=0;
1278   1              send_ctr_com0_len=6;
1279   1              send_com0_finish=0;
1280   1              ack=0;
1281   1              send_com0_cnt=0;
1282   1              TI=1;                                           //set 5112 to cpu
1283   1              settimer(9);
1284   1              while ( !ack )
1285   1              {
1286   2              ;
1287   2              }
1288   1              killtimer(9);
1289   1              ack=0;
1290   1              TR2=0;
1291   1              TH2=i;  // set cpu baud :cpu to 5112
1292   1              TL2=addr;
C51 COMPILER V7.20   5112UDP                                                               08/18/2004 10:31:57 PAGE 22  

1293   1              RCAP2H=i;
1294   1              RCAP2L=addr;
1295   1              TR2=1;
1296   1              send_ctr_com0_buf[0]=0x7e;
1297   1              send_ctr_com0_buf[1]=0x32;
1298   1              send_ctr_com0_buf[2]=0x00;
1299   1              addr=5;
1300   1              temp=x_isp_num;
1301   1              p=x_read(temp,16);
1302   1              for ( i = 0 ; i < 16 ; i++ )
1303   1              {
1304   2                      if ( p[i] != 0x00 ) send_ctr_com0_buf[i+addr]=p[i];
1305   2                      else break;
1306   2              }
1307   1              send_ctr_com0_buf[4]=i;
1308   1              addr=addr+i;
1309   1              len=addr;
1310   1              addr++;
1311   1              temp=x_isp_name;
1312   1              p=x_read(temp,16);
1313   1              for ( i = 0 ; i < 16 ; i++ )
1314   1              {
1315   2                      if ( p[i] == 0x00) break;
1316   2                      else send_ctr_com0_buf[addr+i]=p[i];
1317   2              }
1318   1              send_ctr_com0_buf[len]=i;
1319   1              addr=addr+i;
1320   1              len=addr;
1321   1              addr++;
1322   1              temp=x_isp_password;
1323   1              p=x_read(temp,16);
1324   1              for ( i = 0 ; i < 16 ; i++ )
1325   1          {
1326   2                      if ( p[i] == 0x00 ) break;
1327   2                      else send_ctr_com0_buf[addr+i]=p[i];
1328   2              }
1329   1              send_ctr_com0_buf[len]=i;
1330   1              send_ctr_com0_buf[addr+i]=0x7e;
1331   1              send_ctr_com0_buf[3]=addr+i-1;
1332   1              ack=0;
1333   1              send_data0=0;
1334   1              send_ctr_com0_len=send_ctr_com0_buf[3]+2;
1335   1              send_com0_cnt=0;
1336   1              send_com0_finish=0;
1337   1              TI=1;                                                           //set 5112 isp set
1338   1              settimer(9);
1339   1              while ( !ack )
1340  

⌨️ 快捷键说明

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