📄 main.asm
字号:
SET FLAG1,WORK ;工作标记
LDA LED_BUF2 ;.......浸泡灯闪烁
ORA #00000010B
STA SHINE2_H
LDA SHINE2_H
AND #11111101B
STA SHINE2_L
LDA LED_BUF3
STA SHINE3_H
STA SHINE3_L
TST W_FLAG,0
BEQ WK_NJP
TST FLAG2,BF_BG
BNE ARD
LDA #02H
STA LED_BUF4
STA LED_BUF5
;进水
JSR W_INPUT
;一分钟的模糊洗
SET FLAG1,N_MH
LDA #1
STA BT_M
LDA #60
STA BT_S
JSR XD_WORK
CLR FLAG1,N_MH
INC WASH_TIMES
;总时间开始减(开始显示剩余时间)
SET FLAG2,BF_BG
;......如果是4档高水位就加2分钟洗涤时间..........
LDA SW_COUNT
CMP #7
BCC XD_BJS2
INC WASH_TIMES
INC WASH_TIMES
XD_BJS2:
ARD:
TST CX_COUNT,0 ;判断浸泡时间
BEQ JS_CXN0
LDA #25
JS_CXN0:
TST CX_COUNT,1
BEQ JS_CXN1
LDA #35
JS_CXN1:
STA BT_M
LDA #60
STA BT_S
;
SET FLAG2,FLAG_JP ;开浸泡标记
JSR XD_WORK
CLR FLAG2,FLAG_JP
WK_NJP:
CLR W_FLAG,0
LDA SHINE2_L ;.........洗涤灯闪烁
STA SHINE2_H
LDA SHINE2_H
ORA #00001000B
STA SHINE2_H
AND #11110111B
STA SHINE2_L
TST W_FLAG,1
BEQ LONG_JP4
JMP JP4
LONG_JP4: JMP WK_NXD
JP4:
TST CX_COUNT,2
BEQ BZMH0
SET FLAG2,BF_BG
JSR W_INPUT
JMP XXDDX
BZMH0:
TST CX_COUNT,3
BEQ BZMH1
SET FLAG2,BF_BG
JSR W_INPUT
JMP XXDDX
BZMH1:
TST FLAG2,BF_BG
BNE ARD2
;
LDA #02H
STA LED_BUF4
STA LED_BUF5
;进水
JSR W_INPUT
;一分钟的模糊洗
SET FLAG1,N_MH
LDA #1
STA BT_M
LDA #60
STA BT_S
JSR XD_WORK
CLR FLAG1,N_MH
INC WASH_TIMES
;总时间开始减(开始显示剩余时间)
SET FLAG2,BF_BG
;......如果是4档高水位就加2分钟洗涤时间..........
LDA SW_COUNT
CMP #7
BCC XD_BJS
INC WASH_TIMES
INC WASH_TIMES
XD_BJS:
ARD2:
XXDDX:
;........判断洗涤时间.........
LDA #60
STA BT_S
TST CX_COUNT,0
BEQ XD_TN0
LDA #12
XD_TN0:
TST CX_COUNT,1
BEQ XD_TN1
LDA #12
XD_TN1:
TST CX_COUNT,2
BEQ XD_TN2
LDA #3
XD_TN2:
TST CX_COUNT,3
BEQ XD_TN3
LDA #2
XD_TN3:
STA BT_M
TST CX_COUNT,2
BNE XD_BJS22
TST CX_COUNT,3
BNE XD_BJS22
;......如果是4档高水位就加2分钟洗涤时间..........
LDA SW_COUNT
CMP #7
BCC XD_BJS22
INC BT_M
INC BT_M
XD_BJS22:
JSR XD_WORK ;普通洗涤
;........16s的平衡洗..........
SET FLAG2,FLAG_PHX
LDA #1
STA BT_M
LDA #16
STA BT_S
JSR XD_WORK
CLR FLAG2,FLAG_PHX
WK_NXD:
CLR W_FLAG,1
LDA SHINE2_L ;...........漂洗灯闪烁
STA SHINE2_H
LDA SHINE3_H
AND #01H
STA SHINE3_L
SET FLAG2,BF_BG
TST W_FLAG,2
BEQ WK_NPX
JSR T_LC1
;>>>>>>>>>>>>>>>>>>>>>>>>第2次漂洗>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
TST CX_COUNT,3
BNE WK_NPX
JSR T_LC1
WK_NPX:
CLR W_FLAG,2
LDA SHINE3_L ;............脱水灯闪烁
STA SHINE3_H
LDA SHINE3_H
AND #80H
STA SHINE3_L
SET FLAG2,BF_BG
TST W_FLAG,3
BEQ LONG_JP15
JMP JP15
LONG_JP15:
JMP WK_NTS
JP15:
TST CX_COUNT,3
BNE JP_PS
JSR W_OUTPUT
JMP N_P30S
JP_PS:
JSR PS_30S
N_P30S:
LDA WASH_TIMES
STA ZT_T_SM
LDA SYS_S
STA ZT_T_SS
;保存灯
LDA SHINE3_H
STA ZT_L_H
LDA SHINE3_L
STA ZT_L_L
;最后一次间脱周期判断
TST CX_COUNT,0
BEQ JT1_NE0
LDA #4
JT1_NE0:
TST CX_COUNT,1
BEQ JT1_NE1
LDA #4
JT1_NE1:
TST CX_COUNT,2
BEQ JT1_NE2
LDA #13
JT1_NE2:
TST CX_COUNT,3
BEQ JT1_NE3
LDA #3
JT1_NE3:
STA JT_T_SET
JSR JT_WORK
TST CX_COUNT,2 ;(如果是轻柔程序就跳过连脱)
BNE CX3_NLTE
;连脱
TST CX_COUNT,0
BEQ LT1_N0E
LDA #5
STA LT_M
LDA #60
STA LT_S
LT1_N0E:
TST CX_COUNT,1
BEQ LT1_N1E
LDA #5
STA LT_M
LDA #60
STA LT_S
LT1_N1E:
TST CX_COUNT,3
BEQ LT1_N3E
LDA #1
STA LT_M
LDA #60
STA LT_S
LT1_N3E:
JSR LT_WORK
CX3_NLTE:
;关脱
LDA #1
STA BT_M
LDA #30
STA BT_S
TST CX_COUNT,3
BEQ GT_NCX44
LDA #1
STA BT_M
LDA #15
STA BT_S
GT_NCX44:
JSR GT_WORK
;停5S
JSR D5_S
WK_NTS:
JSR FINISH_W
JSR $
;****************************************
;* *
;* NMI Interrupt Service Routine *
;* *
;****************************************
V_NMI:
pha ; push A register
txa ; transfer X to A
pha ; push A register (ie. push X)
;
; NMI codes are placed here
;
pla ; pop A register
tax ; transfer A to X
pla ; pop A register (ie. pop X)
;
rti
;****************************************
;* *
;* IRQ Interrupt Service Routine *
;* *
;****************************************
V_IRQ:
pha ; push A register
txa ; transfer X to A
pha ; push A register (ie. push X)
;
; IRQ codes are placed here
;
TST P_INT_Flag2,5
BEQ LONG_JP1
JMP N_LONG_JP1
LONG_JP1:
JMP N_BSI
N_LONG_JP1:
;...................................................................................
;
; 2MS时间处理
;...................................................................................
INC RAM_200MS
INC RAM_05S
INC RAM_01S
LDA RAM_200MS
CMP #100
BNE R_N200MS
;...................................................................................
;
; 200MS时间处理
;...................................................................................
LDA P_TMR1_Count ;读低位
STA SW_L
LDA P_TMR1_CountHi ;读高位
STA SW_H
;
LDA #00H
STA P_TMR0_1_Ctrl0 ;关定时器
STA RAM_200MS ;重新计算200MS
STA P_TMR1_CountHi
STA P_TMR1_Count
;
LDA #40H
STA P_TMR0_1_Ctrl0 ;开定时器计数
;(得出来的值 保存在SW_H SW_L 两个变量中............. )
TST FLAG4,0
BEQ P_OFF
LDA SW_H
CMP #00H
BEQ SWQB1
JMP SWQNB
SWQB1:
LDA SW_L
CMP #20H
BCS SWQNB
DEC POWER
BNE SWQNB
CLR FLAG3,WARM_FLAG
lda P_BUZ_Ctrl
AND #11111001b
sta P_BUZ_Ctrl
SET E_FLAG,SWQ
SWQNB:
P_OFF:
;...................................................................................
R_N200MS:
;.......排水阀延时7秒检测...............................
TST PD,2
BEQ T_PSC
CLR FLAG1,PS_BH
JMP T_PSC2
T_PSC:
SET FLAG1,PS_BH
T_PSC2:
JSR DISPLAY ;显示
LDA WASH_TIMES
CMP #0
BNE JKJP
TST FLAG3,WARM_FLAG
BNE JKJP
LDA #1
STA WASH_TIMES
JKJP:
TST FLAG2,BF_BG
BEQ T_NBG
TST FLAG1,EOOR
BNE T_NBG
SM_SHOW WASH_TIMES
T_NBG:
;.......撞桶检测...........................................
JSR ZT_CHECK
;........................................................
TST FLAG_MH,0 ;模糊处理(允许标记)
BEQ MH_NALLOW
TST PC,MH ;电位为高
BEQ PC_HH
SET FLAG_MH,UP
PC_HH:
TST PC,MH
BNE PC_LL
TST FLAG_MH,UP
BEQ PC_LL
CLR FLAG_MH,UP
;;...............................
CLC
LDA MH_JS_L
ADC #1
STA MH_JS_L
BCC MH_NJW
INC MH_JS_H
CLC
MH_NJW:
;;.....................................
PC_LL:
MH_NALLOW:
;...................................................................................
LDA RAM_01S
CMP #50
BNE R_N01S
;...................................................................................
;
; 0.1S时间处理
;...................................................................................
TST FLAG1,STOP
BNE TT_NS1
TST FLAG1,EOOR
BNE TT_NS1
INC R_ALL
TT_NS1:
;...................................................................................
LDA #0
STA RAM_01S
R_N01S:
LDA RAM_05S
CMP #244
BNE LONG_JP2
JMP N_LONGJP2
LONG_JP2:
JMP R_N05S
N_LONGJP2:
;...................................................................................
;
; 0.5S时间处理
;...................................................................................
INV FLAG1,MH_SHINE
;........工作中的灯闪烁处理..............
TST FLAG1,WORK
BEQ TD_NW
TST FLAG1,7
BNE TD_NW
TST FLAG1,STOP
BEQ TL_NS
LDA SHINE2_H
STA LED_BUF2
LDA SHINE3_H
STA LED_BUF3
JMP TD_NW
TL_NS:
TST FLAG1,MH_SHINE
BEQ T_SS
LDA SHINE2_H
STA LED_BUF2
LDA SHINE3_H
STA LED_BUF3
JMP T_SS2
T_SS:
LDA SHINE2_L
STA LED_BUF2
LDA SHINE3_L
STA LED_BUF3
T_SS2:
TD_NW:
;........错误报警........
TST FLAG3,WARM_FLAG
BEQ T_NBJ
LDA P_BUZ_Ctrl
EOR #00000110b
sta P_BUZ_Ctrl
DEC WARM_T
BNE T_NBJ
lda P_BUZ_Ctrl
AND #11111001b
sta P_BUZ_Ctrl
CLR FLAG3,WARM_FLAG
T_NBJ:
;...........................................................
INC RAM_1S
LDA RAM_1S
CMP #2
BNE R_N1S
;...................................................................................
;
; 1S时间处理
;...................................................................................
TST FLAG1,STOP
BNE TT_NS2
TST FLAG1,SYS_G
BEQ T_TNG
TST FLAG1,EOOR
BNE T_TNG
DEC BT_S
BNE T_TNG
LDA #60
STA BT_S
DEC BT_M
BNE T_TNG
CLR FLAG1,SYS_G
T_TNG:
TST FLAG1,SM_G
BEQ T_NSM
TST FLAG1,EOOR
BNE T_NSM
DEC SYS_S
BNE T_NSM
LDA #60
STA SYS_S
DEC WASH_TIMES
T_NSM:
TST FLAG3,BH_JS
BEQ T_NBH
TST FLAG1,EOOR
BNE T_NBH
TST FLAG1,STOP
BNE T_NBH
DEC BH_S
BNE T_NBH
CLR FLAG3,BH_JS
T_NBH:
TST FLAG3,YZW
BEQ T_NYZYZ
DEC YZ_T
BNE T_NYZYZ
CLR FLAG3,YZW
T_NYZYZ:
TT_NS2:
;...........................................................
;...........................................................
LDA #0
STA RAM_1S
R_N1S:
LDA #0
STA RAM_05S
R_N05S:
SET P_INT_Flag2,5
N_BSI: ;不是时基中断就跳转到这里
pla ; pop A register
tax ; transfer A to X
pla ; pop A register (ie. pop X)
;
rti
;****************************************
;* *
;* Interrupt Vector Table *
;* *
;****************************************
VECTOR: .SECTION
DW V_NMI ; Non-mask interrupt vector(no use)
DW V_Reset ; Reset vector
DW V_IRQ ; IRQ interrupt vector
;****************************************
;* *
;* End Of Interrupt Vector Table *
;* *
;****************************************
.END ; end of program
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -