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

📄 idwraccnt.asm

📁 空调控制程序,MCU 采用NEC D789189
💻 ASM
字号:

;	NAME	count
; 	$include 	(LT0219sym.INC)
;	$include	(LT0219RAM.INC)
;
;	CSEG
;	extrn	TMRremot
;	extrn	OFF2ON
;	extrn	ON2OFF
	
;========================================================================
	PUBLIC	TMcount	
;	PUBLIC	TIMER
;************************************************************************
;*	Module Name:	EL001TMC					*
;*	Function:	timer count					*
;*	Input:		f_BAS500,f_BAS50,f_BAS125			*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
TMcount:

	BF	f_BAS3125,$TMcount2      ;
	CLR1	f_BAS3125

	CALL	!BUZcnt

	TNZDEC	C_RMT200ms
	TNZDEC	C_RMTlock
	cmp	C_RMTroll,#0
	BEQ	endRMTroll
	dec	C_RMTroll
	cmp	C_RMTroll,#0
	BNE	endRMTroll
	MOV	C_RMTlock,#0
endRMTroll:
BASICt2:
	DEC	C_BT125m
	BNZ	$TMcount2
	MOV	C_BT125m,#4


	NOP
TMcount1:
;	BF	f_BAS125,$TMcount2      ;
;	CLR1	f_BAS125
	CALL	!CNT125ms

TMcount2:
	BF	f_BAS500,$TMcount3      ;
	CLR1	f_BAS500
	CALL	!CNT500ms
TMcount3:
	RET

;------------------------------------------------------------------------
;	Count every 125ms (for control time)
;------------------------------------------------------------------------
CNT125ms:

	TNZDEC	C_DEF4s
	DEC	C_BT05s
	BNZ	$BASICt1
	MOV	C_BT05s,#4
	SET1	f_BAS500
BASICt1:
RESETcnt:
	CMP	C_RES2s,#0		;Reset 2 second count for VFD display all
	BZ	$$+2+2
	DEC	C_RES2s

	CMP	C_RMT1s,#0		;remote 1 sec delay
	BZ	$$+2+2
	DEC	C_RMT1s


;	CALL	!DRYcnt



	BF	f_BT250ms,$CNT250ms	;250ms count for display and 750ms count
	CLR1	f_BT250ms
	RET
CNT250ms:
	SET1	f_BT250ms
	BT	f_250mson,$CNT250ms1
	SET1	f_250mson
	BR	$CNT250ms2
CNT250ms1:
	CLR1	f_250mson
CNT250ms2:


END250ms:
	RET
;------------------------------------------------------------------------
;	Count every 500ms (for CLOCK--timer on/off)
;------------------------------------------------------------------------
CNT500ms:
	TNZDEC	C_AUTstp

	TNZDEC	C_ERRdisp

	CMP	C_DSP10sec,#0
	BEQ	ENDdspCNT
	DEC	C_DSP10sec
	BNE	ENDdspCNT
	cmp	M_LEDdigram,#n_DSPtonSET
	BEQ	TMRset10SEC
	cmp	M_LEDdigram,#n_TOFFset
	BEQ	TMRset10SEC	
	BRA	noTMRset
TMRset10SEC:
	CALL	!TMRset10s
noTMRset:
	MOV	M_LEDdigram,#n_TMPrm
ENDdspCNT:	


	BF	f_TIM05s,$CNT1sec
	CLR1	f_TIM05s
	RET
;------------------------------------------------------------------------

;========================================================================
CNT1sec:				;1 second counter



	SET1	f_TIM05s
	SET1	f_AD1s
	TNZDEC	C_ERRheat20sec
	TNZDEC	C_KEYerr
	TNZDEC	C_FAN3s
	TNZDEC	C_FAN60sOFF
	TNZDEC	C_HEAT15s
	TNZDEC	C_DEFpipe
	TNZDEC	C_HOT10s1s
	TNZDEC	C_AUT20s
	TNZDEC	C_S42m
	TNZDEC	C_COM5s
	TNZDEC	C_FRZ2m
	TNZDEC	C_COM3mP		;compressor 3 min protect
	TNZDEC	C_COM7mOFF

	TNZDEC	C_TRlowTP
	TNZDEC	C_HTR3mRUN
	TNZDEC	C_HTR3mP
	MOVW	AX,C_DEF10m
	CMPW	AX,#0
	BEQ	$+2+1
	DECW	AX
	MOVW	C_DEF10m,AX


	MOVW	ax,C_COM6mRUN
	CMPW	AX,#0
	BEQ	$+2+1
	DECW	AX
	MOVW	C_COM6mRUN,AX	


	call	!DRYcnt			;[his-014]
	CALL	!ERRocdUP

	BF	f_SPD60,$NO60SPD	;NOT 60 speed


	mov	C_DRY1m,#0

	MOV	C_FAN60sOFF,#0
	
	MOV	A,C_COM3mP		;compressor 3 min ->3 sec
	SUB	A,#60
	BNC	$$+2+2
	XOR	A,A
	MOV	C_COM3mP,A

	MOV	A,C_COM7mOFF	
	SUB	A,#60
	BNC	$$+2+2
	XOR	A,A
	MOV	C_COM7mOFF,A
	
	mov	A,C_TRlowTP
	SUB	A,#60
	BNC	$$+2+2
	XOR	A,A
	MOV	C_TRlowTP,A
	

	MOV	A,C_HTR3mRUN
	SUB	A,#60
	BNC	$$+2+2
	XOR	A,A
	MOV	C_HTR3mRUN,A
	
	MOV	A,C_HTR3mP
	SUB	A,#60
	BNC	$$+2+2
	XOR	A,A
	MOV	C_HTR3mP,A

	MOV	A,C_FRZ2m
	SUB	A,#60
	BNC	$$+2+2
	XOR	A,A
	MOV	C_FRZ2m,A

	MOV	A,C_S42m
	SUB	A,#60
	BNC	$$+2+2
	XOR	A,A
	MOV	C_S42m,A
	

	MOV	C_TMRsec,#0		;timer 1min->1sec
	MOV	C_BT1min,#0		;basic time 1 min->1 sec

	MOVW	AX,C_DEF10m
	SUBW	AX,#60
	BNC	$$+2+3
	MOVW	AX,#0
	MOVW	C_DEF10m,AX

	MOVW	AX,C_COM6mRUN
	subw	AX,#60
	BNC	$$+2+3
	MOVW	AX,#0
	MOVW	C_COM6mRUN,AX
	

;========================================================================
NO60SPD:

	DEC	C_BT5s
	BNZ	$CNT5Send
	MOV	C_BT5s,#n_5s1s
	call	!CNT5sec
	
CNT5Send:

	CALL	!TMRcnt
;========================================================================

CHK1min:
	CMP	C_BT1min,#0
	BZ	$CNT1min
	DEC	C_BT1min
	BR	CNT1sEND
CNT1min:				;1min counter
	MOV	C_BT1min,#n_1m1s-1
	CALL	!SLPcnt
	CALL	!HEATcnt
	
	DEC	C_FLTmin
	CMP	C_FLTmin,#0
	BNE	ENDfltCNT
	MOV	C_FLTmin,#30
	MOVW	AX,C_FLThour
	CMPW	AX,#0
	BEQ	$+2+1
	DECW	AX
	MOVW	C_FLThour,AX
ENDfltCNT:
		
	TNZDEC	C_TEST90min
	TNZDEC	C_QUCIK30min
;------------------------------------------------------------------------
CNT1sEND:
	RET
;------------------------------------------------------------------------

;************************************************************************
;*	Module Name:	INTTM80						*
;*	Function:	interrupt tm80					*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
INTTM80:
	PUSH	AX
	PUSH	HL
;	EI

;;------------------------------------------------------------------------
;;	BT	f_TYPEdigit,$BUZZERdigit
;	BF	f_BUZon,$BUZoff
;BUZon:
;	BT	o_BUZ,$BUZoff
;	SET1	o_BUZ
;	BR	$NORtm80
;BUZoff:
;	CLR1	o_BUZ
;	BR	NORtm80
;;------------------------------------------------------------------------
;BUZZERdigit:
;	BF	f_BUZon,$BUZoff1
;BUZon1:
;	BF	o_BUZ1,$BUZoff1
;	CLR1	o_BUZ1
;	BR	$NORtm80
;BUZoff1:
;	SET1	o_BUZ1

;------------------------------------------------------------------------	
NORtm80:

;	DEC	C_TM8ct1
;	BNZ	$INT80ret
;	MOV	C_TM8ct1,#4

	CALL	!TMRremot

	TNZDEC	C_STPspeed
	JRNE	BAScnt2         
	LD	A,#n_14ms500
	BTJT	f_STPok,norSTPtime
	LD	A,#8
norSTPtime:
	LD	C_STPspeed,A
	BSET	f_STP14ms

BAScnt2:
	
	DEC	C_TM8cnt
	BNZ	$INT80ret
	MOV	C_TM8cnt,#63	;65;64;8
	SET1	f_BAS3125
	SET1	f_KEY3125
INT80ret:
	POP	HL
	POP	AX
	EI
	NOP
	RETI


;************************************************************************
;************************************************************************
;========================================================================
;	timer count every 1 sec
;========================================================================
TMRcnt:
	CMP	C_TMRsec,#0
	BZ	$NEXTmin
	DEC	C_TMRsec
	RET
NEXTmin:
	MOV	C_TMRsec,#n_1m1s-1
	CMP	C_TMRmin,#0
	BZ	$NEXThour
	DEC	C_TMRmin
	ret
NEXThour:

	MOV	C_TMRmin,#n_1h1m-1	
	TNZDEC	D_TMRon
	CALL	!TMRctrl	
	
	RET
	
;========================================================================


;------------------------------------------------------------------------
;BUZcnt:						;counter for buzzer mode
;	CMP	C_BUZcnt,#0
;	BZ	$BUZdec
;	DEC	C_BUZcnt
;	RET
;BUZdec:
;	CMP	C_BUZmod,#0
;	BZ	$BUZend
;	DEC	C_BUZmod
;	MOV	C_BUZcnt,#n_02S125
;BUZend:
;	RET

;------------------------------------------------------------------------
;========================================================================
CNT5sec:
;	TNZDEC	C_DEF12m

	ret


;------------------------------------------------------------------------
;------------------------------------------------------------------------
DRYcnt:						;counter for DRY STEP
	CMP	C_DRY1m,#0
	BZ	$DRYdec
	DEC	C_DRY1m
	RET
DRYdec:
	CMP	C_DRYtm,#0
	BZ	$DRYendC
	DEC	C_DRYtm
	MOV	C_DRY1m,#n_1m1s
DRYendC:
	RET
;------------------------------------------------------------------------
SLPcnt:						;counter for SLEEP STEP
	CMP	C_SLP1h,#0
	BZ	$SLPdec
	DEC	C_SLP1h
	RET
SLPdec:
	CMP	C_SLPstp,#0
	BZ	$SLPend
	DEC	C_SLPstp
	MOV	C_SLP1h,#n_1h1m
SLPend:
	RET
;------------------------------------------------------------------------
;========================================================================



;========================================================================

HEATcnt:
	BF	o_COMon,$NOcntDEF50min
	TNZDEC	C_DEF44m

NOcntDEF50min:	
	
	RET
;========================================================================
;========================================================================
ERRocdUP:
	cmp	P_ERRcod,#4
	BC	$NO9UP
	MOV	P_ERRcod,#0
NO9UP:
	MOV	B,#4
UPchkERR:
	INC	P_ERRcod
	CMP	P_ERRcod,#5
	BC	$$+2+3
	MOV	P_ERRcod,#1
	
	MOV	A,P_ERRcod
	MOV	C,A
	MOV	A,f_FLGerr
	CALL	!BITAchkA_C
CHKerrC:
	BC	$ERRfind
	DBNZ	B,$UPchkERR
	MOV	P_ERRcod,#0
ERRfind:
	RET	


;************************************************************************
;*	Module Name:	BITAchkA_C					*
;*	Function:	check the bit C of A->cy			*
;*	Input:		A,C						*
;*	Output:		cy						*
;*	Break:		A,C,CY,Z					*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
BITAchkA_C:
	RORC	A,1
	DBNZ	C,$BITAchkA_C
	RET
	
;------------------------------------------------------------------------
	
;	end

⌨️ 快捷键说明

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