📄 bcd_hex.asm
字号:
MOV DPTR,#RS485_CURRENT_ZR_ENERGY ;485表存贮区当前正向无功首地址
LCALL SAVE_METER485_VAR ;通信成功,存储读出的485电表参数
LJMP READ_FRAMES_OVER ;结束
FALSE_RETURN3:
MOV DPTR,#RS485_CURRENT_ZR_ENERGY ;485表存贮区当前正向无功首地址
JMP MAKE_DQ_ZX_WG_FRAMES ;把当前485表正向无功形成回应帧发送给集中器
READ_PULSE_DQ_ZX_WG:
MOV DPTR,#PULSE_CURRENT_ENERGY ;脉冲表当前电量首地址
MAKE_DQ_ZX_WG_FRAMES:
LCALL READ_FRAMES_ACK ;读正向无功回应帧
DZW_READ_METER485_OVER:
AJMP READ_DQ_WG_ERR ;回应帧发送完,退出.
;当前反向无功:数据标识:DI1:91,DI0:20------------------------------
READ_DQ_FX_WG:
CJNE A,#20H,READ_DQ_WG_ERR ;判断是反向无功否
LCALL JUDGE_WHAT_KIND_RAT_OR_VAR ;判断为何种费率
JNB PULSE_OR_485METER,READ_PULSE_DQ_FX_WG ;判断是读485表还是脉冲表
LCALL TERMINAL_CONNECT_485METER ;采集器与485表通信.
JNB TERMINAL_METER485_CONNECT_OK,FALSE_RETURN4;判断采集终端与485表通信成功否?
CLR TERMINAL_METER485_CONNECT_OK ;清此标志位
LCALL SEND_ONE_FRAMES_ACK ;发送读回应帧到集中器
MOV DPTR,#RS485_CURRENT_FR_ENERGY ;485表存贮区当前反向无功首地址
LCALL SAVE_METER485_VAR ;通信成功,存储读出的485电表参数
LJMP READ_FRAMES_OVER ;结束
FALSE_RETURN4:
MOV DPTR,#RS485_CURRENT_FR_ENERGY ;485表存贮区当前反向无功首地址
JMP MAKE_DQ_FX_WG_FRAMES ;把当前485表反向无功形成回应帧发送给集中器
READ_PULSE_DQ_FX_WG:
MOV DPTR,#PULSE_CURRENT_ENERGY ;脉冲表当前电量首地址
MAKE_DQ_FX_WG_FRAMES:
LCALL READ_FRAMES_ACK ;读当前反向无功回应帧
READ_DQ_WG_ERR:
LJMP READ_FRAMES_OVER ;结束帧处理
;------------------------------------
;读上月有功电量
READ_LAST_YG:
CJNE A,#94H,READ_LAST_WG ;判断是上月有功否?
MOV A,DATA_DI0 ;是上月有功,再判断是正向还是反向
ANL A,#0F0H ;屏蔽掉低4位
;上月正向有功:数据标识:DI1:94,DI0:10-----------------------
READ_LAST_ZX_YG:
CJNE A,#10H,READ_LAST_FX_YG ;判断是正向有功否
LCALL JUDGE_WHAT_KIND_RAT_OR_VAR ;判断为何种费率
JNB PULSE_OR_485METER,READ_PULSE_LAST_ZX_YG ;判断是读485表还是脉冲表
LCALL TERMINAL_CONNECT_485METER ;采集器与485表通信.
JNB TERMINAL_METER485_CONNECT_OK,FALSE_RETURN5;判断采集终端与485表通信成功否?
CLR TERMINAL_METER485_CONNECT_OK ;清此标志位
LCALL SEND_ONE_FRAMES_ACK ;发送读回应帧到集中器
MOV DPTR,#RS485_LAST_MONTH_ZA_ENERGY ;485表存贮区上月正向有功首地址
LCALL SAVE_METER485_VAR ;通信成功,存储读出的485电表参数
LJMP READ_FRAMES_OVER ;结束
FALSE_RETURN5:
MOV DPTR,#RS485_LAST_MONTH_ZA_ENERGY ;485表存贮区上月正向有功首地址
JMP MAKE_LAST_ZX_YG_FRAMES ;把当前485表正向有功形成回应帧发送给集中器
READ_PULSE_LAST_ZX_YG:
MOV DPTR,#PULSE_LAST_MONTH_ENERGY ;脉冲表上月电量首地址
MAKE_LAST_ZX_YG_FRAMES:
LCALL READ_FRAMES_ACK ;读上月正向有功回应帧
LZY_READ_METER485_OVER:
AJMP READ_LAST_YG_ERR
;上月反向有功:数据标识:DI1:94,DI0:20-------------------------
READ_LAST_FX_YG:
CJNE A,#20H,READ_LAST_YG_ERR ;判断是反向有功否
LCALL JUDGE_WHAT_KIND_RAT_OR_VAR ;判断为何种费率
JNB PULSE_OR_485METER,READ_PULSE_LAST_FX_YG ;判断是读485表还是脉冲表
LCALL TERMINAL_CONNECT_485METER ;采集器与485表通信.
JNB TERMINAL_METER485_CONNECT_OK,FALSE_RETURN6;判断采集终端与485表通信成功否?
CLR TERMINAL_METER485_CONNECT_OK ;清此标志位
LCALL SEND_ONE_FRAMES_ACK ;发送读回应帧到集中器
MOV DPTR,#RS485_LAST_MONTH_FA_ENERGY ;485表存贮区上月反向有功首地址
LCALL SAVE_METER485_VAR ;通信成功,存储读出的485电表参数
LJMP READ_FRAMES_OVER ;结束
FALSE_RETURN6:
MOV DPTR,#RS485_LAST_MONTH_FA_ENERGY ;485表存贮区上月反向有功首地址
JMP MAKE_LAST_FX_YG_FRAMES ;把当前485表反向有功形成回应帧发送给集中器
READ_PULSE_LAST_FX_YG:
MOV DPTR,#PULSE_LAST_MONTH_ENERGY ;脉冲表上月电量首地址
MAKE_LAST_FX_YG_FRAMES:
LCALL READ_FRAMES_ACK ;读上月反向有功回应帧
READ_LAST_YG_ERR:
LJMP READ_FRAMES_OVER ;结束帧处理
;------------------------------------
;读上月无功电量
READ_LAST_WG:
CJNE A,#95H,READ_LAST_LAST_YG ;判断是上月无功否?
MOV A,DATA_DI0 ;是上月无功,再判断是正向还是反向
ANL A,#0F0H ;屏蔽掉低4位
;上月正向无功:数据标识:DI1:95,DI0:10---------------------------
READ_LAST_ZX_WG:
CJNE A,#10H,READ_LAST_FX_WG ;判断是正向无功否
LCALL JUDGE_WHAT_KIND_RAT_OR_VAR ;判断为何种费率
JNB PULSE_OR_485METER,READ_PULSE_LAST_ZX_WG;判断是读485表还是脉冲表
LCALL TERMINAL_CONNECT_485METER ;采集器与485表通信.
JNB TERMINAL_METER485_CONNECT_OK,FALSE_RETURN7;判断采集终端与485表通信成功否?
CLR TERMINAL_METER485_CONNECT_OK ;清此标志位
LCALL SEND_ONE_FRAMES_ACK ;发送读回应帧到集中器
MOV DPTR,#RS485_LAST_MONTH_ZR_ENERGY ;485表存贮区上月正向无功首地址
LCALL SAVE_METER485_VAR ;通信成功,存储读出的485电表参数
LJMP READ_FRAMES_OVER ;结束
FALSE_RETURN7:
MOV DPTR,#RS485_LAST_MONTH_ZR_ENERGY ;485表存贮区上月正向无功首地址
JMP MAKE_LAST_ZX_WG_FRAMES ;把当前485表正向无功形成回应帧发送给集中器
READ_PULSE_LAST_ZX_WG:
MOV DPTR,#PULSE_LAST_MONTH_ENERGY ;脉冲表上月电量首地址
MAKE_LAST_ZX_WG_FRAMES:
LCALL READ_FRAMES_ACK ;读上月正向无功回应帧
LZW_READ_METER485_OVER:
AJMP READ_LAST_WG_ERR
;上月反向无功:数据标识:DI1:95,DI0:20------------------------------
READ_LAST_FX_WG:
CJNE A,#20H,READ_LAST_WG_ERR ;判断是反向无功否
LCALL JUDGE_WHAT_KIND_RAT_OR_VAR ;判断为何种费率
JNB PULSE_OR_485METER,READ_PULSE_LAST_FX_WG;判断是读485表还是脉冲表
LCALL TERMINAL_CONNECT_485METER ;采集器与485表通信.
JNB TERMINAL_METER485_CONNECT_OK,FALSE_RETURN8;判断采集终端与485表通信成功否?
CLR TERMINAL_METER485_CONNECT_OK ;清此标志位
LCALL SEND_ONE_FRAMES_ACK ;发送读回应帧到集中器
MOV DPTR,#RS485_LAST_MONTH_FR_ENERGY ;485表存贮区上月反向无功首地址
LCALL SAVE_METER485_VAR ;通信成功,存储读出的485电表参数
LJMP READ_FRAMES_OVER ;结束
FALSE_RETURN8:
MOV DPTR,#RS485_LAST_MONTH_FR_ENERGY ;485表存贮区上月反向无功首地址
JMP MAKE_LAST_FX_WG_FRAMES ;把当前485表上月反向无功形成回应帧发送给集中器
READ_PULSE_LAST_FX_WG:
MOV DPTR,#PULSE_LAST_MONTH_ENERGY ;脉冲表上月电量首地址
MAKE_LAST_FX_WG_FRAMES:
LCALL READ_FRAMES_ACK ;读上月反向无功回应帧
READ_LAST_WG_ERR:
LJMP READ_FRAMES_OVER ;结束帧处理
;------------------------------------
;读上上月有功电量;485表内部没有上上月电量.
READ_LAST_LAST_YG:
CJNE A,#98H,READ_LAST_LAST_WG ;判断是上上月有功否?
MOV A,DATA_DI0 ;是上上月有功,再判断是正向还是反向
ANL A,#0F0H ;屏蔽掉低4位
;上上月正向有功:数据标识:DI1:98,DI0:10---------------------------
READ_LAST_LAST_ZX_YG:
CJNE A,#10H,READ_LAST_LAST_FX_YG ;判断是正向有功否
LCALL JUDGE_WHAT_KIND_RAT_OR_VAR ;判断为何种费率
JNB PULSE_OR_485METER,READ_PULSE_LAST_LAST_ZX_YG ;判断是读485表还是脉冲表
MOV DPTR,#RS485_LAST_LAST_ZA_ENERGY ;485表存贮区上上月正向有功首地址
JMP MAKE_LAST_LAST_ZX_YG_FRAMES ;把当前485表上上月正向有功形成回应帧发送给集中器
READ_PULSE_LAST_LAST_ZX_YG:
MOV DPTR,#PULSE_LAST_LAST_ENERGY ;脉冲表上上月电量首地址
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -