📄 nd22.src
字号:
;
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 + -