📄 cmdparse.lst
字号:
238 5 else
C51 COMPILER V7.10 CMDPARSE 02/03/2005 10:45:39 PAGE 5
239 5 {
240 6 IdRight=0x00;
241 6 break;
242 6 }
243 5 j++;
244 5 }
245 4 //地址如果正确(非广播命令)开始解析命令
246 4 if(IdRight==0x55)
247 4 {
248 5 switch(ComDataBuf[8])
249 5 {
250 6 case 0x01 :
251 6 switch(ComDataBuf[11])
252 6 {
253 7 case 0x90:
254 7 switch(ComDataBuf[10])
255 7 {
256 8 case 0x1f: //读当前有功电量集合
257 8 for(i=0;i<4;i++)
258 8 {
259 9 IIcBuf[i]=SumPulseData[i];
260 9 }
261 8 for(i=4;i<8;i++)
262 8 {
263 9 IIcBuf[i]=FengPulseData[i-4];
264 9 }
265 8 for(i=8;i<12;i++)
266 8 {
267 9 IIcBuf[i]=PingPulseData[i-8];
268 9 }
269 8 for(i=12;i<16;i++)
270 8 {
271 9 IIcBuf[i]=GuPulseData[i-12];
272 9 }
273 8 CmdPick(0,0,0,0,IIcBuf,16,0,1);
274 8 break;
275 8 case 0x20: //读反向总电量
276 8 CmdPick(0x00,0x00,0x00,0,ReversePulseData,4,0,1)
-;
277 8 break;
278 8 }
279 7 break;
280 7 case 0xb0:
281 7 switch(ComDataBuf[10])
282 7 {
283 8 case 0x20: //读最后一次反向启始时间
284 8 CmdPick(0xa0,0x38,4,0,0,0,1,0);
285 8 break;
286 8 case 0x21: //读反向累积总时间
287 8 CmdPick(0x00,0x00,0x00,0,ReverseTime,3,0,0);
288 8 break;
289 8 }
290 7 break;
291 7 case 0xb2:
292 7 switch(ComDataBuf[10])
293 7 {
294 8 case 0x10: //读最近一次编程时间
295 8 CmdPick(0xa0,0x3c,4,0,0,0,1,0);
296 8 break;
297 8 case 0x12: //读编程次数
298 8 CmdPick(0xa0,0x68,2,0,0,0,1,0);
299 8 break;
C51 COMPILER V7.10 CMDPARSE 02/03/2005 10:45:39 PAGE 6
300 8 }
301 7 break;
302 7 case 0xc0:
303 7 switch(ComDataBuf[10])
304 7 {
305 8 case 0x10: //读当前日期
306 8 CmdPick(0,0,0,0,DaysBuf,4,0,0);
307 8 break;
308 8 case 0x11: //读当前时间
309 8 CmdPick(0,0,0,0,TimeBuf,3,0,0);
310 8 break;
311 8 case 0x20: //读电表运行状态字
312 8 CmdPick(0xa0,0x65,1,0,0,0,1,0);
313 8 break;
314 8 case 0x30: //读电表脉冲常数
315 8 CmdPick(0xa0,0x6d,3,0,0,0,1,0);
316 8 break;
317 8 case 0x32: //读电表表号
318 8 CmdPick(0xa0,0x46,0x06,0,0,0,1,0);
319 8 break;
320 8 case 0x33: //读电表地址
321 8 CmdPick(0xa0,0x40,0x06,0,0,0,1,0);
322 8 break;
323 8 }
324 7 break;
325 7 case 0xc1:
326 7 switch(ComDataBuf[10])
327 7 {
328 8 case 0x17://读自动抄表日期
329 8 CmdPick(0xa0,0x60,0x02,0,0,0,1,0);
330 8 break;
331 8 }
332 7 case 0xc3:
333 7 switch(ComDataBuf[10])
334 7 {
335 8 case 0x17://读电表时段
336 8 CmdPick(0xa0,0x60,0x02,0,0,0,1,0);
337 8 break;
338 8 }
339 7 break;
340 7 case 0xD1: //读取12个月历史累积电量
341 7 for(i=0x20;i<0x2c;i++)
342 7 {
343 8 if(ComDataBuf[10]==i)
344 8 {
345 9 ToDay(ComDataBuf[10]);
346 9 CmdPick(0xa2,IIcByteStar,16,0,0,0,1,0);
347 9 }
348 8 }
349 7 }
350 6 break;
351 6 case 0x04: //写操作
352 6 if(KeyFg1)
353 6 {
354 7 switch(ComDataBuf[10])
355 7 {
356 8 case 0x10: //写日期
357 8 //
358 8 CmdSave(0x64,16,0x03,4,1);
359 8 break;
360 8 case 0x11: //写时间
361 8 CmdSave(0x64,16,0x00,3,1);
C51 COMPILER V7.10 CMDPARSE 02/03/2005 10:45:39 PAGE 7
-
362 8 break;
363 8 case 0x15: //显示设置
364 8 CmdSave(0xa0,16,0x62,3,0);
-
365 8 break;
366 8 case 0x17: //写自动抄表日
367 8 CmdSave(0xa0,16,0x60,2,0);
368 8 break;
369 8 case 0x19: //设置底度
370 8 //电度清零
371 8 CmdSave(0xa0,16,0x00,16,0);//总电量清零
372 8 break;
373 8 case 0x32: //设置表编号
374 8 CmdSave(0xa0,16,0x46,6,0);//
375 8 break;
376 8 case 0x33: //设置表地址
377 8 CmdSave(0xa0,16,0x40,6,0);//
378 8 break;
379 8 case 0x3f: //设置时段
380 8 CmdSave(0xa0,16,0x80,ComDataBuf[9]-6,0);//
381 8 break;
382 8 default:
383 8
384 8 break;
385 8 }
386 7 }
387 6 else
388 6 {
389 7 switch(ComDataBuf[10])
390 7 {
391 8 case 0x11: //写时间
392 8 TimeChk(ComDataBuf[16],ComDataBuf[17]);
393 8 if(TimeOk);
394 8 {
395 9 CmdSave(0x64,16,0x00,3,1);
396 9 TimeOk=0;
397 9 }
398 8 break;
399 8 }
400 7 }
401 6 break;
402 6 case 0x0f: //修改编程密码
403 6 if(ComDataBuf[14]==0x01)
404 6 {
405 7 CmdSave(0xa0,15,0x4c,4,0);//修改编程密码
406 7 }
407 6 else if(ComDataBuf[14]==0x00)
408 6 {
409 7 CmdSave(0xa0,15,0x50,4,0);//修改清令密码
410 7 }
411 6 break;
412 6 case 0x1f: //电表总清零
413 6 if(ComDataBuf[9]==0x04)
414 6 {
415 7 ClerData();
416 7 }
417 6 break;
418 6 }
419 5 TimeSendFg=1;
420 5 }
421 4 //否则判断是否是广播命令
C51 COMPILER V7.10 CMDPARSE 02/03/2005 10:45:39 PAGE 8
422 4 else
423 4 {
424 5 IdRight=0;
425 5 for(i=0;i<6;i++)
426 5 {
427 6 if(ComDataBuf[1+i]==0x99)
428 6 {
429 7 IdRight=0x55;
430 7 }
431 6 else
432 6 {
433 7 IdRight=0x00;
434 7 break;
435 7 }
436 6 j++;
437 6 }
438 5 //如果是广播命令开始解析
439 5 if(IdRight==0x55)
440 5 {
441 6 switch(ComDataBuf[8])
442 6 {
443 7 case 0x08: //广播校时
444 7 CmdSave(0x64,15,0x00,3,1);//设置时间
445 7 break;
446 7 case 0x0a: //广播地址
447 7 CmdSave(0x64,15,0x00,3,1);//设置时间
448 7 break;
449 7 }
450 6 TimeSendFg=1;
451 6 }
452 5 else
453 5 {
454 6 ClerBuf();
455 6 SendOverFg=1;
456 6 }
457 5 CmdParseFg=0;
458 5 }
459 4 }
460 3 else
461 3 {
462 4 CmdParseFg=0;
463 4 }
464 3 }
465 2 }
466 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1964 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 27
IDATA SIZE = ---- ----
BIT SIZE = ---- 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -