📄 idwracsys.asm
字号:
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 + -