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

📄 nd22.src

📁 S3F9454的源代码
💻 SRC
📖 第 1 页 / 共 2 页
字号:
;
DLY:
	LD	R13,#4
DLYLOOP:	
	DEC	R13
	JR	NZ,DLYLOOP
	RET
;	
LED_DISPLAY:
	TM	WORK_FG,#DISP_FG_or
	JR	NZ,LED123
	RET
LED123:
	AND	WORK_FG,#DISP_FG_and
;
	LD	P2CONH,#01001001B;P26/P25/P24 as OUTPUT
	OR	P2,#LED_COM1_or
	OR	P2,#LED_SEG1_or
	LD	P0,#0FFH
;	
	CP	DIGIT,#0
	JP	Z,DG0
	CP	DIGIT,#1
	JP	Z,DG1
	CP	DIGIT,#2
	JP	Z,DG2
KEYSCAN:
	CLR	DIGIT
	AND	P2,#LED_SEG1_and
	LD	P0,#00001111B
	CALL	DLY
	TM	P1,#KEY_IN_or
	JP	NZ,NOKEYIN
	OR	P2,#LED_SEG1_or
	CLR	KEYVALUE
	CLR	NEWKEY
	CLR	KEY_CNT
	AND	WORK_FG,#KEYDEC_FG_and
	LD	P0,#11110111B
;	
NEXTSCAN:
	INC	KEYVALUE
	RL	P0
	CALL	DLY
	JR	NC,ENDP0SCAN
	TM	P1,#KEY_IN_or
	JR	NZ,NEXTSCAN
	LD	NEWKEY,KEYVALUE
	INC	KEY_CNT	
	CP	KEYVALUE,#KEY_DEC
	JR	Z,SETKEYDEC
	CP	KEYVALUE,#KEY_INC
	JR	NZ,NEXTSCAN
	TM	WORK_FG,#KEYDEC_FG_or
	JR	Z,NEXTSCAN
	LD	NEWKEY,#KEY_LOCK
	JR	T,NEXTSCAN
SETKEYDEC:
	OR	WORK_FG,#KEYDEC_FG_or
	JR	T,NEXTSCAN
ENDP0SCAN:
	LD	P0,#0FFH
	AND	P2,#LED_SEG1_and
	CALL	DLY
	TM	P1,#KEY_IN_or
	JR	NZ,ENDSCAN
	LD	NEWKEY,KEYVALUE
	INC	KEY_CNT
ENDSCAN:
	CP	KEY_CNT,#1
	JR	Z,CHKKEYONE
	CP	KEY_CNT,#2
	JP	NZ,NOKEY
	CP	NEWKEY,#KEY_LOCK
	JP	NZ,NOKEY
CHKKEYONE:	
	CP	NEWKEY,#0
	JR	Z,NOKEY
;
	CP	NEWKEY,OLDKEY
	JR	Z,DBKEY
	CLR	TMR_DBKEY
	LD	OLDKEY,NEWKEY
	RET
DBKEY:
	INC	TMR_DBKEY
	JR	NZ,CHKTMRDBKEY
	LD	TMR_DBKEY,#0FFH
CHKTMRDBKEY:	
	CP	OLDKEY,#KEY_ON
	JR	Z,CHKKEYOFF
	CP	OLDKEY,#KEY_LOCK
	JR	NZ,CHKKEY
CHKKEYOFF:	
	CP	TMR_DBKEY,#T_3S
	JR	NC,GETKEYOFF
	RET	
GETKEYOFF:
	CP	OLDKEY,#KEY_LOCK
	JR	Z,GETKEYLOCK
	TM	STATE_FG,#KEY_PRESS_FG_or
	JP	NZ,KSR
	TM	STATE_FG,#ONOFF_FG_or
	JR	Z,NOKEY
	AND	STATE_FG,#KEY_PRESS_FG_and
	LD	COMMAND,#KEY_OFF
	RET	
GETKEYLOCK:
	AND	STATE_FG,#KEY_PRESS_FG_and
	LD	COMMAND,#KEY_LOCK
	CLR	TMR_DBKEY
	RET	
CHKKEY:
	TM	STATE_FG,#KEY_PRESS_FG_or
	JR	Z,KEYFIRST
	CP	TMR_DBKEY,#T_05S
	JR	C,KSR
	LD	OLDKEY,NEWKEY
	CLR	TMR_DBKEY
	CP	OLDKEY,#KEY_INC
	JR	Z,GETKEY
	CP	OLDKEY,#KEY_DEC
	JR	Z,GETKEY
	RET
KEYFIRST:	
	CP	TMR_DBKEY,#T_DBKEY
	JR	NC,GETKEY
	RET	
GETKEY:
	AND	STATE_FG,#KEY_PRESS_FG_and
	LD	COMMAND,OLDKEY
	RET	
NOKEYIN:
	AND	STATE_FG,#KEY_PRESS_FG_and
	AND	STATE_FG,#CONTKEY_FG_and
	TM	RCV_FG,#RCVKEY_FG_or
	JR	NZ,DSPKEYRET
	AND	RCV_FG,#KEY_DB_FG_and
	CLR	COMMAND
DSPKEYRET:
	CP	OLDKEY,#KEY_ON
	JR	Z,CHKKEYON
NOKEY:
	CLR	OLDKEY
KSR:	
	RET	
CHKKEYON:
	CP	TMR_DBKEY,#T_2S
	JR	NC,NOKEY
	LD	COMMAND,OLDKEY
	CLR	OLDKEY
	RET
		
DG2:
	LD	DIGIT,#3
	TM	LED_COM3,#LED_SAVE_or
	JR	Z,DG2SEG7
	AND	P2,#LED_SEG1_and
DG2SEG7:
	LD	R13,LED_COM3
	COM	R13
	LD	P0,R13
	AND	P2,#LED_COM1_and	
	RET
DG1:
	LD	DIGIT,#2
	TM	LED_COM2,#LED_A_or
	JR	Z,DG1SEG7
	AND	P2,#LED_SEG1_and
DG1SEG7:
	LD	R13,LED_COM2
	COM	R13
	LD	P0,R13
	LD	P2CONH,#01001010B	;P26/P25/P24 as OUTPUT
	AND	P2,#LED_COM2_and
	RET
DG0:
	LD	DIGIT,#1
	TM	LED_COM1,#LED_A_or
	JR	Z,DG0SEG7
	AND	P2,#LED_SEG1_and
DG0SEG7:	
	LD	R13,LED_COM1
	COM	R13
	LD	P0,R13
	LD	P2CONH,#01001010B	;P26/P25/P24 as OUTPUT
	OR	P2,#LED_COM2_or
	RET
;
;				
JOB:
	CP	ERROR_FG,#0
	JR	NZ,ERRORDSP
	TM	STATE_FG,#ONOFF_FG_or
	JR	Z,JOBRET
	CALL	MODEDISP
	CALL	SYMLDSP
	CALL	HEATDSP
;
TEMPCHK:
	LD	R0,TEMP_SET
	TM	STATE_FG,#SYML_SAVE_FG_or
	JR	Z,CHKNORMALTEMP
	SUB	R0,#4
	CP	R0,#5
	JR	NC,CHKNORMALTEMP
	LD	R0,#5
CHKNORMALTEMP:	
	TM	STATE_FG,#HEAT_ON_FG_or
	JR	Z,HEATONCHK
	SUB	R0,T_AIR
	JR	Z,HEATOFF
	JR	C,HEATOFF
	JR	RELAYON
HEATONCHK:	
	TM	STATE_FG,#FIRHEATON_FG_or
	JR	Z,CHKHEATON
	SUB	R0,#3		;TEMP_SET
	LD	R1,R0
CHKHEATON:	
	SUB	R0,T_AIR
	JR	NC,HEATON
	RET
HEATON:
	TM	STATE_FG,#FIRHEATON_FG_or
	JR	NZ,RELAYON
	SUB	R1,T_AIR
	JR	NZ,RELAYON
	RET
;
RELAYON:
	OR	STATE_FG,#FIRHEATON_FG_or
	OR	STATE_FG,#HEAT_ON_FG_or
	TM	STATE_FG,#HEAT_SET_FG_or
	JR	Z,HIHEATON
	AND	P2,#HEAT_HI_and
	OR	P2,#HEAT_LOW_or
	AND	LED_COM3,#LED_I_and
	OR	LED_COM3,#LED_II_or
	RET
HIHEATON:
	OR	P2,#HEAT_LOW_or
	OR	P2,#HEAT_HI_or
	AND	LED_COM3,#LED_II_and
	OR	LED_COM3,#LED_I_or
	RET	
;		
HEATOFF:
	AND	STATE_FG,#HEAT_ON_FG_and
	AND	P2,#HEAT_HI_and
	AND	P2,#HEAT_LOW_and
	AND	LED_COM3,#LED_I_and
	AND	LED_COM3,#LED_II_and	
JOBRET:	
	RET
;
ERRORDSP:
	AND	P2,#HEAT_HI_and
	AND	P2,#HEAT_LOW_and
	AND	LED_COM3,#LED_II_and
	AND	LED_COM3,#LED_I_and
	CP	ERROR_FG,#1
	JR	Z,NTCOPENDSP
	CP	ERROR_FG,#2
	JR	Z,NTCSHORTDSP
	CP	ERROR_FG,#3
	JR	Z,LOWTEMPDSP
	CP	ERROR_FG,#4
	JR	Z,OVERHEATDSP
	RET
NTCOPENDSP:
NTCSHORTDSP:
	TM	RCV_FG,#FLASH_FG_or
	JR	Z,NULLDSP
LOWTEMPDSP:
OVERHEATDSP:	
	LD	R0,ERROR_FG
	CALL	UP8SEGL
	LD	R0,#0EH
	CALL	UP8SEGH
	RET
NULLDSP:	
	LD	R0,#0FH
	CALL	UP8SEGL
	LD	R0,#0FH
	CALL	UP8SEGH
	RET
			
;
SYMLDSP:
	TM	STATE_FG,#SYML_SAVE_FG_or
	JR	Z,NORMALDSP
	AND	LED_COM3,#LED_HEAT_and
	OR	LED_COM3,#LED_SAVE_or
	RET
NORMALDSP:	
	AND	LED_COM3,#LED_SAVE_and
	OR	LED_COM3,#LED_HEAT_or
	RET
;
HEATDSP:
	CP	ERROR_FG,#0
	JR	NZ,NOHEATDSP
	TM	STATE_FG,#HEAT_ON_FG_or
	JR	Z,NOHEATDSP
	TM	STATE_FG,#HEAT_SET_FG_or
	JR	Z,HIHEATDSP	
	AND	LED_COM3,#LED_I_and
	OR	LED_COM3,#LED_II_or
	RET
HIHEATDSP:
	AND	LED_COM3,#LED_II_and
	OR	LED_COM3,#LED_I_or
	RET	
NOHEATDSP:
	AND	LED_COM3,#LED_II_and
	AND	LED_COM3,#LED_I_and
	RET	
	
;
MODEDISP:
	TM	WORK_FG,#LOCK_DISP_FG_or
	JR	Z,WORKDSP
	LD	R0,#0DH
	CALL	UP8SEGL
	LD	R0,#0CH
	CALL	UP8SEGH
	RET
WORKDSP:		
	CP	MODE_SET,#0
	JR	Z,MODE0DSP
	CP	MODE_SET,#1
	JR	Z,MODE1DSP
	CP	MODE_SET,#2
	JR	Z,MODE2DSP
	RET
MODE0DSP:
	LD	R0,T_AIR 
;	ADD	R0,#3
	CALL	HEX2BCD
	JR	T,SEG8DSP
MODE1DSP:
	LD	R0,TEMP_SET
	CALL	HEX2BCD
	JR	T,SEG8DSP
MODE2DSP:
	LD	R0,TIMER_SET
	CALL	HEX2BCD
SEG8DSP:
	CALL	UP8SEGL
	LD	R0,R1
	CALL	UP8SEGH
	RET
;
HEX2BCD:
	CLR	R1
H2BLOOP:	
	CP	R0,#10	;0AH
	JR	C,H2BR
	SUB	R0,#10	;0AH
	INC	R1
	JR	H2BLOOP
H2BR:	
	RET
;
INT_9454:
	TM	T0CON,#00000010B
	JR	Z,NEXT_CHK1
	TM	T0CON,#00000001B
	JP	NZ,TIMER0_INT
NEXT_CHK1:
	TM	PWMCON,#00000010B
	JR	Z,NEXT_CHK2
	TM	P0PND,#00000001B
	JP	NZ,PWMOVF_INT
NEXT_CHK2:
	TM	P0PND,#00000010B
	JR	Z,NEXT_CHK3
	TM	P0PND,#00000001B
	JP	NZ,INT0_INT
NEXT_CHK3:
	TM	P0PND,#00001000B
	JP	Z,END_INT
	TM	P0PND,#00000100B
	JP	NZ,INT1_INT
END_INT:
	IRET
;
;-------<<Timer0 interrupt service routine>>
TIMER0_INT:
;
	TM	WORK_FG,#BUZ_ON_or
	JR	Z,HILO
	TM	BEEP_CNT,#00000001B
	JR	Z,HILO
	LD	R15,#BUZ_or
	XOR	P2,R15
HILO:
	TM	STATE_FG,#ENRCV_FG_or
	JR	Z,T5MSCNT
	TM	P0,#RCV_mask
	JR	Z,RCVLCNT
	INC	RCV_HIGH_CNT
	JR	NZ,T5MSCNT
	JR	RCVOVER
RCVLCNT:
	INC	RCV_LOW_CNT
	JR	NZ,T5MSCNT
RCVOVER:
	AND	STATE_FG,#ENRCV_FG_and
	LD	RCV_STATE,#0
T5MSCNT:
	DEC	TMR_5MS
	JP	NZ,T0RET
	LD	TMR_5MS,#T_5MS
	OR	WORK_FG,#DISP_FG_or
	CALL	LED123
	DEC	TMR_BEEP
	JR	NZ,L2HTMR
	DEC	BEEP_CNT
	JR	Z,BUZOFF
	TM	BEEP_CNT,#00000001B
	JR	Z,BEEPOFF
	LD	TMR_BEEP,#T_BEEP
	JR	T,L2HTMR
BEEPOFF:
	LD	TMR_BEEP,#T_BEEPOFF
	JR	T,BUZPINOFF
BUZOFF:	
	AND	WORK_FG,#BUZ_ON_and
BUZPINOFF:	
	AND	P2,#BUZ_and
L2HTMR:
T50MS:
	DEC	TMR_50MS
	JR	NZ,T0RET
	LD	TMR_50MS,#T_50MS
	CP	ERROR_FG,#0
	JR	NZ,ADT
	DEC	TMR_DISP
	JR	NZ,ADT
	CLR	MODE_SET
	AND	RCV_FG,#ENFLASH_FG_and
	AND	WORK_FG,#LOCK_DISP_FG_and
	AND	LED_COM1,#LED_DOT_and
	CP	TIMER_SET,#0
	JR	Z,OFFTIMER
	OR	LED_COM3,#LED_TIMER_or
	JR	T,ADT
OFFTIMER:	
	AND	LED_COM3,#LED_TIMER_and
ADT:	
	OR	WORK_FG,#ADNTC_FG_or
	TM	RCV_FG,#ENFLASH_FG_or
	JR	Z,TFANOFF
	DEC	TMR_FLASH
	JR	NZ,T0RET
;	TM	RCV_FG,#ENFLASH_FG_or
;	JR	Z,UPTFLASH
	CP	MODE_SET,#1
	JR	Z,DOTFLASH
	CP	MODE_SET,#2
	JR	NZ,UPTFLASH
S2FLASH:
	XOR	LED_COM3,#LED_TIMER_or
	JR	UPTFLASH
DOTFLASH:
	XOR	LED_COM1,#LED_DOT_or
UPTFLASH:
	XOR	RCV_FG,#FLASH_FG_or
	LD	TMR_FLASH,#T_FLASH
TFANOFF:
	DEC	TMR_COLON
	JR	NZ,T0RET
	LD	TMR_COLON,#T_COLON
;
	CP	TIMER_SET,#0
	JR	Z,T0RET
	DEC	TMR_MIN
	JR	NZ,T0RET
	LD	TMR_MIN,#T_MIN
	DEC	TMR_HOUR
	JR	NZ,T0RET
	LD	TMR_HOUR,#T_HOUR
	DEC	TIMER_SET
	JR	NZ,T0RET
	CALL	PWROFF	
T0RET:
	AND	T0CON,#11110110B
	IRET
;
;-------<<PWM overflow interrupt service routine>>
PWMOVF_INT:
;
	LD	BTCON,#00000010B	;Clear basic timer
;
	AND	PWMCON,#11110110B
	IRET
;
;-------<<External interrupt0 service routine>>
INT0_INT:
;
	CP	RCV_STATE,#0
	JP	Z,STATE0
	CP	RCV_STATE,#1
	JP	Z,STATE1
	CP	RCV_STATE,#2
	JP	NZ,INT0RET
STATE2:
	CP	RCV_LOW_CNT,#RCV_DATA_L_MIN
	JP	C,RCVERR
	CP	RCV_LOW_CNT,#RCV_DATA_L_MAX
	JP	NC,RCVERR
	CP	RCV_HIGH_CNT,#RCV_DATA_H_MIN
	JP	C,RCVERR
	CP	RCV_HIGH_CNT,#RCV_DATA_H0_MAX
	JP	C,RCVDATA0
	CP	RCV_HIGH_CNT,#RCV_DATA_H1_MIN
	JP	C,RCVERR
	CP	RCV_HIGH_CNT,#RCV_DATA_H_MAX
	JP	NC,RCVERR
;	LD	R14,RCV_LOW_CNT
;	RCF
;	RLC	R14
;	SUB	R14,RCV_HIGH_CNT
;	JR	LE,RCVDATA1
;	RCF
;	JR	T,RCVDATA
RCVDATA1:
	SCF
	JR	T,RCVDATA
RCVDATA0:
	RCF
RCVDATA:
	RLC	RCV_DATA1
	RLC	RCV_DATA2
	RLC	RCV_DATA3
	RLC	RCV_DATA4
	RLC	RCV_DATA5
	RLC	RCV_DATA6
	DEC	RCV_DATA_CNT
	JP	NZ,RCVCNTCLR
;DATAOK
	LD	R14,RCV_DATA1
	COM	R14
	CP	R14,RCV_DATA2
	JP	NZ,RCVERR
	LD	R14,RCV_DATA3
	COM	R14
	CP	R14,RCV_DATA4
	JP	NZ,RCVERR
	CP	RCV_DATA4,#2
	JP	NZ,RCVERR
	CP	RCV_DATA2,#RCV_ONOFF
	JP	Z,RCVONOFF
	CP	RCV_DATA2,#RCV_SYML
	JP	Z,RCVSYML
	CP	RCV_DATA2,#RCV_MODE
	JP	Z,RCVMODE
	CP	RCV_DATA2,#RCV_DEC
	JP	Z,RCVTEMPDEC
	CP	RCV_DATA2,#RCV_INC
	JR	NZ,RCVERR
RCVTEMPINC:
	LD	COMMAND,#KEY_INC
	JR	T,RCVKEY
RCVTEMPDEC:
	LD	COMMAND,#KEY_DEC
	JR	T,RCVKEY
RCVMODE:
	LD	COMMAND,#KEY_MODE
	JR	T,RCVKEY
RCVSYML:
	LD	COMMAND,#KEY_SYML
	JR	T,RCVKEY
RCVONOFF:
	TM	STATE_FG,#ONOFF_FG_or
	JR	Z,RCVERR
RCVONKEY:
	LD	COMMAND,#KEY_ON
RCVKEY:
	OR	RCV_FG,#RCVKEY_FG_or
	JR	T,RCVERR
STATE1:
	CP	RCV_LOW_CNT,#RCV_LEAD_L_MIN
	JR	C,RCVERR
	CP	RCV_LOW_CNT,#RCV_LEAD_L_MAX
	JR	NC,RCVERR
	CP	RCV_HIGH_CNT,#RCV_LEAD_H_MIN
	JR	C,RCVERR
	CP	RCV_HIGH_CNT,#RCV_LEAD_H_MAX
	JR	NC,RCVERR
	LD	R14,RCV_HIGH_CNT
	RCF
	RLC	R14
	ADD	R14,RCV_HIGH_CNT
	SUB	R14,RCV_LOW_CNT
	JR	C,CONTPULSE
;LEADING PULSE
	LD	RCV_STATE,#2
	LD	RCV_DATA_CNT,#R_DATA_CNT
	CLR	RCV_DATA1
	CLR	RCV_DATA2
	CLR	RCV_DATA3
	CLR	RCV_DATA4
	CLR	RCV_DATA5
	CLR	RCV_DATA6
	JR	T,RCVCNTCLR
CONTPULSE:
	JR	T,RCVERR
STATE0:
	OR	STATE_FG,#ENRCV_FG_or
	LD	RCV_STATE,#1
	JR	T,RCVCNTCLR
RCVERR:
	AND	STATE_FG,#ENRCV_FG_and
	CLR	RCV_STATE
RCVCNTCLR:
	CLR	RCV_LOW_CNT
	CLR	RCV_HIGH_CNT
INT0RET:
	AND	P0PND,#11111110B
	IRET
;
;-------<<External interrupt service routine>>
INT1_INT:
;
	AND	P0PND,#11111011B
	IRET
;
GETTAIR:
	CALL	AD_NTC_READ
	CLR	R6
SEARCHTAB:	
	LD	R0,NTC_ADVALUEL
	LD	R1,NTC_ADVALUEH
	LD	R3,#TEMPADTABL
	LD	R2,#TEMPADTABL/100H
	ADD	R3,R6
	ADC	R2,#0
	LDC	R4,@RR2
	LD	R3,#TEMPADTABH
	LD	R2,#TEMPADTABH/100H
	ADD	R3,R6
	ADC	R2,#0
	LDC	R5,@RR2
	SUB	R0,R4
	SBC	R1,R5
	JR	C,ENDLKTAB
	INC	R6 
	JR	T,SEARCHTAB
ENDLKTAB:	
	LD	T_AIR,R6
	RET
;
TEMPADTABL:				;1/167
	DB	167			;0
	DB	178			;1
	DB	189			;2
	DB	200			;3
	DB	211			;4
	DB	222			;5
	DB	234			;6
	DB	245			;7
	DB	0			;8
	DB	11			;9
	DB	21			;10
	DB	32			;11
	DB	43			;12
	DB	54			;13
	DB	65			;14
	DB	75			;15
	DB	85			;16
	DB	102			;17
	DB	105			;18
	DB	115			;19
	DB	125			;20
	DB	134			;21
	DB	144			;22
	DB	153			;23
	DB	162			;24
	DB	171			;25
	DB	179			;26
	DB	188			;27
	DB	196			;28
	DB	204			;29
	DB	212			;30
	DB	220			;31
	DB	228			;32
	DB	236			;33
	DB	243			;34
	DB	250			;35
	DB	1			;36
	DB	8			;37
	DB	15			;38
	DB	21			;39
	DB	28			;40
TEMPADTABH:	
	DB	1			;0
	DB	1			;1
	DB	1			;2
	DB	1			;3
	DB	1			;4
	DB	1			;5
	DB	1			;6
	DB	1			;7
	DB	2			;8
	DB	2			;9
	DB	2			;10
	DB	2			;11
	DB	2			;12
	DB	2			;13
	DB	2			;14
	DB	2			;15
	DB	2			;16
	DB	2			;17
	DB	2			;18
	DB	2			;19
	DB	2			;20
	DB	2			;21
	DB	2			;22
	DB	2			;23
	DB	2			;24
	DB	2			;25
	DB	2			;26
	DB	2			;27
	DB	2			;28
	DB	2			;29
	DB	2			;30
	DB	2			;31
	DB	2			;32
	DB	2			;33
	DB	2			;34
	DB	2			;35
	DB	3			;36
	DB	3			;37
	DB	3			;38
	DB	3			;39
	DB	3			;40
;
;
	END
	
	

⌨️ 快捷键说明

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