rd24_do_chk.asm

来自「基于PL3000芯片的单相复费率多功能电表的应用程序。」· 汇编 代码 · 共 79 行

ASM
79
字号
;************************************************************
;文档类型: 原代码 
;项目编号: 
;文档编号: 
;修订版本: V2.0
;生成日期: 2004.6.12
;文档作者: 张志忠
;审    核: 
;************************************************************
;相关文档: 读写24操作,24校验方式
;文档编号      说明 
;************************************************************
;修订版本: 
;修订版本: 
;************************************************************
$INCLUDE	(RAML128.INC)
$INCLUDE	(RAMH128.INC)
$INCLUDE	(24ADDR.INC)
$INCLUDE	(IO.INC)

CODE_REG	SEGMENT	CODE
RSEG		CODE_REG
PUBLIC          RD24_DO_CHK
PUBLIC          WR24_DO_CHK
;****************************************************
EXTRN   CODE(RD_I2)    
;****************************************************
;读24数据后,校验判断
;入口参数:RD_N的字节数,出口时未被破坏
;输出数据:RD_BUF0,1,2...
; CY=1,校验正确,CY=0,校验未通过
;****************************************************
RD24_DO_CHK:	
                SETB    WP           ;;增加对24写保护的冗余  05.9.8LIHENG
		CALL	RD_I2        

		MOV	B,RD_N
		DEC     B             ;2004.6.12,校验前几个字节
		MOV	A,#0
		MOV	R0,#RD_BUF0	
LOOP_CHKD:		
		ADD	A,@R0
		INC	R0
		DJNZ	B,LOOP_CHKD
		ADD	A,#'X'
		MOV	B,@R0
		CJNE	A,B,RETURN_C0
		SETB	C
		RET

RETURN_C0:
		MOV	B,RD_N
		MOV	R0,#RD_BUF0	
LOOP_CLRD:		
		MOV	@R0,#0
		INC	R0
		DJNZ	B,LOOP_CLRD
		CLR	C
		RET	
		
;****************************************************
;对写24的数据进行校验运算
;入口参数:WR_N的字节数
;输出数据:WD_BUF0,1,2...,校验运算完成
;****************************************************
WR24_DO_CHK:	
		MOV	B,WR_N
		DEC     B             ;2004.6.12,校验前几个字节
		MOV	A,#0
		MOV	R0,#WR_BUF0	
LOOP_CHKWR:		
		ADD	A,@R0
		INC	R0
		DJNZ	B,LOOP_CHKWR
		ADD	A,#'X'
		MOV	@R0,A
		RET

		END	

⌨️ 快捷键说明

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