📄 main.src
字号:
; { if(couren_addrint==FL_engintone_a)
; SOURCE LINE # 543
MOV DPTR,#couren_addrint
MOVX A,@DPTR
CJNE A,#07CH,?C0051
INC DPTR
MOVX A,@DPTR
CJNE A,#00H,?C0051
; { F_askerasinttwo=1;
; SOURCE LINE # 544
MOV DPTR,#flag_ereasflash01
MOVX A,@DPTR
ORL A,#02H
MOVX @DPTR,A
; F_askerasintone=0;
; SOURCE LINE # 545
MOVX A,@DPTR
ANL A,#0FEH
MOVX @DPTR,A
; }
; SOURCE LINE # 546
RET
?C0051:
; else
; { F_askerasintone=1;
; SOURCE LINE # 548
MOV DPTR,#flag_ereasflash01
MOVX A,@DPTR
ORL A,#01H
MOVX @DPTR,A
; F_askerasinttwo=0;
; SOURCE LINE # 549
MOVX A,@DPTR
ANL A,#0FDH
MOVX @DPTR,A
; }
; SOURCE LINE # 550
; }
; SOURCE LINE # 551
; // for(i=0;i<4;i++)
; // wr_buffer[i]=Enegedata.byte[3-i];
; }
; SOURCE LINE # 554
?C0053:
RET
; END OF Recover_eng
;
; //=========================================================================
; //函数功能:恢复各参数项
; //入口参数:参数在flash、RAM中存放地址、参数长度
; //返回参数:0:成功,1:失败
; //=========================================================================
; unsigned char recover_item(unsigned int flashaddr,unsigned int ramaddr,unsigned char num)
RSEG ?PR?_recover_item?MAIN
_recover_item:
USING 0
; SOURCE LINE # 561
MOV DPTR,#flashaddr?954
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
; { unsigned char j,sumbuff,value;
; SOURCE LINE # 562
; value=1;
; SOURCE LINE # 563
MOV DPTR,#value?959
MOV A,#01H
MOVX @DPTR,A
; for(j=0;j<2;j++)
; SOURCE LINE # 564
CLR A
MOV DPTR,#j?957
MOVX @DPTR,A
?C0054:
MOV DPTR,#j?957
MOVX A,@DPTR
MOV R7,A
CLR C
SUBB A,#02H
JC $ + 5H
LJMP ?C0055
; { data_addr.word[1]=flashaddr+256*j;
; SOURCE LINE # 565
MOV A,R7
MOV R6,A
MOV DPTR,#flashaddr?954+01H
MOVX A,@DPTR
ADD A,#00H
MOV R7,A
MOV DPTR,#flashaddr?954
MOVX A,@DPTR
ADDC A,R6
LCALL L?0221
; Read_data(FLASH,num);
; SOURCE LINE # 566
MOV DPTR,#num?956
MOVX A,@DPTR
MOV R5,A
MOV R7,#02H
LCALL _Read_data
; sumbuff=sum_x_byte(wr_buff,num-1);
; SOURCE LINE # 567
LCALL L?0248
MOV DPTR,#num?956
MOVX A,@DPTR
DEC A
MOV R5,A
LCALL _sum_x_byte
;---- Variable 'sumbuff?958' assigned to Register 'R7' ----
; if(sumbuff+0x33==wr_buff[num-1])
; SOURCE LINE # 568
MOV A,R7
ADD A,#033H
MOV R7,A
CLR A
RLC A
MOV R6,A
MOV DPTR,#num?956
MOVX A,@DPTR
ADD A,#LOW (wr_buff+0FFFFH)
MOV DPL,A
CLR A
ADDC A,#HIGH (wr_buff+0FFFFH)
MOV DPH,A
MOVX A,@DPTR
XRL A,R7
JNZ ?C0204
MOV A,R6
?C0204:
JNZ ?C0056
; { if(compare_x_byte(wr_buff,&ram[ramaddr],num-1)==1)
; SOURCE LINE # 569
MOV DPTR,#ramaddr?955
INC DPTR
MOVX A,@DPTR
LCALL L?0261
MOV DPTR,#?_compare_x_byte?BYTE+03H
LCALL ?C?PSTXDATA
MOV DPTR,#num?956
MOVX A,@DPTR
DEC A
MOV DPTR,#?_compare_x_byte?BYTE+06H
MOVX @DPTR,A
MOV R2,#HIGH (wr_buff)
MOV R1,#LOW (wr_buff)
LCALL _compare_x_byte
CJNE R7,#01H,?C0058
; { data_addr.word[1]=ramaddr;
; SOURCE LINE # 570
MOV DPTR,#ramaddr?955
MOVX A,@DPTR
MOV R7,A
INC DPTR
MOVX A,@DPTR
XCH A,R7
LCALL L?0221
; Write_data(RAM,num-1);
; SOURCE LINE # 571
MOV DPTR,#num?956
MOVX A,@DPTR
DEC A
MOV R5,A
CLR A
MOV R7,A
LCALL _Write_data
; }
; SOURCE LINE # 572
?C0058:
; value=0;
; SOURCE LINE # 573
CLR A
MOV DPTR,#value?959
MOVX @DPTR,A
; break;
; SOURCE LINE # 574
SJMP ?C0055
; }
; SOURCE LINE # 575
; }
; SOURCE LINE # 576
?C0056:
MOV DPTR,#j?957
MOVX A,@DPTR
INC A
MOVX @DPTR,A
LJMP ?C0054
?C0055:
; return value;
; SOURCE LINE # 577
MOV DPTR,#value?959
MOVX A,@DPTR
MOV R7,A
; }
; SOURCE LINE # 578
?C0059:
RET
; END OF _recover_item
; //======================================================
; //函数功能:恢复参数
; //
; //======================================================
; void Recover_prim(void)
RSEG ?PR?Recover_prim?MAIN
Recover_prim:
USING 0
; SOURCE LINE # 583
; { unsigned char i;
; SOURCE LINE # 584
; addr_baseonIDandtype(RAM,ID_PRIOXUL); //取指针
; SOURCE LINE # 585
MOV R5,#010H
LCALL L?0243
; if(recover_item(FL_canshu01+130,(*ID_coretalbpoint[0]).dataaddr,3)==1) //如果恢复需量参数错误
; SOURCE LINE # 586
LCALL L?0217
MOV R3,#03H
MOV R7,#082H
LCALL L?0272
CJNE R7,#01H,?C0060
; { wr_buff[0]=0;
; SOURCE LINE # 587
CLR A
MOV DPTR,#wr_buff
MOVX @DPTR,A
; wr_buff[1]=0x05; //默认参数15分钟
; SOURCE LINE # 588
MOV A,#05H
; data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr;
; SOURCE LINE # 589
LCALL L?0215
LCALL L?0220
; Write_data(RAM,2);
; SOURCE LINE # 590
MOV R5,#02H
CLR A
MOV R7,A
LCALL _Write_data
; }
; SOURCE LINE # 591
?C0060:
;
; addr_baseonIDandtype(RAM,ID_CHANGSHU);
; SOURCE LINE # 593
MOV R5,#00H
LCALL L?0243
; if(recover_item(FL_canshu01+133,(*ID_coretalbpoint[0]).dataaddr,4)==1) //如果脉冲常数恢复错误
; SOURCE LINE # 594
LCALL L?0217
MOV R7,#085H
LCALL L?0237
CJNE R7,#01H,?C0061
; { wr_buff[0]=0;
; SOURCE LINE # 595
CLR A
MOV DPTR,#wr_buff
MOVX @DPTR,A
; wr_buff[1]=0x32; //默认为3200
; SOURCE LINE # 596
INC DPTR
MOV A,#032H
MOVX @DPTR,A
; wr_buff[2]=0;
; SOURCE LINE # 597
CLR A
; data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr;
; SOURCE LINE # 598
LCALL L?0215
LCALL L?0220
; Write_data(RAM,3);
; SOURCE LINE # 599
LCALL L?0282
; }
; SOURCE LINE # 600
?C0061:
;
; addr_baseonIDandtype(RAM,ID_BANTRATA);
; SOURCE LINE # 602
MOV R5,#050H
LCALL L?0268
; if(recover_item(FL_canshu01+137,(*ID_coretalbpoint[0]).dataaddr,2)==1) //如果恢复波特率出错
; SOURCE LINE # 603
LCALL L?0217
MOV R7,#089H
LCALL L?0225
CJNE R7,#01H,?C0062
; { wr_buff[0]=0; //默认参数300
; SOURCE LINE # 604
CLR A
MOV DPTR,#wr_buff
; data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr;
; SOURCE LINE # 605
LCALL L?0216
LCALL L?0220
; Write_data(RAM,1);
; SOURCE LINE # 606
LCALL L?0267
; }
; SOURCE LINE # 607
?C0062:
;
; addr_baseonIDandtype(RAM,ID_COMADDR);
; SOURCE LINE # 609
MOV R5,#00H
LCALL L?0268
; if(recover_item(FL_canshu01+139,(*ID_coretalbpoint[0]).dataaddr,7)==1) //恢复表地址错误
; SOURCE LINE # 610
LCALL L?0217
MOV R3,#07H
MOV R7,#08BH
LCALL L?0272
CJNE R7,#01H,?C0063
; { for(i=0;i<6;i++)
; SOURCE LINE # 611
;---- Variable 'i?1060' assigned to Register 'R7' ----
?C0064:
; wr_buff[i]=0;
; SOURCE LINE # 612
MOV R7,#06H
MOV DPTR,#wr_buff
CLR A
?C0205:
MOVX @DPTR,A
INC DPTR
DJNZ R7,?C0205
?C0065:
; data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr; //默认通讯地址为0;
; SOURCE LINE # 613
LCALL L?0217
LCALL L?0220
; Write_data(RAM,6);
; SOURCE LINE # 614
MOV R5,#06H
CLR A
MOV R7,A
LCALL _Write_data
; }
; SOURCE LINE # 615
?C0063:
;
; addr_baseonIDandtype(RAM,ID_GATCUTPOW);
; SOURCE LINE # 617
MOV R5,#010H
LCALL L?0283
; if(recover_item(FL_canshu01+146,(*ID_coretalbpoint[0]).dataaddr,4)==1) //恢复失压门限出错
; SOURCE LINE # 618
LCALL L?0217
MOV R7,#092H
LCALL L?0237
CJNE R7,#01H,?C0067
; { wr_buff[0]=0x05;
; SOURCE LINE # 619
MOV A,#05H
; wr_buff[1]=0x00; //默认50v,10秒
; SOURCE LINE # 620
; wr_buff[2]=0x10;
; SOURCE LINE # 621
; data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr;
; SOURCE LINE # 622
LCALL L?0214
LCALL L?0220
; Write_data(RAM,3);
; SOURCE LINE # 623
LCALL L?0282
; }
; SOURCE LINE # 624
?C0067:
;
; addr_baseonIDandtype(RAM,ID_GATLOSTCUR);
; SOURCE LINE # 626
MOV R5,#00H
LCALL L?0283
; if(recover_item(FL_canshu01+150,(*ID_coretalbpoint[0]).dataaddr,4)==1) //恢复失流门限出错
; SOURCE LINE # 627
LCALL L?0217
MOV R5,A
MOV R4,B
MOV R3,#04H
MOV R7,#096H
MOV R6,#078H
LCALL _recover_item
CJNE R7,#01H,?C0068
; { wr_buff[0]=0x50;
; SOURCE LINE # 628
MOV A,#050H
; wr_buff[1]=0x00; //默认50%,10秒
; SOURCE LINE # 629
; wr_buff[2]=0x10;
; SOURCE LINE # 630
; data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr;
; SOURCE LINE # 631
LCALL L?0214
LCALL L?0220
; Write_data(RAM,3);
; SOURCE LINE # 632
MOV R5,#03H
CLR A
MOV R7,A
LCALL _Write_data
; }
; SOURCE LINE # 633
?C0068:
;
; addr_baseonIDandtype(RAM,ID_DATAREADMETER);
; SOURCE LINE # 635
MOV R5,#030H
MOV R4,#080H
CLR A
MOV R7,A
LCALL _addr_baseonIDandtype
; if(recover_item(FL_canshu01+154,(*ID_coretalbpoint[0]).dataaddr,2)==1) //抄表日
; SOURCE LINE # 636
LCALL L?0217
MOV R7,#09AH
LCALL L?0225
CJNE R7,#01H,?C0069
; { wr_buff[0]=0x28; //默认为28日
; SOURCE LINE # 637
MOV DPTR,#wr_buff
MOV A,#028H
; data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr;
; SOURCE LINE # 638
LCALL L?0216
LCALL L?0220
; Write_data(RAM,1);
; SOURCE LINE # 639
LCALL L?0267
; }
; SOURCE LINE # 640
?C0069:
;
; addr_baseonIDandtype(RAM,ID_PRIOCOSENG);
; SOURCE LINE # 642
MOV R5,#050H
MOV R4,#080H
CLR A
MOV R7,A
LCALL _addr_baseonIDandtype
; if(recover_item(FL_canshu01+156,(*ID_coretalbpoint[0]).dataaddr,2)==1) //功率因数计量周期
; SOURCE LINE # 643
LCALL L?0217
MOV R7,#09CH
LCALL L?0244
CJNE R7,#01H,?C0070
; { wr_buff[0]=0x05; //15分钟
; SOURCE LINE # 644
MOV DPTR,#wr_buff
MOV A,#05H
; data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr;
; SOURCE LINE # 645
LCALL L?0216
LCALL L?0220
; Write_data(RAM,1);
; SOURCE LINE # 646
MOV R5,#01H
CLR A
MOV R7,A
LCALL _Write_data
; }
; SOURCE LINE # 647
?C0070:
;
; addr_baseonIDandtype(RAM,ID_TIMERETUN);
; SOURCE LINE # 649
MOV R5,#00H
MOV R4,#084H
CLR A
MOV R7,A
LCALL _addr_baseonIDandtype
; if(recover_item(FL_canshu01+158,(*ID_coretalbpoint[0]).dataaddr,2)==1) //轮显时间
; SOURCE LINE # 650
LCALL L?0217
MOV R7,#09EH
LCALL L?0244
CJNE R7,#01H,?C0072
; { wr_buff[0]=8; //5秒
; SOURCE LINE # 651
MOV DPTR,#wr_buff
MOV A,#08H
; data_addr.word[1]=(*ID_coretalbpoint[0]).dataaddr;
; SOURCE LINE # 652
LCALL L?0216
LCALL L?0220
; Write_data(RAM,1);
; SOURCE LINE # 653
MOV R5,#01H
CLR A
MOV R7,A
LCALL _Write_data
; }
; SOURCE LINE # 654
; }
; SOURCE LINE # 655
?C0072:
RET
L?0225:
MOV R5,A
MOV R4,B
MOV R3,#02H
MOV R6,#078H
LCALL _recover_item
RET
L?0237:
MOV R5,A
MOV R4,B
MOV R3,#04H
MOV R6,#078H
LCALL _recover_item
RET
L?0243:
MOV R4,#080H
CLR A
MOV R7,A
LCALL _addr_baseonIDandtype
RET
L?0244:
MOV R5,A
MOV R4,B
MOV R3,#02H
MOV R6,#078H
LCALL _recover_item
RET
L?0267:
MOV R5,#01H
CLR A
MOV R7,A
LCALL _Write_data
RET
L?0268:
MOV R4,#082H
CLR A
MOV R7,A
LCALL _addr_baseonIDandtype
RET
L?0272:
MOV R5,A
MOV R4,B
MOV R6,#078H
LCALL _recover_item
RET
L?0282:
MOV R5,#03H
CLR A
MOV R7,A
LCALL _Write_data
RET
L?0283:
MOV R4,#083H
CLR A
MOV R7,A
LCALL _addr_baseonIDandtype
RET
; END OF Recover_prim
;
; //====================================================
; //函数功能:恢复校表参数
; //
; //===================================================
; void Recover_meter(void)
RSEG ?PR?Recover_meter?MAIN
Recover_meter:
USING 0
; SOURCE LINE # 661
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -