⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zb_do_with.asm

📁 一、 模块功能简介 &nbsp &#1048698 支持串口通信与电力线载波通信之间的转发; &nbsp &#1048698 ZF3106串口‐载波通讯模块可以完成载波信道到TTL串口
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		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 + -