📄 t_pulse.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 + -