📄 idwracrmt.asm
字号:
;************************************************************************
; TITLE: LT0333MOD.ASM
; VERSION: 1.0
; DATE: 2003.07.23
; AUTHOR: Gilbert.Huang
; DESCRIPTION: GOODMAN
;
; Chip type: NECuPD78F9188
; ROM SIZE: 16K BYTES
; RAM SIZE: 384 BYTES
; EEPROM SIZE: 256 BYTES
; CRYSTAL: 4.19MHz
; I/O PORT: 26 PINS
; PACKAGE: DIP32
;************************************************************************
; NAME REMOTE
;************************************************************************
;* Module Name: Remote *
;* Function: Reveive the remote coede *
;* Input: *
;* Output: f_RMTend,D_RMTdat *
;* Break: *
;* stack: *
;************************************************************************
; History:
;
;------------------------------------------------------------------------
; $include (LT0333sym.INC)
; $include (LT0333RAM.INC)
; CSEG
; EXTRN BEEP1tms
; EXTRN ON2OFF
;
; PUBLIC RMTdec
;================================
; REMOTE PROGRAM
;================================
INTP0: ;
EI
PUSH HL
PUSH AX
PUSH BC
PUSH DE
; MOV A,#01H
INTPWAIT: ;WAIT 100us
; INC A
; CMP A,#10H
; BNZ $INTPWAIT
INTP0_1:
CALL !BAKtm20
MOV C_REVovr,#n_5msTM8 ;reset the over counter
CMP MODEP,#01H
BZ $LEADA ;MODEP=1?
CMP MODEP,#02H
BZ $LEADB ;MODEP=2?
CMP MODEP,#03H
BZ $DATACD ;MODEP=3?
BR LEADA5 ;ERROR
LEADA:
BT i_RMT,$LEADA3
BR INTP0RT
LEADA3: ;
MOVW AX,REGTM20
SUBW AX,#40;10H
BC $LEADA5
MOVW AX,REGTM20
SUBW AX,#460;104
BNC $LEADA5 ;RECEIVE ERROR
MOV MODEP,#02H
MOV INTM0,#40H ;falling edge
BR INTP0RT
LEADA5:
CLR1 f_RMTend
mov a,MODEP
; MOV D_TMRon,A ;debug del it
MOV MODEP,#00H
SET1 PMK0
BR INTP0RT
LEADB:
BT i_RMT,$LEADB8 ;INTP0RT ;
MOVW AX,REGTM20
SUBW AX,#n_4_5msT2-70;;50
BC $LEADA5
MOVW AX,REGTM20
SUBW AX,#n_4_5msT2+50
BC $INITWORK
BR $LEADA5
; MOV MODEP,#03H
; MOV INTM0,#00H ;falling edge
; MOV INTM0,#40H ;RISING EDGE
BR INTP0RT
INITWORK:
CLR1 f_RMTy902
MOV D_RMTbuf+4,#00H ;
MOV D_RMTbuf+3,#00H
MOV D_RMTbuf+2,#00H
MOV D_RMTbuf+1,#00H
MOV D_RMTbuf+0,#00H
MOV MODEP,#03H
SET1 D_RMTd4.2
LEADB8:
BR INTP0RT
DATACD:
BT i_RMT,$INTP0RT
; BT f_RMTend,$LEADA5
MOVW AX,REGTM20
SUBW AX,#n_112t2-25
BC $LEADA5 ;error
MOVW AX,REGTM20
SUBW AX,#n_225T2+25
BNC $CHKsplit ;LEADA5 ;error
MOVW AX,REGTM20
SUBW AX,#n_225T2-30 ;25
BNC $DATACD5
CLR1 CY
BR SHIFT
;------------------------------------------------------------------------
CHKsplit:
MOVW AX,REGTM20
SUBW AX,#n_4_5msT2-50
BC $LEADA5
MOVW AX,REGTM20
SUBW AX,#n_4_5msT2+50
BNC $LEADA5
SPLITcod:
SET1 f_RMTy902
SET1 D_RMTd0.7
BR INTP0RT
;------------------------------------------------------------------------
DATACD5: ;
SET1 CY
SHIFT:
call !ROTrmt
BNC $INTP0RT ;Receive complete? No>jump
; CALL !CHKcode ;CHECK THE CUSTOMER CODE
; BC $LEADA5 ;ERROR
SET1 f_RMTok ;f_RMTend;
bt f_RMTy902,$LEADA5
set1 cy
call !ROTrmt
BR LEADA5
INTP0RT:
POP DE ;
POP BC
POP AX ;
POP HL
EI ;
NOP ;
RETI
;===========================================
ROTrmt:
MOVW HL,#D_RMTbuf+4
MOV B,#5
SHIFT1:
MOV A,[HL]
RORC A,1
MOV [HL],A
DECW HL
DBNZ B,$SHIFT1
ret
;================================
; Timer count for remote
; call in tm80
;================================
TMRremot: ;
CMP MODEP,#0H ;
BNZ $NOmodep0 ;
BT i_RMT,$NOhead ;high>>no header receive
INC BTCT ;
CMP BTCT,#015 ;
BNZ $TMRrmtRT ;
MOV MODEP,#01H ;
CALL !BAKtm20
MOV C_REVovr,#n_5msTM8
MOV INTM0,#01000100B;INTP0 RISING EDGE
CLR1 PMK0 ;enable INTP0
BR TMRrmtRT ;
NOmodep0: ;
DEC C_REVovr ;接收溢出计时
BNZ $TMRrmtRT
; BF f_RMTend,$INITrmt
; SET1 f_RMTok
; CLR1 f_RMTend
INITrmt:
MOV MODEP,#0 ;初始化接收
NOhead: ;
MOV BTCT,#0H ;
SET1 PMK0 ;DISABLE INP0
TMRrmtRT: ;
NOP
RET
;************************************************************************
;* Module Name: BAKtm20 *
;* Function: Tm20-D_BAKt20->REGTM20;tm20->D_BAKt20 *
;* Input: tm20,D_BAKt20 *
;* Output: D_BAKt20,REGTM20 *
;* Break: AX,HL *
;* stack: *
;************************************************************************
; History:
;
;------------------------------------------------------------------------
BAKtm20:
MOVW AX,TM90
MOVW HL,AX
; SUBW AX,D_BAKt20
XCH A,X
SUB A,D_BAKt20
XCH A,X
SUBC A,D_BAKt20+1
MOVW REGTM20,AX
MOVW AX,HL
MOVW D_BAKt20,AX
RET
;************************************************************************
;* Module Name: *
;* Function: *
;* Input: *
;* Output: *
;* Break: *
;* stack: *
;************************************************************************
; History:
;
;------------------------------------------------------------------------
CHKcode:
CMP D_RMTbuf+4,#n_COMcod ;Check the customer code
BNZ $CHKfail ;NG
CHKcdOK:
CLR1 CY
RET
CHKfail:
SET1 CY
RET
;************************************************************************
;* Module Name: RMTdec *
;* Function: remote receive data decode *
;* Input: D_RMTdat *
;* Output: *
;* Break: *
;* stack: *
;************************************************************************
; History:
;
;------------------------------------------------------------------------
REMOTdec:
RMTdec:
BT f_RMTok,$$+4+1
RET
CLR1 f_RMTok
BT f_RMTy902,$RMTy902
; CALL !DEBUGdat
CALL !CHKcode ;CHECK THE CUSTOMER CODE RETURN A:0 SWING CODE,1 TIMER DATA,2 NORMAL DATA
BNC $$+2+1 ;NO ERROR
RET
CALL !NORcode
ret
;
RMTy902:
MOV A,D_RMTd3
cmp A,#11010111b
BEQ custOK
RET
custOK:
CMP C_RMTlock,#0
BEQ RMTaccept
mov C_RMTlock,#n_150ms3125
ret
RMTaccept:
mov C_RMTlock,#n_150ms3125
LD A,D_RMTd4
and A,#0fh
rol A,1
xch A,x
xor A,A
addw AX,#T_KEYrmt
MOVW HL,ax
mov A,[hl]
xch A,X
MOV A,[HL+1]
BR AX
T_KEYrmt:
dw AUTOkey ;COOLkey ;0
dw KEYmoney ;HEATkey ;1
dw KEYquick ;DRYkey ;2
dw KEYsleep ;KEYtmr ;3
dw MODEkey ;KEYup ;4
dw KEYfansp ;KEYdown ;5
dw KEYtmr ;noused ;6
dw noused ;noused ;7
dw KEYup ;FANhigh ;8
dw KEYdown ;FANlow ;9
dw KEYswing ;KEYswing ;0a
dw KEYon ;KEYon ;0b
dw noused ;noused ;c
dw noused ;noused ;d
dw noused ;noused ;e
dw noused ;noused ;f
AUTOkey:
BT f_PWRon,$$+4+1
ret
cmp M_MODset,#n_Mauto
BEQ COOLkey1 ;[HIS-006]
MOV M_MODset,#n_Mauto
;------------------------------------------------------------------------
;[HIS-011]
BF f_COOLquick,$NOqcMOD
CLR1 f_COOLquick ;
mov M_FANset,#n_FANhigh
MOV D_TMPset,#72+n_TMPdsp
LD D_TMPcset,#22+n_TMPdsp
NOqcMOD:
;------------------------------------------------------------------------
CLR1 f_MODmoney
BR modSET1
MODEkey:
BT f_PWRon,$$+4+1
ret
bt f_MODmoney,$AUTOkey ;[HIS-012]
BT f_COOLquick,$COOLkey
inc M_MODset
mov A,#n_Mheat
BF f_COOLonly,$$+4+1
dec A
cmp A,M_MODset
BNC $modSETrmt
mov M_MODset,#n_Mcool
;------------------------------------------------------------------------
;[HIS-005]
mov A,#n_FANhigh
mov M_FANset,A
MOV D_TMPset,#72+n_TMPdsp
LD D_TMPcset,#22+n_TMPdsp
;------------------------------------------------------------------------
modSETrmt:
;------------------------------------------------------------------------
;[HIS-008]
cmp M_MODset,#n_Mdry
BEQ DRYkey
CMP M_MODset,#n_Mfan
BNE noFANmKEY
MOV D_TMPset,#72+n_TMPdsp
LD D_TMPcset,#22+n_TMPdsp
CLR1 f_SLEEP
noFANmKEY:
;------------------------------------------------------------------------
call !BEEP1tms
MOV C_RMT1s,#n_2s125
ret
;------------------------------------------------------------------------
;[his-004]
COOLkey1:
; MOV A,#n_FANhigh
; MOV M_FANset,A
; MOV D_TMPset,#72+n_TMPdsp
; LD D_TMPcset,#22+n_TMPdsp
; BR COOLkey
;------------------------------------------------------------------------
COOLkey:
enCOOL:
BT f_PWRon,$$+4+1
ret
MOV D_TMPset,#72+n_TMPdsp
LD D_TMPcset,#22+n_TMPdsp
mov M_FANset,#n_FANhigh
CLR1 f_COOLquick
MOV A,#n_Mcool
BR modSET
HEATkey:
BT f_PWRon,$$+4+1
ret
bt f_COOLonly,$noused
MOV A,#n_Mheat
BR modSET
DRYkey:
BT f_PWRon,$$+4+1
ret
; CLR1 f_SLEEP
MOV M_FANset,#n_FANlow
MOV A,#n_Mdry
modSET:
mov M_MODset,A
modSET1:
call !BEEP1tms
MOV C_RMT1s,#n_2s125
ret
;========================================================================
FANhigh:
BT f_PWRon,$$+4+1
ret
MOV A,#n_FANhigh
BR fanSET
FANlow:
BT f_PWRon,$$+4+1
ret
MOV A,#n_FANlow
fanSET:
MOV M_FANset,A
call !BEEP1tms
MOV C_RMT1s,#n_2s125
ret
;========================================================================
;========================================================================
noused:
ret
;************************************************************************
;* Module Name: *
;* Function: *
;* Input: *
;* Output: *
;* Break: *
;* stack: *
;************************************************************************
; History:
;
;------------------------------------------------------------------------
NORcode:
;------------------------------------------------------------------------
; REMOTE MODE SET
;------------------------------------------------------------------------
RmodSET:
MOV A,D_RMTd0
CALL !RORA4
AND A,#7
CMP A,#n_Mheat
BNE NOheat
BBC f_COOLonly,NOheat
RET
NOheat:
MOV M_MODset,A
ENDmodSET:
;------------------------------------------------------------------------
CALL !BEEP1tms
SET1 f_SYSsave
mov C_RMT1s,#n_2s125
CALL !PWRset
CALL !SETtmr
CALL !RtmpSET ;TEMP SET
CALL !RslpSET
CALL !RfanSET ;FAN SPEED SET
CALL !PWRsave
call !Rswing
ret
;------------------------------------------------------------------------
;************************************************************************
;************************************************************************
;------------------------------------------------------------------------
; REMOTE power SET
;------------------------------------------------------------------------
PWRset:
BT D_RMTd0.7,$rmtPWRon
BT f_PWRon,$PWRswitchOFF
;------------------------------------------------------------------------
RET
PWRswitchOFF:
mov C_RMT1s,#0
CALL !ON2OFF
ret
rmtPWRon:
BF f_PWRon,$PWRsetON
ret
PWRsetON:
mov C_RMT1s,#0
CALL !OFF2ON
PWRsetRET:
RET
;************************************************************************
;************************************************************************
SETtmr:
BT D_RMTd2.3,$RMTtmrSET
CLR1 f_TMRset
mov D_TMRon,#0
ret
RMTtmrSET:
MOV C_TMRmin,#n_1h1m-1
BT D_RMTd2.0,$$+4+3
MOV C_TMRmin,#n_1h1m-1+30 ;有0.5小时
SET1 f_TMRset
mov A,D_RMTd2
CALL !RORA4
and A,#0fh
BF D_RMTd2.1,$$+4+3
ADD A,#10
BF D_RMTd2.2,$$+4+3
ADD A,#20
MOV D_TMRon,A
mov D_TMRset,A
ret
;************************************************************************
; SUBroutine area
;------------------------------------------------------------------------
; REMOTE SWING CHECK
;------------------------------------------------------------------------
Rswing:
BT f_PWRon,$$+4+1
RET
BT D_RMTd1.2,$SETswg
rCLRswg:
CLR1 f_SWGset
RET
SETswg:
SET1 f_SWGset
RET
;------------------------------------------------------------------------
; REMOTE FAN SPEED SET
;------------------------------------------------------------------------
RfanSET:
MOV A,D_RMTd1
AND A,#03H
MOV M_FANset,A
RET
;------------------------------------------------------------------------
; REMOTE TEMP SET
;------------------------------------------------------------------------
RtmpSET:
BT D_RMTd3.7,$RMTfDEG
MOV A,D_RMTd1
CALL !RORA4
AND A,#0FH
ADD A,#n_TMPdsp+16
LD D_TMPcset,A
CALL !degreeC2F
LD D_TMPset,A
ret
RMTfDEG:
MOV A,D_RMTd1
CALL !RORA4
AND A,#0FH
BF D_RMTd3.6,$$+4+2
SET1 A.4
ADD A,#n_TMPdsp+60
LD D_TMPset,A
CALL !degreeF2C
LD D_TMPcset,A
RET
;========================================================================
PWRsave:
BT f_GOODman,$NOpwrSAVE
BF D_RMTd3.3,$NOpwrSAVE
cmp M_MODset,#n_Mcool
BNZ $NOpwrSAVE
SET1 f_MODmoney
RET
NOpwrSAVE:
CLR1 f_MODmoney
ret
;------------------------------------------------------------------------
; REMOTE SLEEP SET
;------------------------------------------------------------------------
RslpSET:
BF D_RMTd1.3,$CLRsleep2
BF f_PWRon,$CLRsleep1
BF f_SLEEP,$INITslp
RET
CLRsleep1:
BF f_TMRon,$CLRsleep2 ;定时开可设定睡眠
BF f_SLEEP,$INITslp
RET
CLRsleep2:
BT f_SLEEP,$rCLRsleep
RET
rCLRsleep:
CLR1 f_SLEEP
MOV C_SLPstp,#0 ;sleep set to 7 step. each step count to 8min
MOV C_SLP1h,#0 ;count source 1min
RET
INITslp:
SET1 f_SLEEP
MOV C_SLPstp,#2 ;sleep set to 7 step. each step count to 7min
MOV C_SLP1h,#n_1h1m ;count source 1min
RETsleep:
RET
;************************************************************************
;************************************************************************
RORA4:
ROR A,1
ROR A,1
ROR A,1
ROR A,1
RET
;************************************************************************
;* Module Name: *
;* Function: *
;* Input: *
;* Output: *
;* Break: *
;* stack: *
;************************************************************************
; History:
;
;------------------------------------------------------------------------
ADDcrc:
MOV A,#0
ADDloop:
ADD A,[HL]
INCW HL
DBNZ B,$ADDloop
XOR A,#0FFH
RET
; END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -