📄 d-ht48.asm
字号:
MOV A,09H
MOV DELAY_RETURE,A
JMP DELAY_5S
RETURE_1600:
MOV A,PA
SUB A,0FFH
SZ ACC
JMP G16
JMP EXIT_1600W
G16:
SDZ MIN_DATA
JMP K_1600
MOV A,12D
MOV MIN_DATA,A
SDZ TIME_DATA
JMP K_1600
EXIT_1600W:
MOV A,0EEH
MOV POWER_DATA,A
JMP W_END
;-----------------------------------------------------------------
;5s延时子程序包含(当前功率显示,KEY_SCAN,调大 调小按键的扫描,定时按键的扫描)
DELAY_5S:
MOV A,250D
MOV DELAY1,A
KAI:
CALL DELAY_5MS
CALL XSHI;4X5MS
JMP W_KEY
W_C:
CALL DING_SHI
CALL QU_XIAO
MOV A,PA
SUB A,0FFH
SZ ACC
JMP GOO
JMP EXIT_5
GOO:
SDZ DELAY1
JMP KAI
SDZ DELAY2
JMP DELAY_5S
EXIT_5:
MOV A,DELAY_RETURE
SUB A,01H
JMP X1
JMP RETURE_100
X1:
MOV A,DELAY_RETURE
SUB A,02H
JMP X2
JMP RETURE_100_2
X2:
MOV A,DELAY_RETURE
SUB A,03H
JMP X3
JMP RETURE_300
X3:
MOV A,DELAY_RETURE
SUB A,04H
JMP X4
JMP RETURE_300_2
X4:
MOV A,DELAY_RETURE
SUB A,05H
JMP X5
JMP RETURE_500
X5:
MOV A,DELAY_RETURE
SUB A,06H
JMP X6
JMP RETURE_1000
X6:
MOV A,DELAY_RETURE
SUB A,07H
JMP X7
JMP RETURE_1300
X7:
MOV A,DELAY_RETURE
SUB A,08H
JMP X8
JMP RETURE_1300_2
X8:
MOV A,DELAY_RETURE
SUB A,09H
NOP
JMP RETURE_1600
;-----------------------------------------------------------------
;功率时大小按键的扫描
W_KEY:
MOV A,PAC
OR A,00001100B
MOV PAC,A
SET PA.3
SET PA.2
MOV A,PCC
OR A,00000001B
MOV PCC,A
SET PC.0
SZ PC.0
JMP EXIT_W
SZ PA.3
JMP JJ
FF:
CALL XSHI
SZ PA.3
JMP WW1
JMP FF
JJ:
SZ PA.2
JMP EXIT_W
AA:
CALL XSHI
SZ PA.2
JMP WW2
JMP AA
WW1:
JMP W_XIAO
JMP EXIT_W
WW2:
JMP W_DA
EXIT_W:
JMP W_C
;-------------------------------------------------------------
;功率增大按键的响应
W_DA:
;100w按键
W_100W:
MOV A,POWER_DATA
SUB A,1D
SZ ACC
JMP W_300W
JMP POWER_300W
;300w按键
W_300W:
MOV A,POWER_DATA
SUB A,3D
SZ ACC
JMP W_500W
JMP POWER_500W
;500w按键
W_500W:
MOV A,POWER_DATA
SUB A,5D
SZ ACC
JMP W_1000W
JMP POWER_1000W
;1000w按键
W_1000W:
MOV A,POWER_DATA
SUB A,10D
SZ ACC
JMP W_1300W
JMP POWER_1300W
;1300w按键
W_1300W:
MOV A,POWER_DATA
SUB A,13D
SZ ACC
NOP
JMP POWER_1600W
;-------------------------------------------------------------
;功率减小按键的响应
W_XIAO:
;1600w按键
MOV A,POWER_DATA
SUB A,16D
SZ ACC
JMP X_1300
JMP POWER_1300W
;1300w按键
X_1300:
MOV A,POWER_DATA
SUB A,13D
SZ ACC
JMP X_1000
JMP POWER_1000W
;1000w按键
X_1000:
MOV A,POWER_DATA
SUB A,10D
SZ ACC
JMP X_500
JMP POWER_500W
;500w按键
X_500:
MOV A,POWER_DATA
SUB A,5D
SZ ACC
JMP X_300
JMP POWER_300W
;300w按键
X_300:
MOV A,POWER_DATA
SUB A,3D
SZ ACC
NOP
JMP POWER_100W
;------------------------------------------------------------
KEY_UP PROC
WAIT_UP:
CALL XSHI
MOV A,PA
XOR A,0FFH
SZ ACC
JMP WAIT_UP
EXIT_UP:
RET
KEY_UP ENDP
;-------------------------------------------------------------
TIMER_1:
MOV A,PBC
OR A,00000001B
MOV A,PB
XOR A,01H
SDZ BEEP_DATA
JMP EXIT_RETI
CLR BEEP
MOV A,0FAH
MOV BEEP_DATA,A
EXIT_RETI:
RETI
;-----------------------------------------------------------------------------
;取消按键的扫描
QU_XIAO PROC
MOV A,PAC
OR A,00000100B
MOV PAC,A
SET PA.2
SZ PA.2
JMP EXIT_QU
QU:
CALL XSHI
SZ PA.2
JMP Q_XIAO
JMP QU
Q_XIAO:
CLR PB.1
CLR PC.1
MOV A,0FFH
MOV PA,A
EXIT_QU:
RET
QU_XIAO ENDP
;------------------------------------------------------------
DELAY_5MS PROC
MOV A,0FFH
MOV DELAY_1,A
WAIT_5MS_L:
MOV DELAY_2,A
WAIT_5MS:
SDZ DELAY_2
JMP WAIT_5MS
SDZ DELAY_1
JMP WAIT_5MS_L
RET
DELAY_5MS ENDP
;-------------------------------------------------------------------
DING_SHI PROC
MOV A,5D
MOV DING5,A
MOV A,0FFH
MOV DING1,A
MOV DING2,A
MOV A,PAC
OR A,00001000B
MOV PAC,A
SET PA.3
SZ PA.3
JMP EXIT_D
DING:
CALL XSHI
SZ PA.3
JMP SHI
JMP DING
SHI1:
MOV A,0FFH
MOV DING1,A
SHI0:
MOV A,0FFH
MOV DING2,A
SHI:
call XSHI_TIME
CALL T_KEY
call delay_5ms
SDZ DING2
JMP SHI
SDZ DING1
JMP SHI0
SDZ DING5
JMP SHI1
EXIT_D:
RET
DING_SHI ENDP
;-----------------------------------------------------------------
;时间大小按键的扫描
T_KEY PROC
MOV A,PAC
OR A,00001100B
MOV PAC,A
SET PA.3
SET PA.2
MOV A,PCC
OR A,00000001B
MOV PCC,A
SET PC.0
SZ PC.0
JMP EXIT_T
SZ PA.3
JMP TT2
FF2:
CALL XSHI_TIME
SZ PA.3
JMP W1
JMP FF2
TT2:
SZ PA.2
JMP EXIT_T
AA2:
CALL XSHI_TIME
SZ PA.2
JMP WW2
JMP AA2
W1:
CALL T_XIAO
JMP EXIT_T
W2:
CALL T_DA
EXIT_T:
RET
T_KEY ENDP
;-------------------------------------------------------------
;时间增大按键的响应
T_DA PROC
MOV A,TIME_DATA
ADD A,5D
SUB A,120D
SZ C ;C=0为有借位,A<120
JMP T_120
ADD A,120D
MOV TIME_DATA,A
JMP EXIT_T_DA
T_120:
MOV A,120D
MOV TIME_DATA,A
EXIT_T_DA:
RET
T_DA ENDP
;-------------------------------------------------------------
;时间减小按键的响应
T_XIAO PROC
MOV A,TIME_DATA
SUB A,5D
SZ C ;C=0为有借位,A<5
JMP T_5
MOV TIME_DATA,A
JMP EXIT_T_XIAO
T_5:
MOV A,0D
MOV TIME_DATA,A
EXIT_T_XIAO:
RET
T_XIAO ENDP
;-------------------------------------------------------------
;显示子程序
XSHI PROC
;第四位数码管显示,PA.0为输出状态,且为1,PB2.0为输入状态
MOV A,00H
MOV PAC,A
MOV A,11111100B
MOV PBC,A
SET PA.0
MOV A,SM_DATA4
MOV PA,A
CALL DELAY_5MS
MOV A,0FFH
MOV PA,A
;第三位数码管显示,PA.0为输入状态,PB.2为输出,且为1
MOV A,00000001B
MOV PAC,A
MOV A,00H
MOV PBC,A
SET PB.2
MOV A,SM_DATA3
MOV PA,A
CALL DELAY_5MS ;"取消"按键的检测包含在延时子程序里
MOV A,0FFH
MOV PA,A
;第二位数码管
MOV A,00H
MOV PAC,A
MOV A,11111100B
MOV PBC,A
SET PA.0
MOV A,SM_DATA4
MOV PA,A
CALL DELAY_5MS
MOV A,0FFH
MOV PA,A
;第一位数码管显示,PA.0为输入状态,PB.2为输出,且为1
MOV A,00000001B
MOV PAC,A
MOV A,00H
MOV PBC,A
SET PB.2
MOV A,SM_DATA3
MOV PA,A
CALL DELAY_5MS ;"取消"按键的检测包含在延时子程序里
MOV A,0FFH
MOV PA,A
RET
XSHI ENDP
;------------------------------------------------------------
;当显示的为时间时,数据在数码管的各个位的判断
XSHI_TIME PROC
MOV A,0FFH
MOV SM_DATA4,A
MOV A,TIME_DATA
SHI_WEI:
SUB A,TIME_SHI;TIME_SHI=10
SZ C
JMP SHI_WEI_OUT
INC SHI_WEI_DATA
JMP SHI_WEI
SHI_WEI_OUT:
SZ SHI_WEI_DATA ;判断是否为零,是则跳过下一行--为0则说明延时时间<10
JMP GOTO0
ADD A,10D
MOV SM_DATA1,A
Z1:
MOV A,02FFH
MOV TBLP,A
TABRDC SM
MOV A,SM
SUB A,SM_DATA1
SZ ACC
JMP Z1
MOV A,SM
MOV SM_DATA1,A
;4,3,2数码管不显示
MOV A,0FFH
MOV SM_DATA3,A
MOV SM_DATA2,A
JMP EXIT_0
GOTO0: ;延时时间>10
ADD A,0AH
MOV SM_DATA1,A
Z2:
MOV A,02FFH ;A的值加10为个位要显示的数字
MOV TBLP,A
TABRDC SM
MOV A,SM
SUB A,SM_DATA1
SZ ACC
JMP Z2
MOV A,SM
MOV SM_DATA1,A
MOV A,SHI_WEI_DATA
GOTO1:
SUB A,TIME_SHI
SZ C
JMP SHI_END
;能执行下面一行说明延时时间>100,A中的值为十位将要显示的数字
MOV SM_DATA2,A
Z3:
MOV A,02FFH ;A的值加10为个位要显示的数字
MOV TBLP,A
TABRDC SM
MOV A,SM
SUB A,SM_DATA2
SZ ACC
JMP Z3
MOV A,SM
MOV SM_DATA2,A
;百位显示“1”
MOV A,11010111B
MOV SM_DATA3,A
JMP EXIT_0
SHI_END: ; 延时时间<100,A的值加10为十位将要显示的数字,3,4位数码管不显示
MOV A,TIME_DATA
MOV SM_DATA2,A
Z4:
MOV A,02FFH
MOV TBLP,A
TABRDC SM
MOV A,SM
SUB A,SM_DATA2
SZ ACC
JMP Z4
MOV A,SM
MOV SM_DATA2,A
MOV A,0FFH
MOV SM_DATA3,A
EXIT_0:
CALL XSHI
RET
XSHI_TIME ENDP
;-------------------------------------------------------------
ORG 02FFH
DC 00010001B ;0
DC 11010111B ;1
DC 00100101B ;2
DC 10000101B ;3
DC 11000011B ;4
DC 10001001B ;5
DC 00001001B ;6
DC 11010101B ;7
DC 00000001B ;8
DC 10000001B ;9
DC 00101001B ;E
DC 01001111B ;n
DC 00000111B ;d
DC 11101111B ;-
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -