📄 hr52_10_p3.asm
字号:
;;.......................P3..................................
;..........................................
;
; 模糊测试函数
;..........................................
.PUBLIC MOHU_CS
MOHU_CS: .PROC
BB:
LDA #3
STA MH_T
LDA #0
STA MH_JS_H
STA MH_JS_L
STA R_ALL
LDA #01H
STA SHINE_BUF
CLR PD,ZZ
CLR PD,FZ
SET FLAG_MH,0
MH_LOOP:
JSR CHECK_P
;...暂停键的检测.........
TST KEY_S,4
BEQ MHKn4
TST KEY_L,4
BNE MHKn4
JSR Delay
TST KEY_S,4
BEQ MHKn4
JSR BUZ
SET KEY_L,4
CLR PD,ZZ
CLR PD,FZ
CLR FLAG_MH,0
LOOP_MH:
TST KEY_S,4
BEQ MHKn42
TST KEY_L,4
BNE MHKn42
JSR Delay
TST KEY_S,4
BEQ MHKn42
JSR BUZ
SET KEY_L,4
JMP BB
MHKn42:
JSR CHECK_P
JMP LOOP_MH
MHKn4:
;.......... 模糊的灯显示....................
TST FLAG1,MH_SHINE
BEQ F_NSHINE
CLR FLAG1,MH_SHINE
ASL SHINE_BUF
LDA #02H
STA LED_BUF4
STA LED_BUF5
LDA #0
STA LED_BUF1
LDA LED_BUF2
AND #01111110B
STA LED_BUF2
TST SHINE_BUF,5
BEQ SH_N6
LDA #01H
STA SHINE_BUF
SH_N6:
TST SHINE_BUF,0 ;L10
BEQ SH_N0
LDA #40H
STA LED_BUF1
SH_N0:
TST SHINE_BUF,1 ;L9
BEQ SH_N1
LDA LED_BUF2
ORA #01H
STA LED_BUF2
SH_N1:
TST SHINE_BUF,2 ;L8
BEQ SH_N2
LDA LED_BUF2
ORA #80H
STA LED_BUF2
SH_N2:
TST SHINE_BUF,3 ;L7
BEQ SH_N3
LDA #08H
STA LED_BUF1
SH_N3:
TST SHINE_BUF,4 ;L6
BEQ SH_N4
LDA #02H
STA LED_BUF1
SH_N4:
F_NSHINE:
LDA R_ALL ;小于0.5S
CMP #5
BCS MH_R5
SET PD,ZZ
CLR PD,FZ
MH_R5:
LDA R_ALL ;0.5--1
CMP #5
BCC RH_R10
LDA R_ALL
CMP #10
BCS RH_R10
CLR PD,ZZ
CLR PD,FZ
RH_R10:
LDA R_ALL ;1----1.5
CMP #10
BCC RH_R15
LDA R_ALL
CMP #15
BCS RH_R15
CLR PD,ZZ
SET PD,FZ
RH_R15:
LDA R_ALL ;1.5----20
CMP #15
BCC RH_R20
LDA R_ALL
CMP #20
BCS RH_R20
CLR PD,ZZ
CLR PD,FZ
RH_R20:
LDA R_ALL
BCC R_D20
JSR Delay
JSR Delay
DEC MH_T
BNE MH_TN3
CLR FLAG_MH,0
JMP END_MH ;转了3个周期了(跳转出去)
MH_TN3:
LDA #0
STA R_ALL
R_D20:
JMP MH_LOOP
END_MH:
CLR PD,ZZ
CLR PD,FZ
RTS
.ENDP
;..........................................
; 预约函数
;..........................................
.PUBLIC YY_WORK
YY_WORK: .PROC
LDA #60
STA BT_M
STA BT_S
SET FLAG1,SYS_G
YY_LOOP:
;显示时间
SM_SHOW YY_TIME
TST FLAG1,MH_SHINE
BEQ YY_NSHINE
SET LED_BUF4,5
JMP YY_NSHINE2
YY_NSHINE:
CLR LED_BUF4,5
YY_NSHINE2:
;检测门盖
TST PB,MG
BEQ YY_NKG
JSR Delay
TST PB,MG
BEQ YY_NKG
;.................预约开盖报警
SET E_FLAG,YY_AQKG
JSR WARM
YY_NKG:
;检测时间到
TST FLAG1,SYS_G
BNE SYS_NEND
DEC YY_TIME
BNE SYS_NNE
JMP YY_END
SYS_NNE:
LDA #60
STA BT_M
STA BT_S
SET FLAG1,SYS_G
SYS_NEND:
JSR CHECK_P
JMP YY_LOOP
YY_END:
RTS
.ENDP
;..........................................
; 进水
;..........................................
.PUBLIC W_INPUT
W_INPUT: .PROC
LDA #20
STA BT_M
LDA #60
STA BT_S
STA SYS_S
SET FLAG1,SYS_G
TST FLAG2,BF_BG
BEQ W_NJJ
TST FLAG2,XD_BS
BNE W_NJJ
LDA WASH_TIMES
STA WASH_TEMP
DEC WASH_TEMP
DEC WASH_TEMP
SET FLAG1,SM_G
W_NJJ:
LOOP_IN:
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;测水位 (比较设定值和测量值得来判断水位到了没有)
;BJ16是一个自己定义个宏
;SW_SET_H SW_SET_L 是设定值
BJ16 SW_H,SW_L,SW_SET_H,SW_SET_L
TST MATH_FLAG,M_XY
BEQ JS_SNXY
;测量的值小于设定值,则跳出排水
CLR FLAG1,SYS_G ;水位到了 ;清超时累计标记
CLR FLAG1,SM_G
jmp END_WIN
JS_SNXY:
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;如果超过定义时间就不走
TST FLAG2,BF_BG
BEQ W_NJJ3
LDA WASH_TIMES
CMP WASH_TEMP
BNE W_TG
CLR FLAG1,SM_G
W_TG:
W_NJJ3:
JSR CHECK_S ;检测暂停
JSR CHECK_P ;检测电源
TST FLAG1,SYS_G ;检测超时
BNE W_NCS
SET E_FLAG,JS_CS ;.....................超时报警
JSR WARM
LDA #20
STA BT_M
LDA #60
STA BT_S
SET FLAG1,SYS_G
W_NCS:
SET PC,JS
CLR PC,AK
JMP LOOP_IN
END_WIN:
;................A口6秒延时........
LDA #1
STA BT_M
LDA #6
STA BT_S
SET FLAG1,SYS_G
SET FLAG2,AK_W
AK_LOOP:
CLR PC,JS
SET PC,AK
JSR CHECK_P
JSR CHECK_S
TST FLAG1,SYS_G
BNE AK_NE
CLR FLAG2,AK_W
JMP END_AK
AK_NE:
JMP AK_LOOP
END_AK:
TST FLAG2,BF_BG
BEQ W_NJJ2
TST FLAG2,XD_BS
BNE W_NJJ2
LDA WASH_TEMP ;减掉定义的时间
STA WASH_TIMES
LDA #60
STA SYS_S
W_NJJ2:
RTS
.ENDP
;..........................................
; 排水
;..........................................
.PUBLIC W_OUTPUT
W_OUTPUT: .PROC
LDA WASH_TIMES
STA WASH_TEMP
DEC WASH_TEMP
DEC WASH_TEMP
LDA #3
STA BT_M
LDA #60
STA BT_S
STA SYS_S
SET FLAG1,SYS_G
SET FLAG1,SM_G
O_LOOP1:
JSR CHECK_S
JSR CHECK_P
TST FLAG1,SYS_G ;检测排水超时
BNE PS_NJCS
SET E_FLAG,PS_CS ;......超时报警
JSR WARM
LDA #3
STA BT_M
LDA #60
STA BT_S
SET FLAG1,SYS_G
PS_NJCS:
;排水超过2分钟后时间不走
LDA WASH_TIMES
CMP WASH_TEMP
BNE W_TG2
CLR FLAG1,SM_G
W_TG2:
SET PC,AK
SET PD,PS
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
BJ16 SW_H,SW_L,#12H,#D0H
TST MATH_FLAG,M_DY
BEQ P_SWNE
LDA #60
STA BT_S
LDA #1
STA BT_M
SET FLAG1,SYS_G
JMP O_LOOP2
P_SWNE:
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
JMP O_LOOP1
O_LOOP2:
SET PC,AK
SET PD,PS
JSR CHECK_S
JSR CHECK_P
TST FLAG1,SYS_G ;排水延时时间到
BNE PS_DNE
JMP E_PS
PS_DNE:
JMP O_LOOP2
E_PS:
LDA WASH_TEMP ;减掉定义的时间
STA WASH_TIMES
LDA #60
STA SYS_S
RTS
.ENDP
;.................................................................
; 洗涤(BT_M ,BT_S)
;.................................................................
.PUBLIC XD_WORK
XD_WORK: .PROC
;LDA WASH_TIMES
;STA WASH_TEMP
;LDA WASH_TEMP
;SBC BT_M
;STA WASH_TEMP
LDA #60
STA SYS_S
LDA #0
STA R_ALL
JSR GET_SL ;获取水流
SET FLAG1,SM_G
SET FLAG1,SYS_G
;.....判断溢注.........
TST FLAG3,YZ
BEQ XD_NYZ
LDA #20
STA YZ_T
SET FLAG3,YZW
XD_NYZ:
XD_LOOP:
TST FLAG3,YZW
BEQ XD_YZ
SET PC,JS
JMP XD_YZ2
XD_YZ:
CLR PC,JS
XD_YZ2:
JSR CHECK_P ;暂停
JSR CHECK_S ;电源
;....................开盖报警........................................................
TST PB,MG
BEQ XD_NKG
JSR Delay
TST PB,MG
BEQ XD_NKG
SET E_FLAG,AQKG
JSR WARM
;.................洗涤开盖报警......
XD_NKG:
;...................浸泡时候的转转停停在这里处理.....................................
TST FLAG2,FLAG_JP ;如果是浸泡,就判断浸泡中的洗停
BEQ XD_NJP
JSR JP_GET_NUM
JMP XD_NJP2
XD_NJP:
;不是浸泡就一直洗
SET FLAG2,FLAG_JPW ;浸泡洗涤工作标记(为1的时候就洗,为0就停)
XD_NJP2:
TST FLAG2,FLAG_JPW
BNE XD_NNN
CLR PD,ZZ
CLR PD,FZ
JMP XD_NNN2
XD_NNN:
;;.................................................................................
;处理水流
LDA R_ALL
CMP XD_Z1
BCS YY1
SET PD,ZZ ;ZZ
CLR PD,FZ
YY1:
LDA R_ALL
CMP XD_Z1
BCC YY2
LDA R_ALL
CMP XD_Z2
BCS YY2
CLR PD,ZZ
CLR PD,FZ
YY2:
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
TST FLAG3,SW_WORK
BNE WS_XDBCS
LDA R_ALL
CMP SW_C
BNE XD_SWNC
NOP
BJ16 SW_H,SW_L,SW_D_H,SW_D_L
TST FLAG4,SW_BJ
BEQ NYNY
BJ16 SW_H,SW_L,SW_SET_H,SW_SET_L
CLR FLAG4,SW_BJ
NYNY:
TST MATH_FLAG,M_DY
BEQ W_XNC
CLR FLAG1,SM_G
CLR FLAG1,SYS_G
LDA BT_M ;...保存时间..............
STA XD_TM
LDA BT_S
STA XD_TS
LDA SYS_S
STA XD_TS2
SET FLAG2,XD_BS
JSR W_INPUT ;........洗涤补水.............
CLR FLAG2,XD_BS
LDA XD_TM
STA BT_M
LDA XD_TS
STA BT_S
LDA XD_TS2
STA SYS_S
SET FLAG1,SM_G
SET FLAG1,SYS_G
W_XNC:
XD_SWNC:
WS_XDBCS:
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
LDA R_ALL
CMP XD_Z2
BCC YY3
LDA R_ALL
CMP XD_Z3
BCS YY3
SET PD,FZ
CLR PD,ZZ
YY3:
LDA R_ALL
CMP XD_Z3
BCC YY4
LDA R_ALL
CMP XD_Z4
BCS YY4
CLR PD,ZZ
CLR PD,FZ
YY4:
LDA R_ALL
CMP XD_Z4
BCC YY5
LDA #0
STA R_ALL
YY5:
XD_NNN2:
;.....................................................................
SET PC,AK
;........判断时间到了没有?........................
TST FLAG1,SYS_G
BNE XD_NE
CLR PD,ZZ
CLR PD,FZ
JMP END_XD
XD_NE:
;*********如果在是无水模式就检测程序键*****************
TST FLAG3,SW_WORK
BEQ XD_YYY
TST KEY_S,2
BEQ XD_YYY
TST KEY_L,2
BNE XD_YYY
JSR Delay
TST KEY_S,2
BEQ XD_YYY
SET KEY_L,2
JSR BUZ
ASL WS_MODE
JSR WS_LED
ldX #C_STACK_BOTTOM ;设置堆栈,将指针指想栈顶
txs
LDA #0
STA KEY_S
STA FLAG1
STA FLAG2
LDA FLAG3
AND #10000000B
STA FLAG3
JMP AAA
XD_YYY:
;*****************************************************
JMP XD_LOOP
END_XD:
;LDA WASH_TEMP
;STA WASH_TIMES
RTS
.ENDP
.PUBLIC PSBH_WORK
PSBH_WORK: .PROC
LDA #7
STA BH_S
SET FLAG3,BH_JS
SET FLAG2,BH_7
BH_LOOP:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -