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

📄 rd_data.asm

📁 基于PL3000芯片的单相复费率多功能电表的应用程序。
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;************************************************************
;文档类型: 原代码 
;项目编号: 
;文档编号: 
;修订版本: v1.0
;生成日期: 2005.6.3
;文档作者: LIHENG
;审    核: 
;************************************************************
;相关文档: RS485协议处理
;文档编号      说明 (读数据处理)
;************************************************************
;修订版本: 
;修订版本: 
;************************************************************
$INCLUDE	(RAML128.INC)
$INCLUDE	(RAMH128.INC)
$INCLUDE	(24ADDR.INC)
$INCLUDE	(PL3200.INC)
$INCLUDE	(CONST.INC)

CODE_REG	SEGMENT	CODE
RSEG		CODE_REG
;PUBLIC          RD_AUTO_DATE
PUBLIC          RD_YMD
;PUBLIC          RD_KEY0
PUBLIC          RD_MTR_RELY
PUBLIC          RD_REV_BCD
PUBLIC          RD_SNO
PUBLIC          RD_HMS
PUBLIC          RD_FL

PUBLIC          RD_NOW_FL_INT
PUBLIC          RD_NOW_ZDL
;PUBLIC          RD_NOW_W_INT;2004.12.08LI
;PUBLIC          RD_NOW_XL
;PUBLIC          RD_NOW_XL_TIME
;PUBLIC          RD_NOW_Y_XL
;PUBLIC          RD_NOW_Y_XL_TIME


;PUBLIC          RD_LAST_W_INT; 读上月冻结无功电量
;PUBLIC          RD_LAST_FL_INT
;PUBLIC          RD_LAST_ZDL
;PUBLIC          RD_LAST_MON
;PUBLIC          RD_LAST_XL
;PUBLIC          RD_LAST_XL_TIME

;PUBLIC          RD_ZR_W_INT
;PUBLIC          RD_ZR_FL_INT
;PUBLIC          RD_ZR_ZDL
;PUBLIC          RD_ZR_DAY
;PUBLIC          RD_ZR_XL
;PUBLIC          RD_ZR_XL_TIME

PUBLIC          RD_SZ
PUBLIC          RD_DIS_CRLB
;PUBLIC          RD_STOP_JL
;PUBLIC          RD_OPEN_JL
;PUBLIC          RD_OPEN_TIME
;PUBLIC          RD_STOP_TIME
;PUBLIC          RD_STOP_ONE
PUBLIC          CAL_DL_SUM
;PUBLIC          RD_AUTO_DAY
PUBLIC          RD_V_A
PUBLIC          RD_I_A
PUBLIC          RD_VI

PUBLIC          RD_FLOAT_ZYG
;PUBLIC          RD_FLOAT_FYG
;PUBLIC          RD_FLOAT_WG
;PUBLIC          RD_WG_JLFS
;PUBLIC          RD_YG_JLFS
;PUBLIC          RD_NOW_FX_W_INT
;PUBLIC          RD_LAST_FX_W_INT
;PUBLIC          RD_FLOAT_FX_WG
;PUBLIC          RD_ZR_FX_W_INT

;PUBLIC          RD_JL_ZR_W
;PUBLIC          RD_JL_ZR_ZDL
;PUBLIC          RD_JL_ZR_FL_INT
;PUBLIC          RD_JL_LAST_W
;PUBLIC          RD_JL_LAST_ZDL
;PUBLIC          RD_JL_LAST_FL_INT
;PUBLIC          RD_JL_NOW_W
;PUBLIC          RD_JL_NOW_ZDL
;PUBLIC          RD_JL_NOW_FL_DL

;PUBLIC          RD_TO_CAL
PUBLIC          CAL_TO_RD
PUBLIC          CAL_TO_0

PUBLIC          RD_NOW_FL_DL
;PUBLIC          RD_NOW_FX_W_DL
PUBLIC          RD_JLMX
;*******************************;调用子程序情况:
EXTRN   CODE(RD24_DO_CHK)
EXTRN   CODE(RESET_SYS)

;****************************************************
;读冻结日,时
;OUT:RD_BUF0,1,2
;****************************************************
RD_JLMX:	
		MOV	RD_N,#3
		MOV	ADDR_24,#JLMX_24
		MOV	WR_ID,#WR_2414		;器件地址/写
		CALL    RD24_DO_CHK
		JNC     RD_JLMX1
		RET

RD_JLMX1:
		MOV	RD_BUF0,#7CH        ;
		MOV	RD_BUF1,#3BH
		RET
		
;****************************************************
;读冻结时
;OUT:RD_BUF0,
;****************************************************
;RD_AUTO_DAY:	
;		MOV	RD_N,#2
;		MOV	ADDR_24,#AUTO_H_24
;		MOV	WR_ID,#WR_2414		;器件地址/写
;		CALL    RD24_DO_CHK
;		JNC     DEF_AUTO_DAY 	
;		RET

;DEF_AUTO_DAY:
;		MOV	RD_BUF0,#20H        ;自动抄表时的默认值
;		RET		
;;****************************************************
;读有功计量方式
;OUT:RD_BUF0,
;****************************************************
;RD_YG_JLFS:	
;		MOV	RD_N,#2
;		MOV	ADDR_24,#YG_JLFS_24
;		MOV	WR_ID,#WR_2414		;器件地址/写
;		CALL    RD24_DO_CHK
;		JNC     DEF_YG_JLFS
;		MOV     A,RD_BUF0
;		CJNE    A,#11H,DEF_YG_JLFS 	
;		RET

;DEF_YG_JLFS:
;		MOV	RD_BUF0,#10H        ;读有功计量方式的默认值
;		RET
		
;****************************************************
;读无功计量方式
;OUT:RD_BUF0,
;****************************************************
;RD_WG_JLFS:	
;		MOV	RD_N,#2
;		MOV	ADDR_24,#WG_JLFS_24
;		MOV	WR_ID,#WR_2414		;器件地址/写
;		CALL    RD24_DO_CHK
;		JNC     DEF_WG_JLFS 
;		MOV     A,RD_BUF0
;		CJNE    A,#11H,DEF_WG_JLFS	
;		RET

;DEF_WG_JLFS:
;		MOV	RD_BUF0,#10H        ;读无功计量方式的默认值
;		RET		
		
;**************************************************************
;		;**读时,分,秒
;**************************************************************
RD_HMS:
		MOV	EXT_ADR,#81H	;读秒,时钟
		MOV     RD_BUF0,EXT_DAT
		MOV	EXT_ADR,#82H	;读分,时钟
		MOV     RD_BUF1,EXT_DAT
		MOV	EXT_ADR,#83H	;读时,时钟
		MOV	RD_BUF2,EXT_DAT
		RET	
;**************************************************************
;		;**读日,月,年
;**************************************************************
RD_YMD:
		MOV	EXT_ADR,#85H	;读日,时钟
		MOV     RD_BUF0,EXT_DAT
		MOV	EXT_ADR,#86H	;读月,时钟
		MOV     RD_BUF1,EXT_DAT
		MOV	EXT_ADR,#87H	;读年,时钟
		MOV	RD_BUF2,EXT_DAT
		RET
;**************************************************************
;读密码,24XX BCD	
;**************************************************************
;RD_KEY0:		
;		MOV	RD_N,#5           ;2004.6.12
;		MOV	ADDR_24,#KEY_24
;		MOV	WR_ID,#WR_2414
;		CALL    RD24_DO_CHK
;		JNC     RD_KEY_MR0
;		RET

;RD_KEY_MR0:     MOV     RD_BUF0,#DEF_POW      ;默认密码为00111111
;                MOV     RD_BUF1,#DEF_KEY1
;                MOV     RD_BUF2,#DEF_KEY2
;                MOV     RD_BUF3,#DEF_KEY3	
;		RET
;**************************************************************
;读继电器,进行校验 24C01 BIN	
;OPEN==5FH;CLOSE==50H	;IF ERR RELY==ON	MTR_RLY
;**************************************************************
RD_MTR_RELY:
		MOV	RD_N,#3
		MOV	ADDR_24,#RLY_24
		MOV	WR_ID,#WR_2414		;器件地址/写
		CALL    RD24_DO_CHK
		JNC     RD_MTR_RLY_MR 
		JMP	RD_MTR_RLY2
				
RD_MTR_RLY_MR:
		MOV	RD_BUF0,#5FH	;2004.6.12,错误后默认闭合=5FH

RD_MTR_RLY2:
		SETB	RLY_BIT
RLY_OFF:	
		MOV	A,RD_BUF0
		CJNE	A,#50H,RD_MTR_RLY_RET
		CLR	RLY_BIT
RD_MTR_RLY_RET:	
		RET
;**************************************************************
;READ REV FORM 24C08 BIN ; 默认标准转速1600
;OUT:	RD_BUF0,1,2
;**************************************************************
RD_REV_BCD:
		MOV	RD_BUF0,#REV_L		;低位
		MOV	RD_BUF1,#REV_H		;高位;默认
		MOV	RD_BUF2,#REV_MH		;最高高位;默认
		RET
;**************************************************************
;读6位表号,数据放在RD_BUF0--5
;**************************************************************
RD_SNO:		
		MOV	RD_N,#7
		MOV	ADDR_24,#SNO_24
		MOV	WR_ID,#WR_2414
		CALL    RD24_DO_CHK
		JNC     MTR_SNO_RET
		RET		

MTR_SNO_RET:	MOV	RD_BUF0,#DEF_SNO0      ;默认通讯地址000000000001
		MOV	RD_BUF1,#DEF_SNO1
		MOV	RD_BUF2,#DEF_SNO2
		MOV	RD_BUF3,#DEF_SNO3
		MOV	RD_BUF4,#DEF_SNO4
		MOV	RD_BUF5,#DEF_SNO5
		RET
;**************************************************************
;读费率时段及费率号:    WR_2414  A为偏移量
;**************************************************************
RD_FL:         	MOV     ADDR_24,#FIRST_FL_T1_24 
	     	ADD     A,ADDR_24
		MOV     ADDR_24,A
		MOV	RD_N,#4
		MOV	WR_ID,#WR_2414		;器件地址/写
		CALL    RD24_DO_CHK   
		JNC     RD_FL_RET		  		 
             	MOV     A,RD_BUF0
		CJNE    A,#02H,RD_FL_X1          ;是峰费率吗
                RET
                
RD_FL_X1:       MOV     A,RD_BUF0
                CJNE    A,#03H,RD_FL_X2          ;是平费率吗
                RET
                
RD_FL_X2:       MOV     A,RD_BUF0
                CJNE    A,#04H,RD_FL_X3         ;是谷费率吗
                RET
                
RD_FL_X3:       MOV     RD_BUF0,#0
                MOV     RD_BUF1,#0
                MOV     RD_BUF2,#0               
RD_FL_RET:      RET 

;**************************************************************
;读A相电压修整系数
;**************************************************************
RD_V_A:		
		MOV	RD_N,#4
		MOV	ADDR_24,#V_A_24
		MOV	WR_ID,#WR_2414
		CALL    RD24_DO_CHK
		JNC      RD_VI_A_RET
		RET
		
RD_VI_A_RET:		
                MOV     RD_BUF0,#22H
		MOV     RD_BUF1,#22H
		MOV     RD_BUF2,#00H
		RET
;**************************************************************
;读A相电流修整系数
;**************************************************************
RD_I_A:		
		MOV	RD_N,#4
		MOV	ADDR_24,#I_A_24
		MOV	WR_ID,#WR_2414
		CALL    RD24_DO_CHK
		JNC      RD_VI_A_RET
		RET
				                           		
;**************************************************************
;读当前表当前费率整数,24XX BCD读(B)字节
;IN:,FL_NUM= 2、3、4 正向
;IN:,FL_NUM= 6、7、8 反向
;OUT:RD_BUF0,1,2,3,BUF0为低字节
;**************************************************************
EER_21:		JMP	RESET_SYS
RD_NOW_FL_INT:
		CLR	C
		MOV	A,FL_NUM	;费率数为2,3,4,
		SUBB	A,#2
		JC	EER_21
	        CJNE    A,#3,RD_NOW_FL_INT1	        
	        JMP     EER_21
	        
RD_NOW_FL_INT1:	CJNE    A,#6,RD_NOW_FL_INT2
RD_NOW_FL_INT3: MOV	B,#08H
		MUL	AB
		ADD	A,#PFL2_INT_24
		MOV	ADDR_24,A
		MOV	WR_ID,#WR_2410
		MOV	RD_N,#5
		CALL    RD24_DO_CHK
		RET
		
RD_NOW_FL_INT2: JC     RD_NOW_FL_INT3
                JMP    EER_21
;******************************************
;读当前费率电量(含整数和小数)
; FL_NUM=2、3、4   05-11-30  LIHENG
;******************************************
RD_NOW_FL_DL:   
                CALL    RD_FLOAT_ZYG
                MOV     RD_BUF6,RD_BUF0
                CALL	RD_NOW_FL_INT 
                MOV     RD_BUF0,RD_BUF6                       	        
		RET                                                               
;******************************************
;按计量方式读当前电量
; FL_NUM_BAK=2、3、4   05-11-30  LIHENG
;******************************************
;RD_JL_NOW_FL_DL:
;                CALL    CAL_TO_0
;                CALL    RD_YG_JLFS
;                MOV     A,RD_BUF0
;                CJNE    A,#11H,RD_JL_NOW_FL_INT1  ;=11 正+反

⌨️ 快捷键说明

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