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

📄 idwracdsp.asm

📁 空调控制程序,MCU 采用NEC D789189
💻 ASM
字号:
;************************************************************************
;*	Module Name:	DISPLAY						*
;*	Function:	display ram control				*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
;========================================================================
	
DSPctrl:
;	ret
	LD	A,#0ffh
	MOV	D_DSPram0,A
	MOV	D_DSPram1,A
	MOV	D_DSPram2,A	
	MOV	D_DSPram3,A	
;	SET1	f_LEDsfan
	BTJF	f_PWRon,DSPoff
	call	!DSPdigRAM
	
	MOV	D_DSPram2,#0FFH
	CLR1	f_LEDpwr
	CALL	!LEDmod
;------------------------------------------------------------------------	
	call	!LEDfansp			;PTAC
	CALL	!LEDother
;	SET1	f_LEDsfan
	CMP	M_FANset,#n_FANauto		;BF	f_FANsmart,$CLRsmartLED
	BNE	CLRsmartLED
;	CLR1	f_LEDsfan
CLRsmartLED:	
;------------------------------------------------------------------------
	call	!LEDtimer			;TTW
;------------------------------------------------------------------------
;	BT	f_LEDheat,$CLRledMONEY
;	clr1	o_LED
;	RET
;CLRledMONEY:
;	CLR1	o_LED
;	RET
;------------------------------------------------------------------------
DSPoff:
;	CLR1	o_LED
	
	mov	A,f_FLGerr
	CMP	A,#0
	BNE	digERRcod
	
	cmp	M_LEDdigram,#n_DSPtonSET
	BEQ	TMRdsp10SEC
	cmp	M_LEDdigram,#n_TOFFset
	BEQ	TMRdsp10SEC	
	BTJF	f_TMRset,OFFled
	BRES	f_LEDtmr	
OFFled:
	ret
TMRdsp10SEC:
	CALL	!DSPdigRAM
	BT	f_TIM05s,$OFFled
	BRES	f_LEDtmr
	RET
;------------------------------------------------------------------------
;************************************************************************
;	digital dat ram set
;************************************************************************
DSPdigRAM:
	LD	A,M_LEDdigram		;{n_TMPset,n_TMPrm,DSPclkSET,DSPtonSET,n_TOFFset,n_ERRcod,n_FANset}
	CP	A,#n_ERRcod
	JREQ	digERRcod

	CP	A,#n_DSPtonSET
	JREQ	DSPtonSET
	CP	A,#n_TOFFset
	JREQ	DSPtoffSET

	CP	A,#n_TMPset
	JREQ	DSPsetTMP
	CP	A,#n_TMPrm
	JREQ	DSPrmTMP
;	CP	A,#n_DSPclkSET
;	JREQ	DSPclkSET

;	CP	A,#n_FANset
;	JREQ	DSPfanSET
;;========================================================================
;DSPfanSET:
;	LD	A,M_FANset
;	CP	A,#n_FANauto
;	JREQ	DSPautoFAN
;	CALL	!TABdigit
;	LD	D_DSPram+1,A
;	LD	A,#0DH	
;	CALL	!TABdigit
;	LD	D_DSPram,A
;	RET
;DSPautoFAN:
;	LD	A,#0DH	
;	CALL	!TABdigit
;	LD	D_DSPram+1,A
;	LD	A,#5H	
;	CALL	!TABdigit
;	LD	D_DSPram,A
;	RET
;;========================================================================
digERRcod:
	LD	A,#0DH
	CALL	!TABdigit
	LD	D_DSPram,A
	
	LD	A,P_ERRcod		;point the err cod to display.
	CALL	!TABdigit
	LD	D_DSPram+1,A
	RET
;;========================================================================
;DSPclkSET:
;	LD	A,C_TMRclk
;	BR	DSP2TMR
DSPtonSET:
	LD	A,D_TMRon
	BR	DSP2TMR
DSPtoffSET:
	LD	A,D_TMRoff
DSP2TMR:
	cmp	A,#0
	BEQ	DSP__
;	CMP	A,#12+1
;	BC	$DSPnomore12
;;	CLR1	f_LEDpm
;	SUBC	A,#12
DSPnomore12:
	BRA	DSP2HEX
DSP__:
	MOV	A,#0AH
	MOV	D_WORK,A
	MOV	D_WORK+1,A
	BRA	dsp_WORK
;========================================================================
DSPsetTMP:	
DSPrmTMP:
	CMP	M_MODset,#n_Mfan
	BEQ	endDIG
;	CMP	C_DSP10sec,#6
;	BNC	$NOblinkSET
;	BT	f_TIM05s,$endDIG
NOblinkSET:	
	BT	f_COOLquick,$QCtset
	
;	LD	A,D_TMPcset
;	BTJF	f_DEGREEf,DSPtmp
	LD	A,D_TMPrun
	BTJT	f_DEGREEf,DSPtmp
	;CALL	!degreeF2C
	LD	A,D_TMPcRUN

	BR	DSPtmp
QCtset:
	LD	A,#16+n_TMPdsp
	BTJF	f_DEGREEf,DSPtmp
	LD	A,#60+n_TMPdsp
	BR	DSPtmp
	
;DSPrmTMP:	
	LD	A,D_TMPrm
	BTJT	f_DEGREEf,DSPtmp
	CALL	!degreeF2C
	
DSPtmp:	
	SUB	A,#n_TMPdsp
	BNC	$NOoverF
	LD	A,#0
NOoverF:
	CLR1	CY
;	RORC	A,1	
DSP2HEX:	
	CALL	!HEX2DEC
dsp_WORK:
	LD	A,D_WORK
	CALL	!TABdigit
	LD	D_DSPram+1,a
	
	LD	A,D_WORK+1
	CMP	A,#0
	BNZ	$NOdig0
	LD	A,#0FH
NOdig0:	
	CALL	!TABdigit
	AND	A,D_DSPram		;f_LEDpm
	LD	D_DSPram,A
endDIG:	
	RET
;------------------------------------------------------------------------
;------------------------------------------------------------------------

;========================================================================
;************************************************************************
;*	Module Name:							*
;*	Function:							*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;------------------------------------------------------------------------
LEDmod:
	BTJF	f_MODmoney,noMONEY
	CLR1	f_LEDmoney
noMONEY:
	BT	f_COOLquick,$NOcoolLED
	LD	A,M_MODset
	;AND	A,#3
	CP	A,#n_Mcool
	JREQ	DSPcool
	CP	A,#n_Mheat
	JREQ	DSPheat

	CP	A,#n_Mauto
	JREQ	DSPauto

	CP	A,#n_Mdry
	JREQ	DSPdry

	
	BR	DSPfan
DSPcool:
	BTJT	f_MODmoney,NOcoolLED
	BRES	f_LEDcool
NOcoolLED:
	ret
DSPauto:
	BRES	f_LEDauto
	ret
DSPdry:
	BRES	f_LEDdry
	ret
DSPheat:
	BF	f_ERRhPUMP,$NOheatERR
	BTJF	f_TIM05s,ledHTRoff
NOheatERR:
	BRES	f_LEDheat
ledHTRoff:	
	ret
DSPfan:
	BRES	f_LEDfan
	ret
;========================================================================
LEDfansp:
	CMP	M_MODset,#n_Mauto
	BNE	DSPfanSET
	LD	A,M_FANsp
	BR	dspFAN
DSPfanSET:	
	LD	A,M_FANset
dspFAN:	
	CP	A,#n_FANhigh
	JREQ	DSPfanHIGH
	CP	A,#n_FANmid
	JREQ	DSPfanMED
	
DSPfanLOW:
	BRES	f_LEDlow
	ret
DSPfanMED:
	BRES	f_LEDmid
	RET
DSPfanHIGH:
	BRES	f_LEDhigh
	ret

	
;************************************************************************
;*	Module Name:							*
;*	Function:							*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
LEDtimer:
;	BTJT	f_SYStest,LEDtest
;BLKcheck:
	CMP	M_LEDdigram,#n_DSPtonSET
	BEQ	BLINKtmr
	CMP	M_LEDdigram,#n_TOFFset
	BEQ	BLINKtmr
	
	BTJF	f_TMRset,LEDnoTMR
litTMR:	
	BRES	f_LEDtmr
LEDnoTMR:
;	LD	A,M_LEDdigram		;{n_TMPset,n_TMPrm,DSPclkSET,DSPtonSET,n_TOFFset,n_ERRcod,n_FANset}
;;	CP	A,#n_DSPclkSET
;;	JREQ	LEDlitCLK
;	CP	A,#n_DSPtonSET
;	JREQ	LEDlitTON
;	CP	A,#n_TOFFset
;	JREQ	LEDlitTOFF
	ret
BLINKtmr:
	BF	f_TIM05s,$litTMR
	RET
;------------------------------------------------------------------------
;LEDlitCLK:	
;	BRES	f_LEDclk
;	BSET	f_LEDton
;	BSET	f_LEDtoff
;	RET
;LEDlitTON:	
;	BSET	f_LEDclk
;	BRES	f_LEDton
;	BSET	f_LEDtoff
;	RET
;LEDlitTOFF:	
;	BSET	f_LEDclk
;	BSET	f_LEDton
;	BRES	f_LEDtoff
;	RET
;========================================================================
;LEDtest:
;	BTJF	f_TIM05s,testOFF
;	LD	A,M_LEDdigram		;{n_TMPset,n_TMPrm,DSPclkSET,DSPtonSET,n_TOFFset,n_ERRcod,n_FANset}
;	CP	A,#n_ERRcod
;	JREQ	LEDlitERR
;;	BRES	f_LEDclk
;;	BRES	f_LEDton
;;	BRES	f_LEDtoff
;	BSET	f_LEDtmr
;	ret	
;LEDlitERR:
;	BSET	f_LEDclk
;	BRES	f_LEDton
;	BRES	f_LEDtoff
;	BRES	f_LEDtmr
;	RET
;	
;testOFF:
;	BSET	f_LEDclk
;	BSET	f_LEDton
;	BSET	f_LEDtoff
;	BSET	f_LEDtmr
;	ret
;************************************************************************
;led display define:
;LED:	D3	D4	 D5	D6	D7	D8	D9	D10		D11
;INDIA:	FANL	FANH	FAN	COOL	TIMER	FANM	FILTER	QUCIKCOOL	POWERSAVE
;GOODMAN:FANL	FANH	FAN	COOL	TIMER	FANM	FILTER	SLEEP		HEAT
;========================================================================
LEDother:
	BTJF	f_SWGset,ENDswingLED
	CLR1	f_LEDswing
ENDswingLED:
;------------------------------------------------------------------------
LEDfilter:
	MOVW	AX,C_FLThour
	CMPW	AX,#180*2		;f_FILTER
	BNC	$CLRfilter
	CMPW	AX,#0
	BEQ	BLINKfilter
BLINKfilter:
	BT	f_TIM05s,$CLRfilter
LITfilter:
	CLR1	f_LEDfilter
CLRfilter:
;------------------------------------------------------------------------
LEDsleep:

	BF	f_SLEEP,$CLRslpLED
	CLR1	f_LEDsleep
CLRslpLED:

QcoolLED:
	BF	f_COOLquick,$ENDqcLED
	CLR1	f_LEDqucik
ENDqcLED:
;------------------------------------------------------------------------
;[his-013]
LEDfrz:
	BF	f_FRZoff,$noFRZled
	BT	f_TIM05s,$noFRZled
	CLR1	f_FRZled
noFRZled:
	
;------------------------------------------------------------------------
;------------------------------------------------------------------------

	RET
;========================================================================
OUT1byte:	
	BRES	o_164CLK
	BSET	o_164A
	LD	X,#8
LOOP1byte:	
	RLC	A;RRC	A
	CALL	!OUT1bit
	DEC	X
	JRNE	LOOP1byte
	
	BRES	o_164CLK	
	RET
;========================================================================
;========================================================================
;	Display Ic 74Ls164 Output Timming
;	INPUT	:CY
;========================================================================
OUT1bit:
	BRES	o_164CLK
	nop
	nop
;	nop
;	nop
;	nop
;	nop
;	nop
;	nop
;	nop
;	nop

	JRNC	OUT164low
	BSET	o_164A
	JRA	OUT164CLK
OUT164low:
	BRES	o_164A
OUT164CLK:
	nop
	nop
;	nop
;	nop
;	nop
;	nop
;	nop
	nop
	nop
	BSET	o_164CLK
	NOP
	nop
	nop
	nop
	nop
	nop

	RET
;========================================================================
;========================================================================
;	HEX2DEC
;	INPUT	R0<=99(HEX)
;	OUTPUT	R0,R1(DEC)
;========================================================================
HEX2DEC:
	LD	X,#0
DECloop:
	RCF	
	SBC	A,#10
	JRC	DIVend
	INC	X
	JRA	DECloop
DIVend:
	ADD	A,#10
	LD	D_WORK,A
	XCH	A,X
	LD	D_WORK+1,A
	RET	
;************************************************************************
;*	Module Name:							*
;*	Function:							*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;	
;-------------------------------------------------------------------------
TABdigit: 
	XCH	A,X
	LD	A,#0
	ADDW	AX,#TABdatDIG
	MOVW	HL,AX
	LD	A,[HL]
	xor	A,#0ffh           
	RET
TABdatDIG:      
;        	0ABCDEFG          
	DB	01111110b	;0	-----0
	DB	00110000b	;1      -----1
	DB	01101101b	;2      -----2
	DB	01111001b	;3      -----3
	DB	00110011b	;4      -----4
	DB	01011011b	;5      -----5
	DB	01011111b	;6      -----6
	DB	01110000b	;7      -----7
	DB	01111111b	;8      -----8
	DB	01111011b	;9      -----9
	DB	00000001b	;-      -----A
	DB	00011101b	;O      -----B
	DB	00110111b	;H      -----C
	DB	01000111b	;F      -----D
	DB	01001111b	;E      -----E
	DB	00000000b	;SPACE	-----F
		
;	end	

⌨️ 快捷键说明

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