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

📄 idwracsys.asm

📁 空调控制程序,MCU 采用NEC D789189
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	NAME SYSTEM
	
	SYSfile	EQU	1
;************************************************************************
;*	Module Name:	EL001INC					*
;*	Function:	indoor function					*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	version:	v2.6(01-10-30 11:10)				*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
;RAMstart	DSEG	AT	0FE20H
 	$include 	(IDwracsym.INC)
	$include	(IDwracRAM.INC)
	$include	(IDwracMAC.INC)
;	EXTRN	RMCcheck
;	EXTRN	RMCinit
	PUBLIC	PROTfrz
	PUBLIC	DEFchk
	PUBLIC	CLRheat
	PUBLIC	M_FANsp
	PUBLIC	M_MODrun
	PUBLIC	C_COM3mP
	PUBLIC	C_COM5s
	PUBLIC	f_DEFing
	        
;	EXTRN   BEEP2tms
;	EXTRN   TMcount 
;	EXTRN   ADcvrt  
;	EXTRN   RMTdec  
;	EXTRN   DISPLAY 
;	EXTRN   TIMER   
;	EXTRN   SLEEP   
;	EXTRN   MODctrl 
;	EXTRN   PGMctrl 
;	EXTRN   STEPctrl
;	EXTRN   STPctrl 
;	EXTRN   OFF_COM 
;	EXTRN	INTTM80
;	EXTRN	INTP0
;	EXTRN	INTP1
;	EXTRN	INTP2
;	EXTRN	BEEP1tms
;************************************************************************
	CSEG
;--------------------------------
;--------------------------------
INT0    CSEG    AT	0000H
CCOD0:  	DW	START
INT1    CSEG    AT	0004H
CCOD1:  	DW	INTWDT
INT2    CSEG    AT	0006H
CCOD2:  	DW	INTP0
INT3    CSEG    AT	0008H
CCOD3:  	DW	INTP1
INT4    CSEG    AT	000AH
CCOD4:  	DW	INTP2
INT5    CSEG    AT	000CH
CCOD5:  	DW	INTP3
INT6    CSEG    AT	000EH   	
CCOD6:  	DW	INTSR20
INT7    CSEG    AT	0010H
CCOD7:  	DW	INTST20
INT8    CSEG    AT	0012H
CCOD8:  	DW	INTWT
INT9    CSEG    AT	0014H
CCOD9:  	DW	INTWTI
INT10   CSEG    AT	0016H
CCOD10: 	DW	INTTM80
INT11   CSEG    AT	0018H
CCOD11: 	DW	INTTM81
INT12   CSEG    AT	001AH
CCOD12: 	DW	INTTM82
INT13   CSEG    AT	001CH
CCOD13: 	DW	INTTM90
INT14   CSEG    AT	0022H
CCOD14: 	DW	INTAD0



;

;************************************************************************
;*	Module Name:							*
;*	Function:							*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;

;------------------------------------------------------------------------
	ORG     0080H
;------------------------------------------------------------------------

	
START:
	DI
	MOVW    AX,#0FE20H	  ;feFF--fe00 is  stack  area
	MOVW	SP,AX

	MOV     PCC,#00H	  ;0.4us  cpu时钟
	MOV     OSTS,#02H	  ;晶振稳定时间(6.55ms)
	MOVW    HL,#0FE00H				 ;
RAMCL1:
	MOV     A,#0
	MOV     [HL],A
	INCW    HL
	MOVW    AX,HL
	CMPW    AX,#0FF00H
	BC      $RAMCL1
;----------------------------------
;       RAM   INITIATION
;----------------------------------
	MOV	A,#0H
	MOV	P0,A

	MOV     PM0,#11101000b	  ;port 0 in/out
;		     ||||||||
;		     |||||||+-----;o_FANmid
;		     ||||||+------;o_FANlow
;		     |||||+-------;o_HTR2
;		     ||||+--------;o_S4on
;		     |||+---------;o_COMon
;		     +++----------;no pin
	MOV     PM1,#11111111b	  ;port 1 in/out
;		     ||||||||
;		     |||||||+-----;i_KEYin1
;		     ||||||+------;i_KEYin2
;		     ++++++-------;no pin
	MOV	P2,#0
	MOV     PM2,#10000000b	  ;port in/out select
;		     ||||||||
;		     |||||||+-----;o_HTR1		
;		     ||||||+------;o_EXTon		
;		     |||||+-------;o_LED		
;		     ||||+--------;o_164A		
;		     |||+---------;o_164CLK	
;		     ||+----------;o_SWGon		
;		     |+-----------;o_FANhigh	
;		     +------------;no pin
	SET1	o_COM1
	SET1	o_COM2
	MOV     PM3,#11110001b	  ;port in/out select
;		     ||||||||
;		     |||||||+-----;i_RMT	
;		     ||||||+------;o_COM1  
;		     |||||+-------;o_COM2  
;		     ||||+--------;o_BUZ
;		     ++++---------;no pin
	SET1	o_COM1
	SET1	o_COM2

	MOV	P5,#0FH
	MOV     PM5,#11110000b	  ;port5 in/output select
;		     ||||||||
;		     |||||||+-----;o_STP1
;		     ||||||+------;o_STP2
;		     |||||+-------;o_STP3
;		     ||||+--------;o_STP4
;		     ++++---------;no pin

;	MOV     PM6,#11111111b	  ;port 6 in/out
;		     ||||||||
;		     |||||||+-----;temp room
;		     ||||||+------;temp in pipe
;		     |||||+-------;temp outdoor pipe
;		     ||||+--------;VOLTAGE A/D
;		     ++++---------;no pin
;------------------------------------------------------------------------
	MOV	PUB2,#0000000B	  ;PORT 5 pull-up
;------------------------------------------------------------------------
	MOV	TMC90,#00000010B  ;Timer 20 control
;		       ||||||||
;		       |||||||+---;port mode (timer output disable)
;		       |||||++----;Fx/ 2^6
;		       ||||+------;inverse disable
;		       ||++-------;capture disable
;		       |+---------;clear by reset and s/w
;		       +----------;stores 16-bit timerput data
;------------------------------------------------------------------------
	MOV	BZC90,#01H
;------------------------------------------------------------------------
	MOV	TMC80,#10000010B
;		       ||||||||
;		       |||||||+---;port mode (timer output disable)
;		       |||||++----;Fx/ 2^3
;		       ||+++------;no use
;		       |+---------;Timer counter operating mode
;		       +----------;operation enable
	MOV	CR80,#248	;实测值快系数:0.995897正好是248/249		;247	;4Mhz 500us ->296us because 296*63 =31.248ms -> 24 h误差6秒

;------------------------------------------------------------------------

	MOV	TCL2,#00000110B
;		      ||||||||
;		      |||||+++----;Fx/2^10 watchdog timer 31.28ms)
;		      +++++-------;no use

        MOV	WDTM,#10011000B
;		      ||||||||
;		      |||||+++----;NO USE
;		      |||++-------;WATCHDOG RESET FUNCTION
;		      |++---------;NO use
;		      +-----------;RUN , clear WATCHDOG timer and start

;-----------------------------------
;------------------------------------------------------------------------
;	INTERRUPT 	INITIATION
;------------------------------------------------------------------------
	MOV	MK0,#11111101B
;		     ||||||||
;		     |||||||+-----;tmmk4 disable
;		     ||||||+------;pmk0 disable
;		     |||||+-------;pmk1 ENABLE
;		     ||||+--------;pmk2 ENABLE
;		     |||+---------;pmk2 DISABLE	
;		     ||+----------;smrk20 disable
;		     |+-----------;smtk20 disable
;		     +------------;WATCH TIMER DISABLE	

	MOV	MK1,#11111101B
;		     ||||||||
;		     |||||||+-----;WATCH TIMER DISABLEADMK0 disable
;		     ||||||+------;TMMK80 ENABLE
;		     |||||+-------;TMMK81 DISABLE
;		     ||||+--------;TMMK82 DISABLE
;		     |||+---------;TMMK90 disable
;		     ||+----------;smbmk0 disable
;		     |+-----------;smbmk0 disableTMMK80 ENABLE
;		     +------------;admk0 disable

	MOV     INTM0,#00001100B  ;ZERO RISE EDGE THE OTHER FALL EDGE
;------------------------------------------------------------------------
;------------------------------------------------------------------------
	MOV	ADS0,#0
	MOV	ADM0,#10100000B	  ;START A/D SPEED=72/FCC
;------------------------------------------------------------------------
;========================================================================
;	initiliaze	data
;========================================================================
DATinit:
	bf	i_COOlonly,$$+4+3
	SET1	f_COOLonly
	CLR1	s_ioP03
	
	MOV	C_RES2s,#n_2s125	;reset 2 second count
	MOV	M_MODset,#n_Mcool
	MOV	M_FANset,#n_FANhigh
	mov	C_AUT20s,#n_20s1s
	MOV	C_TM8cnt,#8
	MOV	C_BT5s,#n_5s1s
	MOV	C_BAS750,#3		;COUNT BY 250MS TO 750MS

	MOV	C_TM8ct1,#4
	MOV	C_BT05s,#4
	MOV	C_BT125m,#4
	MOV	D_STPnow,#n_STPd30
	MOV	C_ERRheat20sec,#n_20s1s	
	
	MOV	C_TMRsec,#n_1m1s-1
	MOV	C_TMRmin,#n_1h1m-1

	MOV	C_SLPstp,#2		;sleep set to 7 step. each step count to 7min 掉电后睡眠重计时
	MOV	C_SLP1h,#n_1h1m		;count source 1min
	
	MOV	C_KEYerr,#n_20s1s
	CALL	!OUTctrl
	MOV	D_TMPset,#75+n_TMPdsp
	MOV	D_TMPcset,#24+n_TMPdsp

	MOVW	AX,#1080
	MOVW	C_FLThour,AX
	LD	C_FLTmin,#30		;每30min record


;	CALL	!RMCinit
	
;	CALL	!TESTchk
;	BC	$skipI2C



	CALL	!LOADdat

	
	
	CLR1	f_ERRhPUMP		;don't log the pump error when power failure
	MOV	A,D_TMPset
	CALL	!degreeF2C
	LD	D_TMPcset,A

	BF	f_PWRon,$skipI2C
	SET1	f_PWRon
;------------------------------------------------------------------------
;[HIS-016]
	cmp	M_MODset,#n_Mfan
	BEQ	$+2+3
	MOV	C_COM3mP,#90		;n_3m1s  ;new require 90 sec when power on
;------------------------------------------------------------------------

	
skipI2C:
;========================================================================
;========================================================================
	call	!ADintit0
	CALL	!BEEP1tms
	EI
;	BR	MAIN

;************************************************************************
;*	Module Name:	EL001SYS.ASM					*
;*	Function:	MAIN LOOP					*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
MAIN:
	CALL	!DATEchk		;data check
	CALL	!OUTctrl                ;output to the port
	CALL	!TMcount		;timer counter
	CALL	!ADcvrt                 ;AD convert and check table
	CALL	!BUZctrl
;	CALL	!TYPEsel	
	CALL	!DSPctrl                ;led display control
	call	!SCANctrl
	call	!Delay1ms
;	call	!Delay1ms
	;when reset, first 2 second wait display all
;========================================================================
;	BT	f_RMCin,$skipPANEL
	CALL	!REMOTdec               ;remote data decode	
;	call	!TESTctrl
;	CALL	!DEBUGdat		;fill debug data for emulator
	CALL	!KEYpress               ;KEY FUNCTION
;	CALL	!TIMER                  ;timer on /off control
        CALL    !SLEEP
	CALL	!STEPctrl        
	CMP	C_RES2s,#0		;[HIS-001] move for display quickly
	BNZ	$MAIN	

	CALL	!MODctrl                ;mode control
	        
	



skipPANEL:	
	CALL	!PROTECT		;Protect control
;	call	!RMCcheck

;	CALL	!ERRlog

;	call	!Delay1ms		
	BR	$MAIN                   ;

;************************************************************************
ERRlog:
	MOV	A,f_FLGerr
	OR	A,D_ERRlog
	MOV	D_ERRlog,A
	SET1	D_ERRlog+1.0
	RET
;************************************************************************


;************************************************************************
;*	Module Name:	TYPEsel						*
;*	Function:	INPUT from select pin				*
;*	Input:								*
;*	Output:								*
;*	Break:								*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------

;------------------------------------------------------------------------





;************************************************************************
;*	Module Name:	RAMcopy						*
;*	Function:	[HL]->[DE], byte 5				*
;*	Input:		HL,DE,B						*
;*	Output:								*
;*	Break:		A,B,HL,DE					*
;*	stack:								*
;************************************************************************
;	History:
;
;------------------------------------------------------------------------
RAMcopy:
	MOV	A,[HL]
	MOV	[DE],A
	INCW	HL
	INCW	DE
	DBNZ	B,$RAMcopy
	RET

;************************************************************************
;*	Module Name:	RORax						*
;*	Function:	AX>>1						*
;*	Input:	AX							*
;*	Output:	AX							*
;*	Break:								*
;*	stack:								*

⌨️ 快捷键说明

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