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

📄 hw_rcv.asm

📁 一、 模块功能简介 &nbsp &#1048698 支持串口通信与电力线载波通信之间的转发; &nbsp &#1048698 ZF3106串口‐载波通讯模块可以完成载波信道到TTL串口
💻 ASM
字号:
;************************************************************
;文档类型: 原代码 
;项目编号: 
;文档编号:  
;修订版本: 
;生成日期: 
;文档作者: 
;审    核: 
;************************************************************
;相关文档: 主程序,规约
;文档编号      说明 
;************************************************************
;修订说明:
;修订版本
;修订说明:
;修订版本: 
;************************************************************
$INCLUDE	(PL3105.INC)
$INCLUDE	(RAML128.INC)
$INCLUDE	(RAMH128.INC)
$INCLUDE	(io.INC)
$INCLUDE	(CONST.INC)

CODE_REG	SEGMENT	CODE
RSEG		CODE_REG
PUBLIC          hw_rcv
EXTRN     CODE  (CLR_HW)
;--------------------------------------------------------------
;****************************************************
;串口0中断接收
;R0地址缓存,R7=计数器,R6=HW和校验,
;R2=RS485_CN接收计步器,R4数据缓存
;使用R2=RS485_CN变量,进行比较处理
;****************************************************
HW_RCV:         NOP 
	        NOP	
	        
	   	JB      RI,HW_BYTE1
                MOV	RS485_CN,#0
		RETI    ; LIHENG 07-3-26
HW_BYTE1:            	
		PUSH	PSW
		PUSH	ACC
		PUSH    B
		SETB	PSW.3              ;BANK 1
		CLR	PSW.4
                
		MOV     TMR_UART,#60     ;定时300MS
               	MOV	A,SBUF0          ;统一移位处理SBUF
               	MOV	R4,A             ;方便后续统一处理SBUF
               	CLR     RI 

                CJNE    R2,#0,HW_NEXT1   ;接收计数器
		CJNE	A,#68H,HW_STOP
		MOV	R6,A            ;校验和  
		MOV     R7,#6		;计数器;接收6位表号
	        MOV     R0,#MTR_ADDR0
		MOV	RS485_CN,#1
                JMP	HW_RET

HW_NEXT1:       CALL    RCV_HW_ADDR
              
HW_RET:         
                CLR 	PSW.3         
		CLR	PSW.4
		POP	B 
		POP	ACC
		POP	PSW
		NOP
		NOP
		NOP
		RETI
	;	RET

HW_STOP:	MOV	RS485_CN,#0
		MOV     TMR_UART,#1      ;定时5MS
                JMP	HW_RET
;-------------------------------------------------------
RCV_HW_ADDR:    CJNE    R2,#1,HW_NEXT2   ;接收6位表号
                MOV     @R0,A
                ADD	A,R6
                MOV	R6,A 
                INC     R0
                DJNZ	R7,HW_RET1
		MOV	RS485_CN,#2
		RET

HW_NEXT2:       CJNE    R2,#2,HW_NEXT3   
                CJNE	A,#68H,HW_ERR
                ADD	A,R6
                MOV	R6,A                ;校验和 
                MOV	RS485_CN,#3
HW_RET1:	RET

HW_NEXT3:       CJNE    R2,#3,HW_NEXT4
                MOV     R0,#HW_CTR          ;HW_CTR红外接收控制符
                MOV     @R0,A
                              
HW_NEXT31:      ADD	A,R6
                MOV	R6,A
                MOV	RS485_CN,#4
		RET

HW_ERR:		MOV	RS485_CN,#0      ;接收错误处理
		MOV     TMR_UART,#1      ;定时5MS
		CALL    CLR_HW           ;清缓存
                RET

HW_NEXT4:       CJNE    R2,#4,HW_NEXT5   
                MOV     R7,A
           
                MOV     R0,#HW_L
                MOV     @R0,A
                ADD	A,R6
                MOV	R6,A            ;校验和
                CLR     C
                MOV     A,R7
             
                SUBB    A,#HW_L0         ;最大数据长度 07-7-4 LIHENG
                JNC     HW_ERR          ;字节数大于45
                MOV     R0,#HW_BUF0	;数据接收BUF
		MOV	RS485_CN,#5		
		RET
		


HW_NEXT5:       CJNE    R2,#5,HW_NEXT6	;接收数据体
                MOV     A,R7
                JZ      HW_NEXT66
                CLR	C
                MOV     A,R0
                SUBB	A,#HW_BUFEND      ;冗余判断
                JNC	HW_ERR
                
                MOV     A,R4	
                MOV	B,A
                CLR	C
                SUBB	A,#33H		;减33处理
                MOV     @R0,A
                INC     R0
		MOV	A,B
                ADD	A,R6
                MOV	R6,A
                DJNZ	R7,HW_RET1
		MOV	RS485_CN,#6
		RET

HW_NEXT6:       CJNE    R2,#6,HW_NEXT7	;接收校验
HW_NEXT66:                
                MOV     A,R4		
                MOV     B,R6
           
                CJNE	A,B,HW_ERR
                MOV	RS485_CN,#7
		RET

HW_NEXT7:       CJNE    R2,#7,HW_ERR
		CJNE    A,#16H,HW_ERR
                MOV     HW_OK,#'H'      ;红外数据包收到标志
                MOV     RS485_CN,#0
                MOV     TMR_UART,#0FFH
               
               ; CLR     ES
               ; CLR     EREN            
                
HW_LOOP:        NOP
                NOP
                RET
                
		END		
                     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -