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

📄 hw_do_with.asm

📁 基于PL3000芯片的单相复费率多功能电表的应用程序。
💻 ASM
📖 第 1 页 / 共 2 页
字号:
HW_ANSWER:	
		MOV	TMR_485,#255      ;2004.6.23防止系统复位
                MOV    	SCON1,#0C0h		;485  禁止接收
                MOV    	SCON,#0C0h		;HW

		MOV	A,#0FEH
		CALL	COM_SEND
		MOV	A,#0FEH
		CALL	COM_SEND
		MOV	A,#0FEH
		CALL	COM_SEND

		MOV     DPH,#02H
		MOV     DPL,#HW_681      ;2004.6.9,送第一个68H
		MOV     A,#68H
		MOVX    @DPTR,A
		MOV     DPL,#HW_682
		MOVX    @DPTR,A
		MOV     DPL,#HW_L	;数据长度
	        MOVX    A,@DPTR	
		MOV     R4,A            ;LENGHT存R4 
		MOV	R6,#0           ;校验和初值
		MOV     R5,#10          ;2004.6.9,从68H至HW_L的10字节
	        MOV     DPL,#HW_681	
		
SEND_HEAD:      MOVX    A,@DPTR
		CALL	COM_SEND
		ADD	A,R6
		MOV	R6,A             ;校验和计算   
		CLR     A
		MOVX    @DPTR,A                   ;清零红外RAM数据区	  
	        INC     DPTR
		DJNZ	R5,SEND_HEAD
		
		MOV     A,R4            ;LENGHT存R4 
		JZ	SEND_CHK

	        MOV     DPL,#HW_BUF0	;SEND 数据体
SEND_DATA:      MOVX    A,@DPTR
		ADD	A,#33H
		CALL	COM_SEND
		ADD	A,R6
		MOV	R6,A
		CLR     A
		MOVX    @DPTR,A          ;清零红外RAM数据区
	        INC     DPTR
		DJNZ	R4,SEND_DATA
SEND_CHK:	MOV	A,R6		;SEND 校验和
		CALL	COM_SEND
		MOV	A,#16H		;SEND 结束符
		CALL	COM_SEND
		MOV	ERR_inf,#0	;CLR 错误信息

		MOV    	SCON,#0D0h	;HW
		RET

;**************************************************************
;MOV要发送的数据TO A
;**************************************************************
COM_SEND:	
                MOV     R2,HW_RS
                CJNE    R2,#'R',COM0_SEND          

                MOV	C,P		;PSW.0=P;经测试,与下一个不可合并
        	MOV	ETB8,C
        	MOV	SBUF1,A
        	JNB	ETI,$      ;2004.6.23 可能导致系统复位
        	CLR	ETI
		RET
COM0_SEND:
                MOV	C,P		;PSW.0=P
        	MOV	TB8,C
        	MOV	SBUF,A
        	JNB	TI,$       ;2004.6.23 可能导致系统复位
        	CLR	TI
		RET					

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;2004.6.17:以下为:表底码设置、密码处理
;*****************************************
HW_ERR2:	JMP	RESET_SYS
HW_DO_WITH_SET:	
		MOV	A,HW_RS           ;2004.6.13
		CJNE	A,#'H',HW_ERR2
		MOV	HW_RS,#'h'           ;2004.6.13

	;	CALL	CHK_KEY        ;2004.6.18:设置时首先验证密码  ;2004.12.5LI
	;	JB	KEY_ERR,HW_SET_NO_TMP1
		MOV	A,HW_DI1L            
		CJNE	A,#0C0H,HW_SET_C117
		MOV	A,HW_DI0L
		CJNE	A,#35H,HW_SET_C012     ;2004.6.17
        	MOV	WP_CTR,#'W'
		CALL	SET_MTR_RELY		;设置继电器
		JMP	HW_SET_ANSWER
		
HW_SET_NO_TMP1:	JMP	HW_SET_ANS_NO
;***********************************************************
HW_SET_C012:	;2004.6.19  设置时分秒、再设置年月日周
		CJNE	A,#12H,HW_SET_C0A0;C032
		MOV	WP_CTR,#'W'
		CALL	SET_DATE_TIME12		;*设年,月,日,周,时,分,秒,并校验数据格式是否RIGHT
          	MOV     R0,#MINUTE
                MOV     @R0,#0FFH
		JMP	HW_SET_ANSWER
HW_SET_C0A0:	;;2005.5.18
                CJNE	A,#0A0H,HW_SET_C0A2
                JNB     PROG_BIT,HW_SET_NO_TMP1
		MOV	WP_CTR,#'W'
		CALL	SAVE_SZ  	;设置时钟系数
		MOV     R0,#MINUTE
                MOV     @R0,#0FFH
		JMP     HW_SET_ANSWER		
HW_SET_C0A2:	;;2005.5.18
                CJNE	A,#0A2H,HW_SET_NO_ID
                JNB     PROG_BIT,HW_SET_NO_TMP1
		MOV	WP_CTR,#'W'
		CALL	SAVE_JLMX  	;设置
		MOV     R0,#MINUTE
                MOV     @R0,#0FFH
		JMP     HW_SET_ANSWER					

