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

📄 save_da.asm

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