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

📄 save_data.asm

📁 基于PL3000芯片的单相复费率多功能电表的应用程序。
💻 ASM
字号:
;************************************************************
;文档类型: 原代码 
;项目编号: 
;文档编号: 
;修订版本: v1.0
;生成日期: 2005.6.6
;文档作者: LIHENG
;审    核: 
;************************************************************
;相关文档: 
;文档编号      
;************************************************************
;修订版本: 
;修订版本: 
;************************************************************
$INCLUDE	(RAML128.INC)
$INCLUDE	(RAMH128.INC)
$INCLUDE	(24ADDR.INC)
$INCLUDE	(IO.INC)
$INCLUDE	(RAM.INC)
$INCLUDE	(PL3200.INC)

CODE_REG	SEGMENT	CODE
RSEG		CODE_REG
PUBLIC          SAVE_NOW_FL_INT
PUBLIC          SAVE_NOW_ALL_PLS
PUBLIC          SAVE_PLS_24
;PUBLIC          SAVE_W_PLS_RAM_24
PUBLIC          WR_MTR_RELY
;PUBLIC          SAVE_NOW_W_INT
PUBLIC          SAVE_SZ
PUBLIC          SAVE_DIS_CRLB
;PUBLIC          SAVE_OPEN_TIME
;PUBLIC          SAVE_STOP_TIME
;PUBLIC          SAVE_OPEN_JL
;PUBLIC          SAVE_STOP_JL
;PUBLIC          SAVE_STOP_ONE
PUBLIC          SAVE_FL_FLOAT
;PUBLIC          SAVE_W_FLOAT
;PUBLIC          SAVE_NOW_FX_W_INT
;PUBLIC          SAVE_FX_W_FLOAT
;*******************************;调用子程序情况:
EXTRN   CODE(WR_PARA_TO_24)
EXTRN   CODE(RESET_SYS)
;EXTRN   CODE(RD24_DO_CHK)
;**************************************************************
;保存当前费率整数, 24C01 BCD  
;IN:WR_BUF0,1,2,3; FL_NUM=2、3、4
;OUT:
;WP_CTR=#'W' AND 校验必须通过
;**************************************************************
ERR_26:		JMP	RESET_SYS
SAVE_NOW_FL_INT:NOP
		NOP
		JB	WP,ERR_26
                		
		CLR	C
		MOV	A,FL_NUM	;费率数为2,3,4
		SUBB	A,#2
		JC	ERR_26
		CJNE    A,#3,SAVE_NOW_FL_INT1	        
	        JMP     ERR_26
	        
SAVE_NOW_FL_INT1:CJNE    A,#6,SAVE_NOW_FL_INT2
SAVE_NOW_FL_INT3:
		MOV	B,#08H
		MUL	AB
		ADD	A,#PFL2_INT_24
		MOV	ADDR_24,A
		MOV	WR_ID,#WR_2410
		MOV	WR_N,#5  
		MOV     A,#5
		ADD     A,#'X'
		MOV     WR_N_X,A          
		CALL    WR_PARA_TO_24
		RET
SAVE_NOW_FL_INT2: JC     SAVE_NOW_FL_INT3
                JMP    ERR_26		
;**************************************************************
;保存当前费率小数, 24C01 BCD  
;IN:WR_BUF0,1,2,3; FL_NUM=2、3、4
;OUT:
;WP_CTR=#'W' AND 校验必须通过
;**************************************************************
SAVE_FL_FLOAT:
                NOP
		NOP
		JB	WP,ERR_26
               		
		CLR	C
		MOV	A,FL_NUM	;费率数为2,3,4
		SUBB	A,#2
		JC	ERR_26
		CJNE    A,#3,SAVE_NOW_FLOAT_Z1	        
	        JMP     ERR_26
	        
SAVE_NOW_FLOAT_Z1:CJNE    A,#6,SAVE_NOW_FLOAT_Z2
SAVE_NOW_FLOAT_Z3:
		MOV	B,#04H
		MUL	AB
		ADD	A,#PFL2_FLOAT_24
		MOV	ADDR_24,A
		MOV	WR_ID,#WR_2410
		MOV	WR_N,#2  
		MOV     A,#2
		ADD     A,#'X'
		MOV     WR_N_X,A          
		CALL    WR_PARA_TO_24
		RET
SAVE_NOW_FLOAT_Z2: JC     SAVE_NOW_FLOAT_Z3
                JMP    ERR_26		
	

;读24中的小数
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				
;**************************************************************
;保存当前各种需要保存的脉冲,24XX,BIN读(B)字节 掉电检测,费率转换
;IN:,WR_BUF0,1  FL_NUM=2、3、4,6、7、8
;OUT:
;**************************************************************
SAVE_NOW_ALL_PLS:
                MOV	R0,#NOW_PLS_RAM
		MOV     A,@R0
		ADD     A,#'X'
		INC     R0
		XRL     A,@R0
	        JNZ     NO_SAVE
     
		MOV	R0,#NOW_PLS_RAM   ;保存实际脉冲和小数12.3LI
		MOV	WR_BUF0,@R0
		MOV     @R0,#0          ;转存到WR寄存器后清零当前
		INC	R0
		MOV	WR_BUF1,@R0
		MOV     @R0,#0		   
	        MOV	WP_CTR,#'W'
SAVE_PLS_24:  	MOV	ADDR_24,#PFL_PLS_24
		MOV	WR_ID,#WR_2410
                MOV	WR_N,#2  
                MOV     A,#2
		ADD     A,#'X'
		MOV     WR_N_X,A        
		CLR     WP
		CALL	WR_PARA_TO_24      
			
NO_SAVE:	RET		
;*****************************************
;校验无功脉冲并保存到24  
;*****************************************
;SAVE_W_PLS_RAM_24:
;               	MOV	R0,#NOW_W_PLS_RAM
;		MOV     A,@R0
;		ADD     A,#'X'
;		INC     R0
;		XRL     A,@R0
;	        JNZ     OK_W_RET
	        
;                MOV	R0,#NOW_W_PLS_RAM   ;保存实际脉冲和小数12.7LI
;		MOV	WR_BUF0,@R0
;		MOV     @R0,#0          ;转存到WR寄存器后清零当前
;		INC	R0
;		MOV	WR_BUF1,@R0
;		MOV     @R0,#0		
		
;		MOV     WP_CTR,#'W'
;                MOV	ADDR_24,#QFL_PLS_24
;		MOV	WR_ID,#WR_2410
;                MOV	WR_N,#2          
;                MOV     A,#2
;		ADD     A,#'X'
;		MOV     WR_N_X,A
;		CLR     WP
;		CALL	WR_PARA_TO_24
      	
;OK_W_RET:       RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;无功小数保存
;SAVE_W_FLOAT:   NOP
;                MOV     R0,#NOW_FLOAT_WG
;                MOV     A,@R0
;		ADD     A,#'X'
;		INC     R0
;		XRL     A,@R0
;	        JNZ     NO_SAVE_W
;	        MOV     R0,#NOW_FLOAT_WG
;                MOV     WR_BUF0,@R0
;                INC     R0
;                MOV     WR_BUF1,@R0
;                MOV     WP_CTR,#'W'
;                MOV	ADDR_24,#QFL_FLOAT_24
;		MOV	WR_ID,#WR_2410
;                MOV	WR_N,#2         
;                MOV     A,#2
;		ADD     A,#'X'
;		MOV     WR_N_X,A 
;		CLR     WP
;		CALL	WR_PARA_TO_24
;NO_SAVE_W:      NOP
;               RET
              
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;反相无功小数保存
;SAVE_FX_W_FLOAT:NOP
;               MOV     R0,#NOW_FLOAT_FWG
;                MOV     A,@R0
;		ADD     A,#'X'
;		INC     R0
;		XRL     A,@R0
;	        JNZ     NO_SAVE_F_W
;	        MOV     R0,#NOW_FLOAT_FWG
;                MOV     WR_BUF0,@R0
;                INC     R0
;                MOV     WR_BUF1,@R0
;                MOV     WP_CTR,#'W'
;                MOV	ADDR_24,#QFL_FLOAT_FX_24
;		MOV	WR_ID,#WR_2410
;                MOV	WR_N,#2         
;                MOV     A,#2
;		ADD     A,#'X'
;		MOV     WR_N_X,A 
;		CLR     WP
;		CALL	WR_PARA_TO_24
;NO_SAVE_F_W:    NOP
;               RET                
;**************************************************************
;写继电器,进行校验 24C01 BIN	读(B)字节,
;RAM 地址R0,24C01地址R2, R4=Device ID/W        WR_2402
;OPEN==5FH;CLOSE==50H	;IF ERR RELY==ON	MTR_RLY
;**************************************************************
ERR_344:	JMP	RESET_SYS
WR_MTR_RELY:	NOP
		NOP
		JB	WP,ERR_344
               
		MOV	ADDR_24,#RLY_24
		MOV	WR_ID,#WR_2414
		MOV	WP_CTR,#'W'
		MOV	WR_N,#3          
		MOV     A,#3
		ADD     A,#'X'
		MOV     WR_N_X,A  
		CALL    WR_PARA_TO_24
		
		SETB	DO_RELY
		MOV	A,WR_BUF0
		SETB	RLY_BIT
		CJNE	A,#50H,RELY_ON
		CLR	RLY_BIT
RELY_ON:	RET
;*********************************
;保存无功整数电量
;*********************************		
;SAVE_NOW_W_INT:
;                MOV     A,FL_NUM_BAK   ;FL_NUM_BAK 1=(总)正,0为反 
;                JZ      SAVE_NOW_FX_W_INT   
;		MOV	ADDR_24,#QFL_INT_24 
;		MOV	WR_ID,#WR_2410  
;		MOV	WR_N,#5     
;		MOV     A,#5
;		ADD     A,#'X'
;		MOV     WR_N_X,A       
;		CALL    WR_PARA_TO_24
;		RET

;*********************************
;保存反相无功整数电量
;*********************************		
;SAVE_NOW_FX_W_INT:
;		MOV	ADDR_24,#QFL_FX_INT_24 
;		MOV	WR_ID,#WR_2410  
;		MOV	WR_N,#5     
;		MOV     A,#5
;		ADD     A,#'X'
;		MOV     WR_N_X,A       
;		CALL    WR_PARA_TO_24
;		RET			
;******************************************************
;保存时钟系数
;******************************************************
SAVE_SZ:      
                CLR     WP 
       	        MOV     DPL,#HW_BUF6
       	        MOVX    A,@DPTR
       	        MOV     WR_BUF0,A
       		
                MOV	WR_N,#2       
                MOV     A,#2
		ADD     A,#'X'
		MOV     WR_N_X,A    
		MOV	ADDR_24,#SZ_24
		MOV	WR_ID,#WR_2414
		CALL    WR_PARA_TO_24
         	RET 

;**************************************************************
;红外设置循显数据项
;**************************************************************	
ERR_512:	JMP	RESET_SYS
SAVE_DIS_CRLB:	MOV	A,HW_RS          
		CJNE	A,#'h',ERR_512
		CLR     WP
		MOV     DPL,#HW_BUF6
       	        MOVX    A,@DPTR
       	        MOV     WR_BUF0,A
       	        INC     DPTR
       	        MOVX    A,@DPTR
       	        MOV     WR_BUF1,A
       	        INC     DPTR
       	        MOVX    A,@DPTR
       	        MOV     WR_BUF2,A
       	        INC     DPTR
       	        MOVX    A,@DPTR
       	        MOV     WR_BUF3,A
		
                MOV	WR_N,#5       
                MOV     A,#5
		ADD     A,#'X'
		MOV     WR_N_X,A    
		MOV	ADDR_24,#DIS_CRLB_24
		MOV	WR_ID,#WR_2414
		CALL    WR_PARA_TO_24
		
		MOV     R0,#LCD_CTRL_BX
		MOV     A,@R0
		CPL     A
		MOV     @R0,A
		RET	

;*********************************
;保存来电时刻
;*********************************		
;SAVE_OPEN_TIME:	                
;                MOV     ADDR_24,A
;		MOV	WR_ID,#WR_2416 
;		MOV	WR_N,#6    
;		MOV     A,#6
;		ADD     A,#'X'
;		MOV     WR_N_X,A        
;		CALL    WR_PARA_TO_24
;		RET
;*********************************
;保存停电时刻
;*********************************		
;SAVE_STOP_TIME:        
;               MOV     ADDR_24,A
;		MOV	WR_ID,#WR_2416 
;		MOV	WR_N,#6 
;		MOV     A,#6
;		ADD     A,#'X'
;		MOV     WR_N_X,A           
;		CALL    WR_PARA_TO_24
;		RET
;******************************************************
;保存来电时刻记录
;******************************************************
;SAVE_OPEN_JL:  	MOV	WR_N,#2
;               MOV     A,#2
;		ADD     A,#'X'
;		MOV     WR_N_X,A
;		MOV	ADDR_24,#OPEN_JL_24
;		MOV	WR_ID,#WR_2416
;		CALL    WR_PARA_TO_24              
;         	RET         	
;******************************************************
;保存停电时刻记录
;******************************************************
;SAVE_STOP_JL:  	MOV	WR_N,#2
;               MOV     A,#2
;		ADD     A,#'X'
;		MOV     WR_N_X,A
;		MOV	ADDR_24,#STOP_JL_24
;		MOV	WR_ID,#WR_2416
;		CALL    WR_PARA_TO_24              
 ;        	RET 

;*********************************
;保存停电时刻快速保存
;*********************************		
;SAVE_STOP_ONE:  MOV	EXT_ADR,#82H	;读分,时钟
;		MOV     WR_BUF0,EXT_DAT
;		MOV	EXT_ADR,#83H	;读时,时钟
;		MOV	WR_BUF1,EXT_DAT		
;		MOV	EXT_ADR,#85H	;读日,时钟
;		MOV     WR_BUF2,EXT_DAT
;		MOV	EXT_ADR,#86H	;读月,时钟
;		MOV     WR_BUF3,EXT_DAT
;		MOV	EXT_ADR,#87H	;读年,时钟
;		MOV	WR_BUF4,EXT_DAT
;        	MOV	ADDR_24,#STOP_ONE_24
;		MOV	WR_ID,#WR_2410 
;		MOV	WR_N,#6    
;		MOV     A,#6
;		ADD     A,#'X'
;		MOV     WR_N_X,A        
;		CALL    WR_PARA_TO_24
;		RET


			
		END

⌨️ 快捷键说明

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