📄 laohua.asm
字号:
CALL !DRYM
CALL !DRY10M
CALL !DRY4M
CALL !DRY30S
CALL !AUTOFAN30S
MAINTRY1:
; CALL !REFRESHRAM
CALL !TIMERCHECK
CALL !DOG
MAIN4: BF TIMERF,$MAIN2
CLR1 TIMERF
; BBC SVANEF,MAIN3
;;; BT TRYRUNF,$MAIN3_0
; CALL !DISVANE
;;;; CALL !DISPFAN
MAIN3:
MAIN2:
;;;;;;;; CALL !VANEDO
; CALL !QJRDO
MAIN3_0:
CALL !DOG
; CALL !KEYSCAN_164
BF KEYSTAF,$REMOTE
CLR1 KEYSTAF
CALL !ADKEYDEAL
; CALL !REFRESHRAM
REMOTE: BF RECENDF,$MAIN1
CLR1 RECENDF
CALL !RECVDEAL
; CALL !REFRESHRAM
MAIN1:
; CALL !KEYSCAN
CALL !DOG
; BT TRYRUNF,$NOMAINPRO
CALL !MAINPRO
; CALL !REFRESHRAM
NOMAINPRO:
CALL !DOG
CALL !DISPTEMP
; BBS TRYRUNF,START0
; BBC LCDCHF,START0
BF DISERRF,$NODISCH
CALL !DISERR
CALL !DOG
NODISCH:
;;;;; CALL !WRITE_164
CALL !SLEEP
; BF SCANF,$START00
; CLR1 SCANF
; CALL !SCANLED
; CLR1 LCDCHF
; CALL !REFRESHRAM
DI
MOV A,SEG1
MOV SEG11,A
MOV A,SEG2
MOV SEG22,A
MOV A,SEG3
MOV SEG33,A
MOV A,SEG4
MOV SEG44,A
MOV A,SEG5
MOV SEG55,A
MOV A,SEG6
MOV SEG66,A
MOV A,SEG7
MOV SEG77,A
MOV A,SEG8
MOV SEG88,A
EI
START00: BF EEPROMERRF,$EEPROMNOERR
BR !EEPROM_3
EEPROMNOERR:
BT EEPROM_READERRF,$EEPROM_4
BT EEPROM_ADDRCHF,$EEPROM_7
;判断标志位是否有改变,有改变则写入
MOVW HL,#EEPROM_RAM
MOVW DE,#ATEMP
EEPROM_2:
MOV A,[DE]
CMP A,[HL]
BZ $EEPROM_1
SET1 EEPROM_WRITEERRF
MOV EEPROMBUF,#0H
MOV [HL],A
EEPROM_1:
INC L
INC E
MOV A,L
CMP A,#LOW EEPROM_RAM+12
BNZ $EEPROM_2
BF EEPROM_WRITEERRF,$EEPROM_4
CALL !EEPROM_WRITE
BT EEPROM_WRITEERRF,$EEPROM_30
;成功写入之后,开始读入并与写入的比较,判断写入是否正确,先备份写入的数据
SET1 EEPROM_READERRF
MOVW HL,#EEPROM_RAMBAK
MOVW DE,#EEPROM_RAM
EEPROM_5:
MOV A,[DE]
MOV [HL],A
INC L
INC E
MOV A,E
CMP A,#LOW EEPROM_RAM+12
BNZ $EEPROM_5
;开始读入刚写到EEPROM的数据
EEPROM_4: BF EEPROM_READERRF,$EEPROM_3
CALL !EEPROM_READ
BT EEPROM_READERRF,$EEPROM_3
MOVW HL,#EEPROM_RAMBAK
MOVW DE,#EEPROM_RAM
EEPROM_6:
MOV A,[DE]
CMP A,[HL]
BNZ $EEPROM_7
INC E
INC L
MOV A,E
CMP A,#LOW EEPROM_RAM+12
BNZ $EEPROM_6
EEPROM_30: BR !EEPROM_3
;读入数据与刚写入的数据不同,则表明此块EEPROM区域已无用,必须重新更改写入地址
EEPROM_7: SET1 EEPROM_ADDRCHF
MOV A,#0F0H
CALL !IICBUS_START
CALL !WRITE8BIT
CALL !SLAVEACK
CMP A,#0H
BNZ $EEPROM_3
MOV A,EEPROM_ADDR
ADD A,#18H
;判断是否超出1K EEPROM的区域
CMP A,#08H
BNZ $EEPROM_9
SET1 EEPROMERRF
BR !EEPROM_3
EEPROM_9:
CALL !WRITE8BIT
CALL !SLAVEACK
CMP A,#0H
BNZ $EEPROM_3
CALL !IICBUS_STOP
BT EEPROMERRF,$EEPROM_3
CLR1 EEPROM_ADDRCHF
;更改EEPROM的区域存入地址后置重新写入的数据
SET1 EEPROM_WRITEERRF
MOVW HL,#EEPROM_RAM
MOVW DE,#ATEMP
EEPROM_8:
MOV A,[DE]
MOV [HL],A
INC L
INC E
MOV A,L
CMP A,#LOW EEPROM_RAM+12
BNZ $EEPROM_8
EEPROM_3: BF LOCKF,$UNLOCKMAC
SET1 SEG7.7
BR !START0
UNLOCKMAC: CLR1 SEG7.7
BR !START0
ONMCU0: BR !ONMCU
;*********************HOST MAIN PROGRAM*************************
SUB2 CSEG UNIT
MAINPRO:
BT SONF_F,$ONMCUUU
WARMDJR2:
SET1 DJR
CLR1 SEG3.1
RET
ONMCUUU:
BT ROMERRF,$WARMDJR2
CMP ROMTEMP,#0F0H
BNC $WARMDJR1
MOV A,TEMPBUF
CMP A,ROMTEMP
BZ $WARMDJR2
BC $WARMDJR2
WARMDJR1:
CLR1 DJR
SET1 SEG3.1
RET
CSEG UNIT
OFFMCU:
;;;;;;; SET1 WARMFIRSTF
; BT ROMERRF,$NOERROFF
; BT PIPERRF,$NOERROFF
; BT OUTERRF,$NOERROFF
BT DISERRF,$NOERROFF
MOV SEG1,#0H
MOV SEG8,#0H
NOERROFF:
BF TIMONF,$OOOO
AND SEG2,#00000011B
BR !PPPP
OOOO: MOV SEG2,#0H
PPPP:
BF LOCKF,$NOLOCKOFF
AND SEG7,#10000000B
BR !DDDD
NOLOCKOFF: MOV SEG7,#0H
DDDD:
MOV SEG3,#0H
MOV SEG4,#0H
MOV SEG5,#0H
MOV SEG6,#0H
CLR1 SECONDF
CLR1 DISTMP5SF
MOV DISTMP5SC,#0H
; CLR1 RB.3
CLR1 SEG2.7
CLR1 AUTOSECOF ;MUST
CLR1 SETTEMPF
; CALL !CLRFLG_AUTO
CALL !CLRAUTOFAN
CLR1 DRYSECOF
CLR1 DRY30SF
MOV DRY30SC,#0H
CLR1 DRYMF
CLR1 DRY4MF
CLR1 DRY10MF
;; MOV DRYMC,#0H
;; MOV DRYMC+1,#0H
;;; CLR1 SEG5.6
BF TIMONF,$OHERE1
MOV SEG2,#00000011B
BR !OHERE2
OHERE1: MOV SEG2,#0H
OHERE2:
; CLR1 RB.4
BF SSLEEPF,$NOSLEEP1
CLR1 SSLEEPF
;;;;;; MOV SLEEPC,#0H
;;;;;; MOV SLEEPC+1,#0H
MOV A,SSTEMP
MOV TEMPBUF,A
;;;;;;;; CALL !SLETMPLD
NOSLEEP1: CALL !CLRFLG_COOL
CALL !CLRFLG_WARM
CLR1 VALOFF1MF
CLR1 P4F
BF STF,$NOVALOFF
SET1 VALOFF1MF
NOVALOFF: BF FANOFFF,$GOOFFMCU1
RET
GOOFFMCU1: BT SDRYF,$COOLOFF
BT SFANMF,$COOLOFF1
BT SAUTOF,$AUTOOFF
BT SCOOLF,$COOLOFF
WARMOFF: CALL !CLRFLG_AUTO
CLR1 EXTFAN
BF COMP,$FANOFF
CLR1 COMP
;;;;; CLR1 EXTFAN
SET1 COMP3MF
CLR1 COMP3MY
MOV COMP3MC,#0H
FANOFF: BR $DJROFFFAN
; BBC FANOFFF,DJROFFFAN
; RET
AUTOOFF: SET1 FANOFFF
BT GOWARMF,$WARMOFF
CALL !CLRFLG_AUTO
COOLOFF: BF COMP,$COOLOFF1
CLR1 COMP
CLR1 EXTFAN
SET1 COMP3MF
CLR1 COMP3MY
MOV COMP3MC,#0H
; RET
COOLOFF1: SET1 HFAN
CLR1 LFAN
CLR1 MFAN
;;;;;;;; CLR1 RB.3
; CLR1 RB.4
RET
DJROFFFAN: SET1 FANOFFF
BT WARMFIRSTF,$NOOFFAN
SET1 WARMFIRSTF
SET1 FANDELAY30SF
BT DJR,$OFFFAN
SET1 DJR
SET1 DJRFANF
; SET1 FANDELAY10SF
SET1 LFAN
SET1 HFAN
CLR1 MFAN
RET
OFFFAN:
BF PIPERRF,$PIPERRFANOFF
RET
PIPERRFANOFF:
CMP PIPTEMP,#0F0H
BNC $NOOFFAN
CMP PIPTEMP,#30
BC $NOOFFAN
CMP PIPTEMP,#37
BC $OFFCUIYURE
CMP PIPTEMP,#47
BC $WARMOFF1
CLR1 HFAN
CLR1 LFAN
CLR1 MFAN
RET
WARMOFF1: CALL !NORFAN
RET
;PIPERRFAN30S: SET1 FANDELAY30SF
; RET
;DEFROOFF: CLR1 DEFROSTF
; CLR1 SEG5.6
; BR OFFFAN
OFFCUIYURE: SET1 LFAN
SET1 HFAN
CLR1 MFAN
; SET1 FANDELAY20SF
RET
NOOFFAN: CLR1 LFAN
SET1 HFAN
CLR1 MFAN
CLR1 FANDELAY30SF
MOV FANDELAY30SC,#0H
RET
;;;;;;;ON MCU;;;;;;;;;;;;;;;;;;
ONMCU:
; CALL !DISPTEMP
CLR1 FANOFFF
CLR1 FANDELAY30SF
MOV FANDELAY30SC,#0H
CLR1 DJRFANF
MODESELECT: BF SAUTOF,$MODESELECT1
BR !SAUTO
MODESELECT1: BF SCOOLF,$MODESELECT2
BR !SCOOL
MODESELECT2: BF SDRYF,$MODESELECT3
BR !SDRY
MODESELECT3: BF SFANMF,$MODESELECT40
BR !SFANMODE
MODESELECT40: BR !MODESELECT4
GOWARM0_L: BR !GOWARM0
SAUTO: CLR1 SEG3.4
CLR1 SEG2.6
CLR1 SEG3.2
CLR1 SEG3.6
SET1 SEG3.3
BT ROMERRF,$GOWARM0_L
BF P1F,$NOP1
CLR1 P1F
NOP1: BT AUTOSECOF,$AUTOSECO
SET1 AUTOSECOF
SET1 WARMFIRSTF
CMP ROMTEMP,#0F0H
BNC $GOWARM
CMP ROMTEMP,#21
BC $GOWARM
CMP ROMTEMP,#26
BC $GODRY
GOCOOL: CLR1 GOWARMF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -