📄 md-fan.asm
字号:
SZ F_NOPOWER
JMP ENDLED
SNZ F_ONOFF
JMP ENDLED
MOV A, LEDN
ADDM A, PCL
JMP ENDLED
JMP LED1
JMP LED2
JMP LED3
JMP LED4
JMP LED5
JMP ENDLED
LED1: MOV A, SPEED
ADDM A, PCL
JMP ENDLED
JMP LED11
JMP LED12
JMP LED13
LED11: SET LED_SEG3 ; L
JMP LED14
LED12: SET LED_SEG2 ; M
JMP LED14
LED13: SET LED_SEG1 ; H
LED14: CLR LED_COM4
JMP ENDLED
LED2: MOV A, TIME
ADDM A, PCL
JMP ENDLED
JMP LED21
JMP LED22
JMP LED23
LED21: SET LED_SEG6
JMP LED24
LED22: SET LED_SEG5
JMP LED24
LED23: SET LED_SEG4
LED24: CLR LED_COM2
JMP ENDLED
LED3: SZ ION.0
SET LED_SEG5
CLR LED_COM1
JMP ENDLED
LED4: SZ SWING.0
SET LED_SEG4
CLR LED_COM1
JMP ENDLED
LED5: MOV A, HEAT
ADDM A, PCL
JMP ENDLED
JMP LED51
JMP LED52
JMP LED53
LED51: SET LED_SEG1
JMP LED54
LED52: SET LED_SEG2
JMP LED54
LED53: SET LED_SEG3
LED54: CLR LED_COM3
JMP ENDLED
ENDLED: RET
NOP
NOP
NOP
NOP
NOP
JMP RESET
;****************************************************
KEY: SET LED_COM1
SET LED_COM2
SET LED_COM3
SET LED_COM4
CLR LED_SEG1
CLR LED_SEG2
CLR LED_SEG3
CLR LED_SEG4
CLR LED_SEG5
CLR LED_SEG6
SET PAC.6
SET PAC.7
SET PBC.0
SET PBC.6
SET PBC.7
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
CLR KEY_VALUE
SNZ PA.6
SET KEY_VALUE.1
SNZ PA.7
SET KEY_VALUE.0
SNZ PB.6
SET KEY_VALUE.2
SNZ PB.0
SET KEY_VALUE.3
SNZ PB.7
SET KEY_VALUE.4
CLR PAC.6
CLR PAC.7
CLR PBC.0
CLR PBC.6
CLR PBC.7
SET LED_COM1
SET LED_COM2
SET LED_COM3
SET LED_COM4
CLR LED_SEG1
CLR LED_SEG2
CLR LED_SEG3
CLR LED_SEG4
CLR LED_SEG5
CLR LED_SEG6
MOV A, KEY_VALUE
SUB A, 1
SZ C
JMP ON_KEY
NO_KEY: CLR F_ONKEY ; 按键释放
CLR KEY_DELAY1
CLR KEY_VALUE0
MOV A, KEY_DELAY2
SUB A, 10
SNZ C
INC KEY_DELAY2
JMP ENDKEY
ON_KEY: MOV A, KEY_VALUE
XOR A, KEY_VALUE0
SZ Z
JMP ON_KEY1
MOV A, KEY_VALUE
MOV KEY_VALUE0, A
CLR KEY_DELAY1
JMP ENDKEY
ON_KEY1: MOV A, KEY_DELAY1 ; 同一键值连续5次?
SUB A, 5
SZ C
JMP KEY_JUD
INC KEY_DELAY1
JMP ENDKEY
KEY_JUD: SZ F_ONKEY
JMP ENDKEY
MOV A, KEY_DELAY2 ; 按键释放时间超过3*Tscankey
SUB A, 3
SNZ C
JMP ENDKEY0
CLR KEY_DELAY2
SET F_ONKEY
SNZ F_TEST
JMP $+3
CLR F_TEST
JMP ENDKEY
MOV A, KEY_VALUE
XOR A, 1H
SZ Z
JMP KEY1
MOV A, KEY_VALUE
XOR A, 2H
SZ Z
JMP KEY2
SNZ F_ONOFF
JMP ENDKEY
MOV A, KEY_VALUE
XOR A, 4H
SZ Z
JMP KEY3
MOV A, KEY_VALUE
XOR A, 8H
SZ Z
JMP KEY4
MOV A, KEY_VALUE
XOR A, 10H
SZ Z
JMP KEY5
ENDKEY0: SZ F_TEST
JMP ENDKEY01
MOV A, TESTA
SUB A, 50
SZ C
JMP ENDKEY01
CLR TESTA
MOV A, KEY_VALUE
XOR A, 1H
SNZ Z
JMP ENDKEY01
INC TESTB
MOV A, TESTB
SUB A, 100
SNZ C
JMP ENDKEY01
CLR TESTB
INC TESTC
MOV A, TESTC
SUB A, 4
SNZ C
JMP ENDKEY01
CLR TESTC
SET F_TEST
ENDKEY01: CLR KEY_VALUE
CLR KEY_DELAY2
JMP ENDKEY
KEY1: SZ F_ONOFF ; ON/SPEED/OFF KEY
JMP KEY11
ONK1: CLR T1SEC_TIMER3
CLR T_SEC3
CLR SPEED
CLR STEP
CLR TIME
CLR HEAT
CLR SWING
CLR ION
SET F_ONOFF
MOV A, 1
MOV SPEED, A
MOV A, 50
MOV T_BUZ1, A
JMP KBUZ2
KEY11: MOV A, SPEED
XOR A, 0
SNZ Z
JMP KEY13
CLR T1SEC_TIMER3
CLR T_SEC3
KEY13: MOV A, SPEED
SUB A, 3
SZ C
JMP KEY12
INC SPEED
CLR T1SEC_TIMER1
CLR F_OUTPUT
JMP KBUZ1
KEY12: CLR SPEED
MOV A, HEAT
XOR A, 0
SZ Z
CLR F_ONOFF
JMP KBUZ1
KEY2: SZ F_ONOFF ; ON/HEAT/OFF KEY
JMP KEY21
ONK2:
CLR SPEED
CLR STEP
CLR TIME
CLR HEAT
CLR SWING
CLR ION
SET F_ONOFF
MOV A, 1
MOV HEAT, A
MOV A, 50
MOV T_BUZ1, A
JMP KBUZ2
KEY21: MOV A, HEAT
SUB A, 3
SZ C
JMP KEY22
INC HEAT
CLR T1SEC_TIMER1
CLR F_OUTPUT1
JMP KBUZ1
KEY22: CLR HEAT
CLR ION
MOV A, SPEED
XOR A, 0
SZ Z
CLR F_ONOFF
JMP KBUZ1
KEY3: SNZ F_ONOFF
JMP ENDKEY
MOV A, TIME ; TIMER KEY
SUB A, 3H
SZ C
JMP OFFK3
INC TIME
JMP ENDK3
OFFK3: CLR TIME
ENDK3: CLR T1SEC_TIMER
CLR T_SEC
CLR T_MIN
JMP KBUZ1
KEY4: SNZ F_ONOFF ;ION KEY
JMP ENDKEY
MOV A, HEAT
XOR A, 0
SZ Z
JMP ENDKEY
INC ION
JMP KBUZ1
KEY5: SNZ F_ONOFF ; SWING KEY
JMP ENDKEY
INC SWING
JMP KBUZ1
KBUZ1: MOV A, 30
MOV T_BUZ1, A
CLR BUZ_COUNT
KBUZ2: CLR T_BUZ2
SET F_BUZ
ENDKEY: JMP LED
NOP
NOP
NOP
NOP
NOP
JMP RESET
;*************************************************
RESETJUD:
JMP CLR_RAM
MOV A, RESETA
XOR A, 5AH
SNZ Z
JMP CLR_RAM
MOV A, RESETD
XOR A, 5AH
SNZ Z
JMP CLR_RAM
MOV A, RESETB
XOR A, 0A5H
SNZ Z
JMP CLR_RAM
MOV A, RESETE
XOR A, 0A5H
SNZ Z
JMP CLR_RAM
MOV A, RESETC
XOR A, 69H
SNZ Z
JMP CLR_RAM
MOV A, RESETF
XOR A, 69H
SNZ Z
JMP CLR_RAM
DATAJUD:
SNZ F_ONOFF
JMP CLR_RAM
MOV A, SPEED
SUB A, 3
SZ C
JMP CLR_RAM
;MOV A, MODE
;SUB A, 3
;SZ C
;JMP CLR_RAM
MOV A, TIME
SUB A, 10H
SZ C
JMP CLR_RAM
MOV A, SWING
SUB A, 4H
SNZ C
JMP END_RESETJUD
CLR_RAM: MOV A, 40H
MOV MP, A
CLR_RAML: ; RAM 初始化
CLR R0
INC MP
MOV A, MP
XOR A, 0FFH
SNZ Z
JMP CLR_RAML
CLR R0
END_RESETJUD: JMP LOOP0
;*************************************************
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
JMP RESET
NOP
NOP
NOP
NOP
NOP
NOP
JMP RESET
;*******************************************************
ORG 380H
NATURE: ; 自然风状态
JMP HNATURE
LNATURE: ; 弱自然风
MOV A, STEP
SUB A, 30
SZ C
CLR STEP
MOV A, STEP
ADDM A, PCL
JMP SPN1
JMP SPN1
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP OFFN
JMP SPN2
JMP SPN2
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP SPN1
JMP SPN1
JMP OFFN
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP SPN1
JMP SPN1
JMP SPN1
JMP OFFN
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP SPN2
JMP SPN2
NOP
NOP
NOP
NOP
JMP RESET
MNATURE: ; 中自然风
MOV A, STEP
SUB A, 30
SZ C
CLR STEP
MOV A, STEP
ADDM A, PCL
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP SPN2
JMP SPN2
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP OFFN
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP SPN2
JMP SPN2
JMP SPN3
JMP SPN3
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP OFFN
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP SPN2
JMP SPN2
NOP
NOP
NOP
NOP
JMP RESET
HNATURE: ; 强自然风
MOV A, STEP
SUB A, 30
SZ C
CLR STEP
MOV A, STEP
ADDM A, PCL
JMP SPN3
JMP SPN3
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP OFFN
JMP SPN2
JMP SPN2
JMP SPN3
JMP SPN3
JMP SPN3
JMP SPN3
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP SPN2
JMP SPN2
JMP SPN1
JMP SPN1
JMP SPN3
JMP SPN3
JMP OFFN
JMP SPN2
JMP SPN2
JMP SPN2
JMP SPN2
JMP SPN3
JMP SPN3
;*************************************************
NOP
NOP
NOP
NOP
JMP RESET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -