📄 rd_data.asm
字号:
;************************************************************
;文档类型: 原代码
;项目编号:
;文档编号:
;修订版本: 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 + -