HW_SET_NO_ID:	JMP	HW_SET_ANS_ID_ERR
;*****************************************************
;2004.6.27 
;*****************************************************
HW_SET_C117:   	MOV	A,HW_DI1L		;DI1
		CJNE	A,#0C1H,HW_SET_C3        
		MOV	A,HW_DI0L		;DI0
HW_SET_C154:	CJNE	A,#54H,HW_SET_C155    ;设A电压修整系数
                JNB     PROG_BIT,HW_SET_NO_TMP
                MOV     WP_CTR,#'W'
		CALL	SET_V_A
		JMP	HW_SET_ANSWER 
;********************************************
HW_SET_C155:	CJNE	A,#55H,HW_SET_NO_TMP;HW_SET_C15A    ;设A电流修整系数
                JNB     PROG_BIT,HW_SET_NO_TMP
                MOV     WP_CTR,#'W'
		CALL	SET_I_A
		JMP	HW_SET_ANSWER 
;*****************************************
;2004.6.19
;*****************************************
HW_SET_C3:	CJNE	A,#0C3H,HW_SET_D430     ;DI1
		MOV	A,HW_DI0L	  
		CJNE    A, #3FH,HW_SET_NO_TMP; ;DI0,
		MOV	WP_CTR,#'W'
		CALL	SET_FL_TAB	;*设费率号及时段
           	MOV     R0,#MINUTE           ;启动时段检查
                MOV     @R0,#0FFH
		JMP	HW_SET_ANSWER
HW_SET_NO_TMP:	JMP	HW_SET_ANS_NO		
;******************************************
;设置显示配置项
;******************************************
HW_SET_D430:  	CJNE	A,#0D4H,HW_SET_NO_TMP
	       	MOV	A,HW_DI0L		;DI0
        	CJNE	A,#30H,HW_SET_D410    ;设显示配置项
                MOV     WP_CTR,#'W'
		CALL	SAVE_DIS_CRLB
		JMP	HW_SET_ANSWER 
;********************************************
HW_SET_D410:	CJNE	A,#10H,HW_SET_NO_TMP ;HW_SET_D411    ;设当前、上月电能清0
                JNB     PROG_BIT,HW_SET_ANS_NO
		CALL	CLR_DL0
		JMP	HW_SET_ANSWER 
;********************************************
;HW_SET_D411:	CJNE	A,#11H,HW_SET_D412  ;设需量清0
;                JNB     PROG_BIT,HW_SET_ANS_NO
;		CALL	CLR_XL0
;		JMP	HW_SET_ANSWER 
;********************************************
;HW_SET_D412:	CJNE	A,#12H,HW_SET_NO_TMP  ;设事件清0
;               JNB     PROG_BIT,HW_SET_ANS_NO
;		CALL	CLR_SJ0
;		JMP	HW_SET_ANSWER                                   
;*****************************************
HW_SET_ANSWER:  MOV     A,ERR_inf
                JNZ     HW_SET_ANS_NO
                JB      E2P_ERR,HW_SET_ANS_NO       
                MOV     DPL,#HW_L
	        CLR     A
	        MOVX    @DPTR,A
	        MOV     DPL,#HW_CTR
	        MOV     A,#84H
	        MOVX    @DPTR,A
	        MOV     DPL,#HW_BUF0
	        CLR     A
	        MOVX    @DPTR,A
		JMP	HW_ANSWER
		
HW_SET_ANS_ID_ERR:
                SETB	ID_ERR
HW_SET_ANS_NO:				;应答 数据否定帧
	        MOV     DPL,#HW_L
	        MOV     A,#1
	        MOVX    @DPTR,A
	        MOV     DPL,#HW_CTR
	        MOV     A,#0C4H
	        MOVX    @DPTR,A
	        MOV     DPL,#HW_BUF0
	        MOV     A,ERR_inf	;错误信息字
	        MOVX    @DPTR,A
		JMP	HW_ANSWER
;********************************************************
SET_ANS_NO_TMP: JMP     HW_SET_ANS_NO
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;2004.6.30 广播帧设置表号,使用C0 32方式,不验证密码
;*****************************************************
HW_ERR3:	JMP    RESET_SYS
HW_DO_WITH_GB:	NOP
		NOP
		MOV	A,HW_RS           ;2004.6.13
		CJNE	A,#'H',HW_ERR3
		MOV     HW_RS,#'h'       ;2004.6.15
	        MOV     A,HW_DI1L
		CJNE	A,#0C0H,SET_ANS_NO_TMP   
	        MOV     A,HW_DI0L
		CJNE	A,#32H,SET_ANS_NO_TMP       ;2004.6.30   
		JNB     PROG_BIT,SET_ANS_NO_TMP
		MOV	WP_CTR,#'W'
		CALL	GB_SET_MTR_SNO	;*强制设电表号,并校验数据格式是否RIGHT
                CALL    RD_SNO
                MOV     DPH,#2
                MOV     DPL,#MTR_ADDR0
                MOV     R1,#RD_BUF0
                MOV     R7,#6
                CALL    LOOP_R1_TO_DPTR
             
      	        MOV     DPL,#HW_L
	        MOV     A,#0
	        MOVX    @DPTR,A
	        MOV     DPL,#HW_CTR
	        MOV     A,#84H
	        MOVX    @DPTR,A
	        MOV     DPL,#HW_BUF0
	        MOV     A,#0
	        MOVX    @DPTR,A
		JMP	HW_ANSWER
                               
		END	

⌨️ 快捷键说明

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