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

📄 main.src

📁 电能表源码
💻 SRC
📖 第 1 页 / 共 5 页
字号:
;     { 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 + -