📄 save_da.asm
字号:
;************************************************************
;文档类型:
;项目编号:
;文档编号:
;修订版本:
;生成日期:
;文档作者:
;审 核:
;************************************************************
;相关文档:
;文档编号
;************************************************************
;修订说明
;修订版本
;************************************************************
$INCLUDE (RAML128.INC)
$INCLUDE (RAMH128.INC)
$INCLUDE (PL3105.INC)
CODE_REG SEGMENT CODE
RSEG CODE_REG
PUBLIC SAVE_DA
PUBLIC SAVE_ZB_SNO
EXTRN CODE (CLR_HW)
;**************************************************************
;保存每3分钟读取的本表表号到BH_0---BH_5,并备份至BH_BAK0---BH_BAK5
;保存继电器状态到B_STATE 如果为错误应答补0FH 即继电器为接通状态
SAVE_DA:
NOP
NOP
NOP
MOV R0,#BH_JDQ
MOV A,@R0
CJNE A,#55H,SAVE_JDQ
MOV R0,#MINUTE_OK
MOV @R0,#0 ; 07-5-12 LIHENG
MOV R0,#BH_JDQ ;设置标志BH_JDQ读继电器状态
MOV @R0,#0
; MOV MINUTE,#55H ;置总标志读取继电器状态 liheng 07-5-12
MOV R1,#HW_CTR
MOV A,@R1
CJNE A,#81H,SAVE_DA_1
MOV R1,#HW_DI0
MOV A,@R1
CJNE A,#32H,SAVE_DA_RET ;接收到的数据是否为表号
INC R1
MOV A,@R1
CJNE A,#0C0H,SAVE_DA_RET
JMP RD_OK_CMP_SNO ; 07-5-14 LIHENG 判断正确命令表号是否非99H或AAH
SAVE_DA_1:
CJNE A,#0C1H,SAVE_DA_RET
RD_OK_CMP_SNO: MOV R1,#MTR_ADDR3
MOV A,@R1
CJNE A,#99H,PD_AA_0
INC R1
MOV A,@R1
CJNE A,#99H,PD_AA_0
INC R1
MOV A,@R1
CJNE A,#99H,PD_AA_0
; JMP SAVE_DA_RET
SAVE_DA_RET:
CALL CLR_HW ;清串口缓存
SETB EREN ;串口接收允许
SETB ES
RET
PD_AA_0:
MOV R1,#MTR_ADDR3
MOV A,@R1
CJNE A,#0AAH,RD_OK
INC R1
MOV A,@R1
CJNE A,#0AAH,RD_OK
INC R1
MOV A,@R1
CJNE A,#0AAH,RD_OK
JMP SAVE_DA_RET
RD_OK:
MOV R0, #RD_JS
MOV @R0,#0 ;清读取表号失败计数器
MOV R0,#RD_BH_TIME
MOV @R0,#180 ;成功读取表号后,每3分钟读取一次表号
MOV TMR_M1,#180
MOV R0,#BH_0 ;保存本表表号
MOV R1,#MTR_ADDR0
MOV R6,#0
MOV R5,#6
SAVE_BH_ADDR:
MOV A,@R1
MOV @R0,A
ADD A,R6
MOV R6,A
INC R1
INC R0
DJNZ R5,SAVE_BH_ADDR
MOV A,R6
ADD A,#'X'
MOV @R0,A ;校验
MOV R0,#BH_BAK_0 ;表号备份
MOV R1,#MTR_ADDR0
MOV R6,#0
MOV R5,#6
SAVE_BH_ADDR_BAK:
MOV A,@R1
MOV @R0,A
ADD A,R6
MOV R6,A
INC R0
INC R1
DJNZ R5,SAVE_BH_ADDR_BAK
MOV A,R6
ADD A,#'X'
MOV @R0,A ;校验
JMP SAVE_DA_RET
;---------------------------------------------------------
SAVE_JDQ:
MOV R0 ,#BH_JDQ
MOV @R0,#55H ;ZHZ 07.7.4
MOV R0,#MINUTE
MOV @R0,#55H ;置总标志读取表号 liheng 07-5-12
MOV R1,#HW_CTR
MOV A,@R1
CJNE A,#81H,SAVE_JDQ_END ;是否为正确应答
MOV R1,#HW_DI0
MOV A,@R1
CJNE A,#35H,SAVE_DA_RET ;接收到的数据是否为继电器状态
INC R1
MOV A,@R1
CJNE A,#0C0H,SAVE_DA_RET
MOV R1,#HW_BUF2
MOV A,@R1
MOV B_STATE,A
JMP SAVE_DA_RET
SAVE_JDQ_END:
; CJNE A,#0C4H,SAVE_DA_RET ;接收到的数据为异常应答,补继电器接通
MOV B_STATE,#0FH
JMP SAVE_DA_RET
;---------------------------------------------------------
;*********************************************************
; 07-3-23 LIHENG
;保存载波直抄命令转发后从串口返回数据中的本表表号
SAVE_ZB_SNO:
NOP
NOP
NOP
MOV R1,#MTR_ADDR3
MOV A,@R1
CJNE A,#99H,SAVE_ZB_SNO_AA
INC R1
MOV A,@R1
CJNE A,#99H,SAVE_ZB_SNO_AA
INC R1
MOV A,@R1
CJNE A,#99H,SAVE_ZB_SNO_AA
JMP SAVE_ZB_SNO_RET
SAVE_ZB_SNO_AA:
MOV R1,#MTR_ADDR3
MOV A,@R1
CJNE A,#0AAH,SAVE_ZB_SNO_OK
INC R1
MOV A,@R1
CJNE A,#0AAH,SAVE_ZB_SNO_OK
INC R1
MOV A,@R1
CJNE A,#0AAH,SAVE_ZB_SNO_OK
JMP SAVE_ZB_SNO_RET
SAVE_ZB_SNO_OK:
MOV R0,#RD_JS
MOV @R0,#0 ;清读取表号失败计数器
MOV R0,#RD_BH_TIME
MOV @R0,#180 ;成功读取表号后,每3分钟读取一次表号
MOV TMR_M1,#180
MOV R0,#BH_0 ;保存本表表号
MOV R1,#MTR_ADDR0
MOV R6,#0
MOV R5,#6
SAVE_ZB_SNO_ADDR:
MOV A,@R1
MOV @R0,A
ADD A,R6
MOV R6,A
INC R1
INC R0
DJNZ R5,SAVE_ZB_SNO_ADDR
MOV A,R6
ADD A,#'X'
MOV @R0,A ;校验
MOV R0,#BH_BAK_0 ;表号备份
MOV R1,#MTR_ADDR0
MOV R6,#0
MOV R5,#6
SAVE_ZB_SNO_ADDR_BAK:
MOV A,@R1
MOV @R0,A
ADD A,R6
MOV R6,A
INC R0
INC R1
DJNZ R5,SAVE_ZB_SNO_ADDR_BAK
MOV A,R6
ADD A,#'X'
MOV @R0,A ;校验
SAVE_ZB_SNO_RET:
SETB EREN ;串口接收允许
SETB ES
RET
;---------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -