📄 zb_do_with.asm
字号:
MOV A,ZB_CTR
ANL A,#0FH
MOV ZB_CTR,A ;NEW ZB_CTR
JMP BAK_ADDR
NOR_ZJ: ;通用中继转发组包
MOV A,ZB_CTR
ANL A,#01001111B
SWAP A
ADD A,ZJ_NUM
DEC A
SWAP A
MOV ZB_CTR,A
BAK_ADDR:
CALL MOV_TAR_SNO ;移动新的目标地址
MOV A,ZJ_NUM
INC A
MOV B,#3
MUL AB
ADD A,#ZB_BUF2
MOV R1,A
; MOV R0,#ADDRZJ0 ;bak_addr0
MOV R0,#ZB_ADDR_ZJ0 ; 2007-07-10 LIHENG
MOV A,@R1
MOV @R0,A
INC R0
INC R1
MOV A,@R1
MOV @R0,A
INC R0
INC R1
MOV A,@R1
MOV @R0,A
MOV R0,#ZB_L
MOV A,@R0
CLR C
SUBB A,#3
MOV @R0,A
SUBB A,#2
MOV R2,A
JZ AD_RU_SNO
MOV R1,#ZB_BUF2
MOV R0,#ZB_BUF5
MOV_ADR1:
MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R2,MOV_ADR1
AD_RU_SNO: ;追加本表表号
MOV A,ZJ_NUM
MOV B,#3
MUL AB
ADD A,#ZB_BUF2
MOV R1,A
MOV @R1,BH_0
INC R1
MOV @R1,BH_1
INC R1
MOV @R1,BH_2
INC R1
MOV A,ZB_L
ADD A,#5
MOV FS_JYL,A
CALL ZB_FS_CHK
MOV A,ZB_L
ADD A,#10
MOV FS_L,A
MOV ZB_09H,#09H
MOV ZB_AFH,#0AFH
MOV EXT_CFG,#01H ;//070131
; SETB PLM_SSC
SETB PLM_RS
MOV PLM_RS0,#'F'
MOV PLM_RST,#0A2H
MOV TMR_ZB,#0FFH
RET
;------------------------------------------------------
MOV_TAR_SNO: ;移动被叫地址
MOV R0,#ZB_BUF2
MOV R1,#TAR_ADDR0
MOV A,@R0
MOV @R1,A
MOV R0,#ZB_BUF3
MOV R1,#TAR_ADDR1
MOV A,@R0
MOV @R1,A
MOV R0,#ZB_BUF4
MOV R1,#TAR_ADDR2
MOV A,@R0
MOV @R1,A
RET
;****************************************************
;计算载波发送校验和,字节数FS_JYL 从目标地址开始累加
;****************************************************
ZB_FS_CHK:
CLR C
MOV R4,#0 ;HIGH
MOV R3,#0
MOV R0,#TAR_ADDR0
FS_CHK:
MOV A,@R0
ADD A,R3
MOV R3,A
MOV A,R4
ADDC A,#0
MOV R4,A
INC R0
DJNZ FS_JYL,FS_CHK
MOV A,R3
MOV @R0,A ;存校验低字节
INC R0
MOV A,R4
MOV @R0,A ;存校验高字节
RET
;----------------------------------------------------
;载波数据转换为645格式
ZB_TO_HW:
; MOV ADDRZJ0,ZB_BUF2
; MOV ADDRZJ1,ZB_BUF3
; MOV ADDRZJ2,ZB_BUF4 ;保存主叫地址
MOV R0,#ADDRZJ0
MOV A,ZB_BUF2
MOV @R0,A
INC R0
MOV A,ZB_BUF3
MOV @R0,A
INC R0
MOV A,ZB_BUF4
MOV @R0,A
MOV R0,#HW_681
MOV @R0,#068H
MOV R0,#HW_682
MOV @R0,#068H
MOV R0,#MTR_ADDR0
MOV R1,#ZB_BH_BUF0 ;表号
MOV R3,#6
ZB_TO_HW_ADDR:
MOV A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R3,ZB_TO_HW_ADDR
MOV A,ZB_L
CLR C
SUBB A,#3 ;载波数据长度减3为645格式的数据长度
MOV R0,#HW_L
MOV @R0,A
MOV R3,A ;数据长度计数,转换数据体时用
ADD A,#10
MOV FS_JYL_HW,A ;645格式数据校验长度
ADD A,#2
MOV FS_L_HW,A ;645格式发送长度
MOV R0,#HW_BUF0 ;标识编码
MOV A,ZB_DI0
ADD A,#33H
MOV @R0,A
INC R0
DEC R3
MOV A,ZB_DI1
ADD A,#33H
MOV @R0,A
INC R0
DEC R3
MOV A,R3
CJNE A,#0,ZB_TO_HW_DATA ;数据体转换完成?
JMP ZB_TO_HW_JY
ZB_TO_HW_DATA:
MOV R1,#ZB_BUF5 ;数据体转换
ZB_TO_HW_DATA1:
MOV A,@R1
ADD A,#33H
MOV @R0,A
INC R0
INC R1
DJNZ R3,ZB_TO_HW_DATA1
ZB_TO_HW_JY:
NOP ;645格式数据校验计算
MOV R6,#0
MOV R1,#HW_681
ZB_TO_HW_JY1:
MOV A,@R1
INC R1
ADD A,R6
MOV R6,A
DJNZ FS_JYL_HW,ZB_TO_HW_JY1
MOV A,R6
MOV @R1,A ;存校验码
INC R1
MOV @R1,#16H ;存16H
NOP
RET
;*********************************************************************
;广播命令处理
ZB_DO_0:
NOP
MOV A,ZB_CTR
; ANL A,#0FH
CJNE A,#01H,ZB_GB
MOV A,ZB_DI0
CJNE A,#32H,ZB_DO_0_RET
MOV A,ZB_DI1
CJNE A,#0C0H,ZB_DO_0_RET ;是否为广播读取表号命令
NOP
NOP
JB READ_BH,ZB_DO_0_RET ;强制键是否按下
NOP
NOP
CALL GB_BH
NOP
RET
ZB_DO_0_RET:
CALL CLR_ZB
RET
ZB_GB: ; MOV GB_OR_SP,#0 ;载波广播命令转换为645格式
MOV R0,#HW_681
MOV @R0,#068H
MOV R0,#HW_682
MOV @R0,#068H
MOV R0,#MTR_ADDR0
MOV R3,#6
ZB_GB_ADDR:
MOV @R0,#99H
INC R0
INC R1
DJNZ R3,ZB_GB_ADDR
ZB_GB_CTRL: MOV R0,#HW_CTR
MOV A,ZB_CTR
MOV @R0,A
MOV A,ZB_L
CLR C
SUBB A,#3 ;载波数据长度减3为645格式的数据长度
MOV R0,#HW_L
MOV @R0,A
MOV R3,A ;数据长度计数,转换数据体时用
ADD A,#10
MOV FS_JYL_HW,A ;645格式数据校验长度
ADD A,#2
MOV FS_L_HW,A ;645格式发送长度
MOV R1,#HW_BUF0
MOV R0,#ZB_BUF3
ZB_GB_DATA:
MOV A,@R0
ADD A,#33H
MOV @R1,A
INC R0
INC R1
DJNZ R3,ZB_GB_DATA
ZB_GB_JY:
NOP ;645格式数据校验计算
MOV R6,#0
MOV R1,#HW_681
ZB_GB_JY1:
MOV A,@R1
INC R1
ADD A,R6
MOV R6,A
DJNZ FS_JYL_HW,ZB_GB_JY1
MOV A,R6
MOV @R1,A ;存校验码
INC R1
MOV @R1,#16H ;存16H
NOP
CALL HW_DO_WITH
; MOV A, GB_OR_SP ;//070131
; CJNE A,#1 ,ZB_GB_CLR
MOV ZB_HW,#'O' ;070131 串口数据需要载波发送标志
; MOV TMR_INIT1,#3 ; 07-3-23 LIHENG
MOV R0,#TMR_INIT1
MOV @R0,#3
; MOV GB_OR_SP,#0
ZB_GB_CLR: CALL CLR_ZB
NOP
NOP
NOP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -