?? 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 + -