📄 hr52_10_p1.asm
字号:
;;..............................P1..............................
.public BUZ
BUZ: .PROC
lda P_BUZ_Ctrl
ORA #00000110b
sta P_BUZ_Ctrl
jsr Delay
jsr Delay
lda P_BUZ_Ctrl
AND #11111001b
sta P_BUZ_Ctrl
RTS
.ENDP
.public Delay
Delay: .proc
LDA #75
STA delay_count2
lda #255
sta delay_count1
?wait:
dec delay_count1
beq ?wait1
jmp ?wait
?wait1:
dec delay_count2
beq ?wait2
jmp ?wait
?wait2
rts
.endp
.PUBLIC DISPLAY
DISPLAY: .PROC
;关所有公共口
LDA P_IOA_Buf
AND #00000111B
STA PA
ASL COM_BUF
TST COM_BUF,5
BEQ COM_N5
LDA #01H
STA COM_BUF
COM_N5:
TST COM_BUF,0
BEQ COM_BN0
LDA LED_BUF1
STA LED_TEMP
JSR Send_164
SET PA,COM1
JSR NNOP
TST PB,CK1 ;..KEY1
BEQ S_K1
SET KEY_S,0
JMP S_K1_D
S_K1:
CLR KEY_S,0
CLR KEY_L,0
S_K1_D:
TST PB,CK2 ;...KEY2
BEQ S_K2
SET KEY_S,1
JMP S_K2_D
S_K2:
CLR KEY_S,1
CLR KEY_L,1
S_K2_D:
COM_BN0:
TST COM_BUF,1
BEQ COM_BN1
LDA LED_BUF2
STA LED_TEMP
JSR Send_164
SET PA,COM2
JSR NNOP
TST PB,CK1 ;.......KEY3
BEQ S_K3
SET KEY_S,2
JMP S_K3_D
S_K3:
CLR KEY_S,2
CLR KEY_L,2
S_K3_D:
TST PB,CK2 ;.....KEY4..
BEQ S_K4
SET KEY_S,3
JMP S_K4_D
S_K4:
CLR KEY_S,3
CLR KEY_L,3
S_K4_D:
COM_BN1:
TST COM_BUF,2
BEQ COM_BN2
LDA LED_BUF3
STA LED_TEMP
JSR Send_164
SET PA,COM3
JSR NNOP
TST PB,CK1 ;.....KEY5
BEQ S_K5
SET KEY_S,4
JMP S_K5_D
S_K5:
CLR KEY_S,4
CLR KEY_L,4
S_K5_D:
TST PB,CK2 ;.......KEY6
BEQ S_K6
SET KEY_S,5
JMP S_K6_D
S_K6:
CLR KEY_S,5
CLR KEY_L,5
S_K6_D:
COM_BN2:
TST COM_BUF,3
BEQ COM_BN3
LDA LED_BUF4
STA LED_TEMP
JSR Send_164
SET PA,COM4
COM_BN3:
TST COM_BUF,4
BEQ COM_BN4
LDA LED_BUF5
STA LED_TEMP
JSR Send_164
SET PA,COM5
COM_BN4:
RTS
.ENDP
.PUBLIC Send_164
Send_164: .PROC
LDA #8
STA TEMP_164
Loop_164:
;
CLR PA,C_164 ;拉低数据线
;
TST LED_TEMP,0
BEQ N1_164
CLR PA,D_164
JMP N2_164
N1_164:
SET PA,D_164
N2_164:
;
SET PA,C_164 ;拉高,锁存状态
LSR LED_TEMP ;右移一位
;
DEC TEMP_164 ;判断够8次没有
BNE T164_N0
JMP END_164
T164_N0:
JMP Loop_164
END_164:
RTS
.ENDP
.PUBLIC NNOP
NNOP: .PROC
LDA #135 ;90
STA TEMP_164
D_wait:
dec TEMP_164
beq D_wait1
jmp D_wait
D_wait1:
RTS
.ENDP
.PUBLIC CHECK_P
CHECK_P: .PROC
TST KEY_S,5
BEQ P_NK5
TST KEY_L,5
BNE P_NK5
JSR Delay
TST KEY_S,5
BEQ P_NK5
SET KEY_L,5
JSR BUZ
JSR $
P_NK5:
TST E_FLAG,SWQ
BEQ SWQ_B
JSR WARM
SWQ_B:
RTS
.ENDP
.PUBLIC CHECK_S
CHECK_S: .PROC
TST KEY_S,4
BEQ LONG_JP3
TST KEY_L,4
BNE LONG_JP3
JSR Delay
TST KEY_S,4
BEQ LONG_JP3
SET KEY_L,4
JSR BUZ
SET FLAG3,SSS
JMP LOOP_S
LONG_JP3: JMP KEY_NS
LOOP_S:
SET FLAG1,STOP
LDA #0
STA ZT_FLAG ;关掉撞桶检测功能
LDA #0
STA PD
LDA #00000100B
STA PC
TST KEY_S,4 ;检测暂停键再启动
BEQ KEY_NS2
TST KEY_L,4
BNE KEY_NS2
JSR Delay
TST KEY_S,4
BEQ KEY_NS2
SET KEY_L,4
JSR BUZ
CLR FLAG3,SSS
;如果是在A口延时状态,给回6S
TST FLAG2,AK_W
BEQ S_AKNW
LDA #6
STA BT_S
S_AKNW:
LDA #7
STA BH_S
SET FLAG1,PS_BH
;如果是在脱水就重开撞桶检测功能
TST FLAG3,FLAG_TS
BEQ S_NTSZ
LDA #0
STA ZT_FLAG
SET ZT_FLAG,ZT_ALLOW
S_NTSZ:
JMP KEY_NS
KEY_NS2:
JSR CHECK_P
;检测水位键
TST FLAG3,SW_WORK
BNE WS_NJC
TST KEY_S,0
BEQ S_KN1
TST KEY_L,0
BNE S_KN1
JSR Delay
TST KEY_S,0
BEQ S_KN1
TST LED_BUF2,6 ;如果L14亮则锁死水位
BNE S_KN1
TST GC_COUNT,4
BNE S_KN1
SET KEY_L,0
JSR BUZ
CLR FLAG1,WORK
INC SW_COUNT
CLR SHINE2_H,0
CLR SHINE2_L,0
CLR SHINE2_H,7
CLR SHINE2_L,7
JSR GET_NUM_SW
SET FLAG4,SW_BJ
S_KN1:
WS_NJC:
;((((((((((((无水模式中检测程序键盘))))))))))))))))))))))))))))))
TST FLAG3,SW_WORK
BEQ S_NK3
TST KEY_S,2
BEQ S_NK3
TST KEY_L,2
BNE S_NK3
JSR Delay
TST KEY_S,2
BEQ S_NK3
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
S_NK3:
JMP LOOP_S
KEY_NS:
SET FLAG1,WORK
CLR FLAG1,STOP
RTS
.ENDP
;............判断大小......................
.PUBLIC MATH
MATH: .PROC
LDA #00H
STA MATH_FLAG
LDA X1
CMP Y1
BEQ BJ1 ;高位相等?
BCC BJ2 ;高位不相等,判断是大于还是小于
SET MATH_FLAG,M_DY ;大于
JMP END_MATH
BJ2:
SET MATH_FLAG,M_XY ;小于
JMP END_MATH
BJ1: ;(高位x相等,比较低位)
LDA X2
CMP Y2
BEQ BJ3 ;等于
BCC BJ4
SET MATH_FLAG,M_DY ;大于
JMP END_MATH
BJ4:
SET MATH_FLAG,M_XY ;小于
JMP END_MATH
BJ3:
SET MATH_FLAG,M_DDY ;等于
END_MATH:
RTS
.ENDP
;段码表
; 1 2 3 4 5 6 7 8 9 C E F --
; 48H 9EH 5EH 4BH 57H D7H 4CH DFH 5FH 95H 97H 87H 02H
T_table:
DB DDH ;0
DB 48H ;1
DB 9EH ;2
DB 5EH ;3
DB 4BH ;4
DB 57H ;5
DB D7H ;6
DB 4CH ;7
DB DFH ;8
DB 5FH ;9
DB 95H ;C
DB 97H ;E
DB 87H ;F
DB 02H ;--
DB 00H ;全灭
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -