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

📄 t_pulse.asm

📁 基于PL3000芯片的单相复费率多功能电表的应用程序。
💻 ASM
字号:
;************************************************************
;文档类型: 原代码 
;项目编号: 
;文档编号: 
;修订版本: v1.0
;生成日期: 2004.7.2
;文档作者: LI
;审    核: 
;************************************************************
;相关文档: 脉冲计数
;文档编号      说明 
;************************************************************
;修订版本: V3.0
;修订版本: 2005.6.7
;************************************************************
$INCLUDE	(RAML128.INC)
$INCLUDE	(RAMH128.INC)
$INCLUDE	(IO.INC)
$INCLUDE	(CONST.INC)
$INCLUDE	(PL3200.INC)

CODE_REG	SEGMENT	CODE
RSEG		CODE_REG
PUBLIC          T_PULSE
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;*************************************************************************
;T0;5MS;DO PULSE COUNT
;功能说明:定时中断每5MS采集一次脉冲输入端口,符合脉冲条件,脉冲计数缓冲PLS_BUF加一,同时
;	置产生脉冲标志HAVE_PLS=#'P'
;IN:	NO
;OUT:	脉冲计数缓冲PLS_BUF(1BYTE,BIN);脉冲产生标志HAVE_PLS=#'P'
;*************************************************************************
T_PULSE:	NOP
		NOP
		nop
		PUSH	PSW
		PUSH	ACC
		MOV	A,R0
		PUSH	ACC
		MOV     A,EXT_ADR
		PUSH    ACC
		MOV     A,PMU_ADR
		PUSH    ACC
		MOV     TH0,#BASETIM0_H    	;设置定时器,5ms
                MOV     TL0,#BASETIM0_L
	        SETB    SETUP
	        SETB    READ

		JNB	SOFT_DOG,TTT0
                CLR	SOFT_DOG
		MOV   	WDI,#0A1h
		
TTT0:	        
        ;	MOV     R0,#TMR_LAMP
	;	DEC     @R0
	;	CJNE    @R0,#0,TTT1
	;	SETB	LAMP    
		
TTT1:		DJNZ	TMR_485,TTT2
                mov     tmr_485,#20
		MOV	RS485_CN,#0
		
		MOV    	SCON,#0D0h		;HW
		SETB	ES
		SETB	EA               
		MOV	IR_CNT1,#1FH	;红外通讯使用38K频率
		MOV     EXT_ADR,#0FEH 	      ;zjk0701
		MOV     EXT_DAT,#6
		
TTT2:;		DJNZ	TMR_ZB,TTT3
;		SETB	EA
;               	CLR     T_FIR_BIT;zjk0701
;		MOV     TX_RX_BYTE,#0 ;12.13LI    ;CLR	t_end_bit;zjk0701
;		MOV	ZB_RC_SIGN,#0
TTT3:		                		
		MOV     R0,#TMR_RLY
		DEC     @R0
		CJNE    @R0,#0,TTT4
		CLR	RLY_A
		CLR	RLY_B
TTT4:	                           
		MOV     R0,#TMR_DISP0
		DEC     @R0
		CJNE    @R0,#0,TTT6
		MOV     @R0,#100
		SETB	DIS_5MS_BIT         ;显示500ms延时刷新LCD		
TTT6:			     
		MOV     R0,#TMR_SECOND
		DEC     @R0
		CJNE    @R0,#0,TTT6_1   ;定时1秒
		MOV     @R0,#200 
		SETB    SEC_FLAG      ;8.16LIU
		MOV     R0,#TMR_MINUTE
		INC     @R0
		MOV     R0,#LCD_MINUTE
		INC     @R0
				
				
TTT6_1:         CLR     PROG_BIT   
                MOV     C,SETUP
                MOV     A,PROG_STATE
                RLC     A
                MOV     PROG_STATE,A
                CJNE    A,#00H,TTT7  
                JB      SETUP,TTT7;CHK_PULSE
                SETB    PROG_BIT      ;编程标志		
TTT7:           
                MOV      C,READ
                MOV	 A,READ_STATE
		RLC	 A
		MOV	 READ_STATE,A
		CJNE     A,#0F0H,TTT8
		SETB     READ_OPEN_BIT		
		SETB     READ_BIT
		MOV      R0,#DIS_SEC_VALUE
                MOV      @R0,#1
		MOV      R0,#LCD_MINUTE
		MOV      @R0,#0	
		JB       READ_BIT,TTT8				
                MOV      R0,#DIS_CODE
                MOV      @R0,#1
                
TTT8:        ;  	CLR      JDQ_JS             ;继电器接通为低  	
	;	SETB     JDQ_JS             ;继电器断开为高	     					
CHK_PULSE:     
		MOV     PMU_ADR,#0FBH
		MOV     C,PMU_DAT.0      ;有功计量脉冲
		MOV	A,STATE0
		RLC	A
		ANL	A,#07H
		MOV	STATE0,A
		CJNE	A,#06H,CHK_W_PULSE  ;RETURN_T_P	;110B为脉冲标识,脉冲宽度大于20MS		
	;	CLR	LAMP
	;	MOV     R0,#TMR_LAMP
	;	MOV     @R0,#20
		MOV	A,PLS_BUF
		ADD	A,#'X'
		XRL	A,PLS_BUF_BAK
		JZ	CHK_1
		MOV	PLS_BUF,#0		;PLS_BUF校验不等清零处理
CHK_1:		
		INC	PLS_BUF
		MOV	A,PLS_BUF
		ADD	A,#'X'
		MOV	PLS_BUF_BAK,A		;脉冲缓冲校验备份
		MOV	R0,#YXM_Y
		MOV	@R0,#'Y'
		MOV	R0,#HAVE_PLS
		MOV	@R0,#'P'

CHK_W_PULSE: 
;		MOV     PMU_ADR,#0FBH;
;		MOV     C,PMU_DAT.2  ;无功计量脉冲  
;		MOV	A,W_STATE
;                RLC     A
;		ANL	A,#07H
;		MOV	W_STATE,A
;		CJNE	A,#06H,RETURN_T_P	;110B为脉冲标识,脉冲宽度大于20MS
;		CLR	LAMP
;		MOV     R0,#TMR_LAMP
;		MOV     @R0,#20
;		MOV	A,W_PLS_BUF
;		ADD	A,#'X'
;		XRL	A,W_PLS_BUF_BAK
;		JZ	CHK_W_1
;		MOV	W_PLS_BUF,#0		;W_PLS_BUF校验不等清零处理
CHK_W_1:		
;		INC	W_PLS_BUF
;		MOV	A,W_PLS_BUF
;		ADD	A,#'X'
;		MOV	W_PLS_BUF_BAK,A		;脉冲缓冲校验备份
;		MOV	R0,#XC_Y
;		MOV	@R0,#'Y'
;		MOV	R0,#HAVE_W_PLS
;		MOV	@R0,#'W'

RETURN_T_P:	POP     ACC
                MOV     PMU_ADR,A
                POP     ACC
                MOV     EXT_ADR,A
		POP     ACC
		MOV	R0,A
		POP	ACC
		POP	PSW
		NOP
		NOP
		NOP
		RET
		
		END	

⌨️ 快捷键说明

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