📄 ylktst.asm
字号:
;**************************************************************
;*
;* MOD: YLKS322 FEN TI AIR CONDITION
;* MPU: TMP87C846
;* CLOCK: 4.19 MHz
;* BY: AIFUAN HANGZHOU DAFENG
;* ALL RIGHT RESERVED
;**************************************************************
;
; EXTFAN ----> (P7).5
;
; COMPRESS ----> (P7).6
; VALVE ----> (P7).4
;
; THE TIME LED----> (P0).5
; THE SLEEP LED----> (P0).4
; THE POWER LED----> (P0).6
; THE RUN LED----> (P0).3
;
; ROOM AD ----> (P6).2
; OUT PIP AD ----> (P6).0
; ROOM PIP AD ----> (P6).1
;
; SHORT -----> (P6).6
; IS 30 -----> (P1).0
; TEST -----> (P6).7
; DL -----> (P7).3
;
;
; AUTO KEY ----> (P0).1
; FORCE KEY ----> (P0).2
;
;*****************************************************************
; DEFINE THE SFR
;*****************************************************************
P0 EQU 0X0
P1 EQU 0X1
P2 EQU 0X2
P6 EQU 0X6
P7 EQU 0X7
P0CR EQU 0XA
P1CR EQU 0XB
P6CR EQU 0XC
P7CR EQU 0XD
ADCCR EQU 0XE
ADCDR EQU 0XF
TREG1AL EQU 0X10
TREG1AH EQU 0X11
TREG1BL EQU 0X12
TREG1BH EQU 0X13
TC1CR EQU 0X14
TC2CR EQU 0X15
TREG2L EQU 0X16
TREG2H EQU 0X17
TREG3A EQU 0X18
TREG3B EQU 0X19
TC3CR EQU 0X1A
TREG5 EQU 0X1D
TC5CR EQU 0X1E
SIOSR EQU 0X20
SIOCR1 EQU 0X20
SIOCR2 EQU 0X21
HSOSR EQU 0X24
P7CR2 EQU 0X27
WDTCR1 EQU 0X34
WDTCR2 EQU 0X35
TBTCR EQU 0X36
EINTCR EQU 0X37
SYSCR1 EQU 0X38
SYSCR2 EQU 0X39
EIRL EQU 0X3A
EIRH EQU 0X3B
ILL EQU 0X3C
ILH EQU 0X3D
;***************** DFINE THE RAM ********************************
MODEP EQU 0X80
WORK EQU 0X81
; 0X81------> 0X85
;
; 0X86------>0X88
SLPDSF EQU 0X86
FANMOD EQU 0X87
SETTMP EQU 0X88
;
HTCMSEC EQU 0X96
FLAG1 EQU 0X97 ;RMB 1
;*****************************************************************
RCVOK EQU 0
DLY3M EQU 1
KEYBUF EQU 2
ADON EQU 3
RMWRN EQU 4
OTPWRN EQU 5
RMPWRN EQU 6
RCVNEW EQU 7
;
RCVNUM EQU 0X98 ;RMB 1
SECOND EQU 0X99 ;RMB 1
MMS EQU 0X9A ;RMB 1
MINUTE EQU 0X9B ;RMB 1
S3MCNT EQU 0X9C
STEPSW EQU 0X9D
STPSPD EQU 0X9E
STPNUM EQU 0X9F
STPNUM2 EQU 0XA0
ADVAL EQU 0XA1
ADTMP EQU 0XA2
RMTMP EQU 0XA3
RMPTMP EQU 0XA4
OTPTMP EQU 0XA5
RMVAL EQU 0XA6
RMPVAL EQU 0XA7
OTPVAL EQU 0XA8
FLAG2 EQU 0XA9
;***************************************************************
CSFRST EQU 0
STPCLS EQU 1 ; 0 ---> CLOSE 1---> OPEN
RSTSTP EQU 2
STPFKJ EQU 3
CSISEND EQU 4
ISDLFLG EQU 5
ISATFLG EQU 6
ISHTFLG EQU 7
;
AUTMMS EQU 0XAA
FLSCNT EQU 0XAB
FLSMMS EQU 0XAC
CMPSEC EQU 0XAD
CMPMIN EQU 0XAE
PRSVAL EQU 0XAF
PRSTMP EQU 0XB0
FLAG3 EQU 0XB1
;*************************************************************
VDLY EQU 0
HI52D EQU 1
FLDFLG EQU 2
CHSFLG EQU 3
HTFCHS EQU 4
BUZZEN EQU 5
ISCOOL EQU 6
GJFLG EQU 7
;
VDCNT EQU 0XB2
MDFTMP EQU 0XB3
CHSSEC EQU 0XB4
CHSMIN EQU 0XB5
HOUR EQU 0XB6
FLAG6 EQU 0XB7
;**************************************************************
LWFN EQU 0
MDFN EQU 1
HGFN EQU 2
SWJWRN EQU 3
CSSTP EQU 4
CUTCF EQU 5
;
FADMMS EQU 0XB8
SLPSEC EQU 0XB9
SLPMIN EQU 0XBA
CMPSEC2 EQU 0XBB
CLH25M EQU 0XBC
LWFNSEC EQU 0XBD
FKWSEC EQU 0XBE
HTCMIN EQU 0XBF
CLSSEC EQU 0XC0
FKWMIN EQU 0XC1
AUTSEC EQU 0XC2
FLDSEC EQU 0XC3
FLFSEC EQU 0XC4
FLFMIN EQU 0XC5
CLCMIN EQU 0XC6
TSTSEC EQU 0XC7
TSTMIN EQU 0XC8
;/DSMIN EQU 0XC9
MMMS EQU 0XCA
OFFSEC EQU 0XCB
OFFMIN EQU 0XCC
FLAG4 EQU 0XCD
;*****************************************************
HAVBUZ EQU 0
IS30JX EQU 1
ISTEST EQU 2
ISCHSH EQU 3
KEY2BF EQU 4
FANON EQU 5
FKERR EQU 6
TSTRUN EQU 7
;
FDRSEC EQU 0XCE
FDRMIN EQU 0XCF
FDRMMS EQU 0XD0
INTCNT EQU 0XD1
STRMIN EQU 0XD2
BUZZCNT EQU 0XD3
BUZ EQU 0XD4
;/HI52C EQU 0XD5
FDTM EQU 0XD6
WJTS EQU 0XD7
RECV EQU 0XD8
ZSCNT EQU 0XD9
ZSBUF EQU 0XDA
WJTSBF EQU 0XDB
; DC
FLAG5 EQU 0XDD
;**************************************************
SWNBUF EQU 0
STPFLF EQU 1
CLSCMP EQU 2
ONCMP EQU 3
ISSHORT EQU 4
HTHI62 EQU 5
IS1H45M EQU 6
STPAUT EQU 7
;
FAN1 EQU 0XDE
FAN2 EQU 0XDF
IFFK EQU 0XE0
ZZZZ EQU 0XE1
;
;/CLSTBF EQU 0XE3
;/HTSTBF EQU 0XE4
CLAMIN EQU 0XE5
FLFMMS EQU 0XE6
AUTSTP EQU 0XE7
FLDMIN EQU 0XE8
CSOFFM EQU 0XE9
CSONM EQU 0XEA
CLH25C EQU 0XEB
;*********************************************************
CODE_1 SECTION CODE ABS=0XE000
;*****************PROGRAM START****************************
RESET:
LD SP,0X23F
NOP
NOP
NOP
DI
NOP
LD RBS,0
NOP
NOP
;
LD (P0CR),0Y01111000
LD (P6CR),0Y00000000
LD (P1CR),0Y11111000 ; ENABLE BUZZER
LD (P7CR),0Y01110100
LD (P0),0Y01111000
LD (WDTCR1),0Y00001101 ; Watch dog time is 62Ms
LD (TC2CR),0Y00001100 ; Sets the TC2 mode and source clock
LDW (TREG2L),0X82F ; Make TC2 is 4MS
LD (EINTCR),0Y0011010 ; Sets the falling edge
NOP ; At the INT1,INT3,INT4
LD (TBTCR),0Y11100010 ; Sets the buzzer 8k
SET (EIRL).5 ; Enable INT1
SET (EIRL).4 ; ENABLE INTTC1
SET (EIRH).6 ; ENABLE INTTC2
SET (EIRH).0 ; ENABLE INTTC3
SET (EIRH).3 ; ENABLE INT3
SET (EIRH).4 ; ENABLE INT4
LD (TC2CR),0Y00101100 ; Start TC2
LD A,0
LD HL,0X48
LD BC,0X1F7
RAMCLR:
LD (HL+),A
DEC BC
JRS F,RAMCLR ; RAM CLEARED FROM OO48H TO 023FH
EI
;
WAITMS:
LD (WDTCR2),0X4E ; Clears the watchdog counter
CMP (MMS),0XA
JR CS,WAITMS
IFHVDL:
TEST (P1).0 ; Test if for 26
JR F,NOT26
CALL DLY100U
TEST (P1).0
JR F,NOT26
SET (FLAG4).IS30JX
;
NOT26:
TEST (P7).3
JR F,NOTDL
CALL DLY100U
TEST (P7).3
JR F,NOTDL
SET (FLAG2).ISDLFLG
NOTDL:
TEST (P0).1
JR T,BFLLFF
CALL DLY100U
TEST (P0).1
JR T,BFLLFF
JP TESTSF
;
BFLLFF:
TEST (P0).2
JR T,BFNTST
CALL DLY100U
TEST (P0).2
JR T,BFNTST
JP TESTSF
;
BFNTST:
SET (FLAG3).BUZZEN
LD (BUZ),0XC
SET (FLAG1).ADON
CALL FORAD
;
NOP
;/ SET (FLAG1).DLY3M ; FIRST FOR DLAY 3MINUTES
SET (FLAG2).RSTSTP
SET (FLAG2).STPCLS
;***************** THE MAIN PROGRAM *****************
MAIN:
LD (WDTCR2),0X4E ; Clears the watchdog counter
CALL FORAD
CALL FADWRN
CALL CMPCLS
CALL VALCLR
CALL FANCLR
SET (P0).3 ; CLEAR THE RUN LED
SET (P0).4 ; CLEAR THE SLEEP LED
SET (P0).6 ; CLEAR THE POWER LED
CLR (FLAG3).FLDFLG ; CLEAR FLG FOR COOL MOD
CLR (FLDSEC)
CLR (FLDMIN)
CLR (FLAG4).ISCHSH ; CLEAR FLG FOR CHSH MOD
CLR (FLAG3).CHSFLG
CLR (FLAG6).CSSTP
;/ TEST (FLAG2).ISATFLG
;/ JR T,ATCLMOD
;/ CMP (AUTMIN),0X78
;/ JR CS,NTCLMOD
;/
;/ATCLMOD:
CLR (FLAG2).ISATFLG
CLR (AUTMMS)
CLR (AUTSEC)
CLR (FLAG3).ISCOOL
CLR (FLAG2).ISHTFLG
NTCLMOD:
CLR (FLAG3).HTFCHS ; CLEAR FLG FOR HEAT
CLR (HTCMIN)
CLR (HTCMSEC)
CLR (FLAG2).CSISEND
SET (FLAG2).CSFRST
CLR (FLAG5).HTHI62
CLR (FLAG4).TSTRUN ; CLEAR THE TEST RUN FLG
CLR (TSTSEC)
CLR (TSTMIN)
SET (FLAG3).GJFLG
;/ CLR (FLAG6).SWJWRN ; CLEAR SHWJWRN FLG CNT
;/ CLR (CLH25C)
;/ CLR (CLH25M)
TEST (SLPDSF).6 ; TEST IF HAVE DSK
JR T,MNODSK
;/ CLR (P0).5 ; LIGHT THE TIME LED
CALL TMLEDON
LD A,(HOUR)
LD W,(SLPDSF)
AND W,0XF
CMP A,W
JR CS,MNNDSK
CLR (SLPDSF).6
JR MISDSK
;
MNODSK:
;/ SET (P0).5 ; CLEAR THE TIME LED
CALL TMLEDOFF
MNNDSK:
TEST (FLAG1).RCVNEW
JR T,MFNRCV
MNHVDS:
CALL FDS
TEST (SLPDSF).4 ; TEST ON/OFF
JR T,MFNRCV
TEST (SLPDSF).6
JR T,MISDSK ; IF DSK THEN
LD A,(SLPDSF) ; IF DSK TIME IS 0 THEN
AND A,0XF
CMP A,0
JR EQ,MISDSK
JR MFNRCV
;
MISDSK:
CALL FMNTKJ
JP FORMOD
;
MFNRCV:
TEST (P0).1 ; TEST THE AUTO KEY
JR T,MNNKEY
CALL DLY100U
TEST (P0).1
JR T,MNNKEY
TEST (FLAG1).KEYBUF
JR T,MNTSTFC
CLR (FLAG1).KEYBUF
SET (FLAG3).BUZZEN
LD (BUZ),0XC
TEST (SLPDSF).6 ; TEST IF HAVE DSK
JR T,MATNDSK
CLR (SLPDSF).6
JP MAIN
;
MATNDSK:
CALL FMNTKJ
LD (SETTMP),0X24 ; MAKE SET TMP IS 24C
LD (FANMOD),0X10 ; MAKE MOD IS AUTO FAN AUTO VAN SWING
LD (SLPDSF),0X0
JP FORMOD
;
MNNKEY:
SET (FLAG1).KEYBUF
;
MNTSTFC:
TEST (P0).2 ; TEST THE AUTO KEY
JR T,MNNKEY2
CALL DLY100U
TEST (P0).2
JR T,MNNKEY2
TEST (FLAG4).KEY2BF
JR T,MAINZ
CLR (FLAG4).KEY2BF
SET (FLAG3).BUZZEN
LD (BUZ),0XC
TEST (SLPDSF).6 ; TEST IF HAVE DSK
JR T,MFCNDSK
CLR (SLPDSF).6
JP MAIN
;
MFCNDSK:
CALL FMNTKJ
JP FTSTCMP
;
MNNKEY2:
SET (FLAG4).KEY2BF
MAINZ:
JP MAIN
;
FMNTKJ:
CLR (FLAG6).SWJWRN ; CLEAR SWJWRN FLG
CLR (FLFMIN)
CLR (FLFSEC)
;/ TEST (FLAG2).RSTSTP
;/ JR T,STFKJFL
;/
;/ CMP (STPNUM2),0X26 ; IF HAV OPEN 115DU
;/ JR CS,STFKNC
;/
;/STFKJFL:
CLR (STPNUM)
CLR (STPNUM2)
STFKNC:
CLR (FDRMMS)
CLR (FDRSEC)
CLR (FDRMIN)
CLR (FLAG2).RSTSTP
CLR (FLAG2).STPCLS
SET (FLAG2).STPFKJ
RET
;
;********************* FOR THE MODE CHANGE *********************
FORMOD:
LD (WDTCR2),0X4E ; Clears the watchdog counter
LD A,(FANMOD)
AND A,0X7
CMP A,0
JR EQ,AUTMDZ
CLR (FLAG2).ISATFLG
CLR (AUTMMS)
CLR (AUTSEC)
JP ALLMOD
;
AUTMDZ:
TEST (FLAG2).ISATFLG
JR F,HVATBF
CALL CMPCLS
CALL VALCLR
SET (FLAG4).FANON
CALL LLWFAN
CMP (AUTSEC),0X14 ; IF HAVE 20SECONDS
JR CS,ALLMOD
CALL FANCLR2
SET (FLAG2).ISATFLG
CALL FPRTMP
LD A,(RMTMP)
CMP A,(PRSTMP) ; IF RMTMP >= PRSTMP TO COOL ELSE HEAT
JR CC,COLMDZ
TEST (FLAG2).ISDLFLG
JR F,COLMDZ ; IF DL THEN TO COOLMOD
JR HATMDZ
;
HVATBF:
TEST (FLAG3).ISCOOL
JR F,COLMDZ
TEST (FLAG2).ISDLFLG
JR F,COLMDZ
HATMDZ:
LD A,(FANMOD)
AND A,0XF8
OR A,0X3
LD (FANMOD),A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -