📄 key.asm
字号:
;; KEY.ASM
PROC READKEY,KEY
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READKEY:
NOP
SETB HD_KEY
MOV C,HD_KEY
MOV F0,C
MOV ACC.0,C
MOV C,HD_KEYL_F
MOV B.0,C
XRL A,B
MOV C,F0
MOV HD_KEYL_F,C
ANL A,#01H
JZ READ_KEY1
JC READ_KEY_UP
READ_KEY_DOWN:
JB KEY_DOWN_F,READ_KEY1
LCALL HD_READ
ANL A,#03H
MOV KEY_VALUE,A
SETB KEY_DOWN_F
SETB KEY_ONE_F
MOV A,#KEY_800MS
LCALL DELAY_MS
MOV KEY_DELAY,A
SJMP READ_KEY1
READ_KEY_UP:
JNB KEY_DOWN_F,READ_KEY1
SETB KEY_UP_F
MOV A,#MAIN_10S
LCALL DELAY_SEC
MOV MAIN_DELAY,A
READ_KEY1:
CLR KEY_DELAY_F
JNB KEY_DOWN_F,READ_KEY_END
MOV A,KEY_DELAY
XRL A,TIMER_CAL3
JNZ READ_KEY_END
SETB KEY_DELAY_F
CLR KEY_ONE_F
MOV A,#KEY_150MS
LCALL DELAY_MS
MOV KEY_DELAY,A
MOV A,#MAIN_10S
LCALL DELAY_SEC
READ_KEY_END:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY:
NOP
MOV A,SYS_STATE
CJNE A,#0BH,KEY_STATE_ERROR
KEY_STATE_ERROR:
JC KEY_STATE_RIGHT
MOV KEY_VALUE,#00H
MOV SYS_STATE,#00H
LJMP KEY_END
KEY_STATE_RIGHT:
MOV B,#03H
MUL AB
MOV DPTR,#KEY_MENU_TAB
JMP @A+DPTR
KEY_MENU_TAB:
LJMP KEY_MENU0 ;自动显示
LJMP KEY_MENU1 ;手动显示
LJMP KEY_MENU2 ;密码输入
LJMP KEY_MENU3 ;设置显示
LJMP KEY_MENU4 ;设置波特率
LJMP KEY_MENU5 ;设置地址
LJMP KEY_MENU6 ;设置电压
LJMP KEY_MENU7 ;设置电流
LJMP KEY_MENU8 ;复位
LJMP KEY_MENU9 ;保存设置
LJMP KEY_MENU10 ;退出菜单
LJMP KEY_END
KEY_END:
JNB KEY_UP_F,KEY_END1
MOV KEY_VALUE,#00H
KEY_END1:
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;自动显示
KEY_MENU0:
NOP
JNB KEY_UP_F,KEY_MENU0_END
MOV A,KEY_VALUE
ANL A,#03H
CJNE A,#00H,KEY_MENU0_1
MOV R0,#SHOWMD_TEMP
MOV R5,#SHOWMDH_AD
MOV R4,#SHOWMDL_AD
MOV R2,#08H
LCALL AREAD
MOV SYS_STATE,#03H
SJMP KEY_MENU0_END
KEY_MENU0_1:
CJNE A,#01H,KEY_MENU0_2
MOV R0,#SHOWMD_TEMP
MOV R5,#SHOWMDH_AD
MOV R4,#SHOWMDL_AD
MOV R2,#08H
LCALL AREAD
MOV SYS_STATE,#0AH
SJMP KEY_MENU0_END
KEY_MENU0_2:
CJNE A,#02H,KEY_MENU0_3
SJMP KEY_MENU0_END
KEY_MENU0_3:
CJNE A,#03H,KEY_MENU0_END
KEY_MENU0_END:
LJMP KEY_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;手动显示
KEY_MENU1:
NOP
JNB KEY_UP_F,KEY_MENU1_END
MOV A,KEY_VALUE
ANL A,#03H
CJNE A,#00H,KEY_MENU1_1
;MOV SYS_STATE,#00H
SJMP KEY_MENU0_END
KEY_MENU1_1:
CJNE A,#01H,KEY_MENU1_2
;MOV SYS_STATE,#00H
SJMP KEY_MENU1_END
KEY_MENU1_2:
CJNE A,#02H,KEY_MENU1_3
SJMP KEY_MENU1_END
KEY_MENU1_3:
CJNE A,#03H,KEY_MENU1_END
KEY_MENU1_END:
LJMP KEY_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;密码输入
KEY_MENU2:
NOP
LJMP KEY_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置显示
KEY_MENU3:
NOP
MOV C,KEY_DELAY_F
ORL C,KEY_UP_F
JNC KEY_MENU1_END
MOV A,KEY_VALUE
ANL A,#03H
CJNE A,#00H,KEY_MENU3_1
JNB KEY_UP_F,KEY_MENU3_END
MOV SYS_STATE,#04H
SJMP KEY_MENU1_END
KEY_MENU3_1:
CJNE A,#01H,KEY_MENU3_2
JNB KEY_UP_F,KEY_MENU3_END
MOV SYS_STATE,#0AH
SJMP KEY_MENU3_END
KEY_MENU3_2:
CJNE A,#02H,KEY_MENU3_3
MOV R0,#SHOWMD_TEMP
LCALL INCSHOWMD
SJMP KEY_MENU3_END
KEY_MENU3_3:
CJNE A,#03H,KEY_MENU3_END
MOV R0,#SHOWMD_TEMP
LCALL DECSHOWMD
KEY_MENU3_END:
LJMP KEY_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置波特率
KEY_MENU4:
NOP
MOV C,KEY_DELAY_F
ORL C,KEY_UP_F
JNC KEY_MENU4_END
MOV A,KEY_VALUE
ANL A,#03H
CJNE A,#00H,KEY_MENU4_1
JNB KEY_UP_F,KEY_MENU4_END
MOV SYS_STATE,#05H
SJMP KEY_MENU4_END
KEY_MENU4_1:
CJNE A,#01H,KEY_MENU4_2
JNB KEY_UP_F,KEY_MENU4_END
MOV SYS_STATE,#03H
SJMP KEY_MENU5_END
KEY_MENU4_2:
CJNE A,#02H,KEY_MENU4_3
MOV R0,#BRATE_TEMP
LCALL INCBRATE
SJMP KEY_MENU4_END
KEY_MENU4_3:
CJNE A,#03H,KEY_MENU4_END
MOV R0,#BRATE_TEMP
LCALL DECBRATE
KEY_MENU4_END:
LJMP KEY_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置地址
KEY_MENU5:
NOP
MOV C,KEY_DELAY_F
ORL C,KEY_UP_F
JNC KEY_MENU5_END
MOV A,KEY_VALUE
ANL A,#03H
CJNE A,#00H,KEY_MENU5_1
JNB KEY_UP_F,KEY_MENU4_END
MOV SYS_STATE,#06H
SJMP KEY_MENU5_END
KEY_MENU5_1:
CJNE A,#01H,KEY_MENU5_2
JNB KEY_UP_F,KEY_MENU5_END
MOV SYS_STATE,#04H
SJMP KEY_MENU5_END
KEY_MENU5_2:
CJNE A,#02H,KEY_MENU5_3
MOV R0,#SLAVE_TEMP
LCALL INCSLAVE
SJMP KEY_MENU5_END
KEY_MENU5_3:
CJNE A,#03H,KEY_MENU5_END
MOV R0,#SLAVE_TEMP
LCALL DECSLAVE
KEY_MENU5_END:
LJMP KEY_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置电压
KEY_MENU6:
NOP
MOV C,KEY_DELAY_F
ORL C,KEY_UP_F
JNC KEY_MENU6_END
MOV A,KEY_VALUE
ANL A,#03H
CJNE A,#00H,KEY_MENU6_1
JNB KEY_UP_F,KEY_MENU6_END
MOV SYS_STATE,#07H
SJMP KEY_MENU6_END
KEY_MENU6_1:
CJNE A,#01H,KEY_MENU6_2
JNB KEY_UP_F,KEY_MENU6_END
MOV SYS_STATE,#05H
SJMP KEY_MENU6_END
KEY_MENU6_2:
CJNE A,#02H,KEY_MENU6_3
MOV A,#01H
JB KEY_ONE_F,KEY_MENU6_2_1
MOV A,#0AH
KEY_MENU6_2_1:
MOV R0,#KU1L
LCALL INCKU
SJMP KEY_MENU6_END
KEY_MENU6_3:
CJNE A,#03H,KEY_MENU6_END
MOV A,#01H
JB KEY_ONE_F,KEY_MENU6_3_1
MOV A,#0AH
KEY_MENU6_3_1:
MOV R0,#KU1L
LCALL DECKU
KEY_MENU6_END:
LJMP KEY_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置电流
KEY_MENU7:
NOP
MOV C,KEY_DELAY_F
ORL C,KEY_UP_F
JNC KEY_MENU7_END
MOV A,KEY_VALUE
ANL A,#03H
CJNE A,#00H,KEY_MENU7_1
JNB KEY_UP_F,KEY_MENU7_END
MOV SYS_STATE,#08H
SJMP KEY_MENU7_END
KEY_MENU7_1:
CJNE A,#01H,KEY_MENU7_2
JNB KEY_UP_F,KEY_MENU7_END
MOV SYS_STATE,#06H
SJMP KEY_MENU7_END
KEY_MENU7_2:
CJNE A,#02H,KEY_MENU7_3
MOV A,#01H
JB KEY_ONE_F,KEY_MENU7_2_1
MOV A,#0AH
KEY_MENU7_2_1:
MOV R0,#KI1L
LCALL INCKI
SJMP KEY_MENU7_END
KEY_MENU7_3:
CJNE A,#03H,KEY_MENU7_END
MOV A,#01H
JB KEY_ONE_F,KEY_MENU7_3_1
MOV A,#0AH
KEY_MENU7_3_1:
MOV R0,#KI1L
LCALL DECKI
KEY_MENU7_END:
LJMP KEY_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;复位
KEY_MENU8:
NOP
MOV C,KEY_DELAY_F
ORL C,KEY_UP_F
JNC KEY_MENU8_END
MOV A,KEY_VALUE
ANL A,#03H
CJNE A,#00H,KEY_MENU8_1
JNB KEY_UP_F,KEY_MENU8_END
MOV SYS_STATE,#09H
SJMP KEY_MENU8_END
KEY_MENU8_1:
CJNE A,#01H,KEY_MENU8_2
JNB KEY_UP_F,KEY_MENU8_END
MOV SYS_STATE,#07H
SJMP KEY_MENU8_END
KEY_MENU8_2:
CJNE A,#02H,KEY_MENU8_3
CLR EA
SJMP $
SJMP KEY_MENU8_END
KEY_MENU8_3:
CJNE A,#03H,KEY_MENU8_END
;SJMP KEY_MENU8_END
KEY_MENU8_END:
LJMP KEY_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;保存设置
KEY_MENU9:
NOP
JNB KEY_UP_F,KEY_MENU9_END
MOV A,KEY_VALUE
ANL A,#03H
CJNE A,#00H,KEY_MENU9_1
MOV SYS_STATE,#0AH
SJMP KEY_MENU9_END
KEY_MENU9_1:
CJNE A,#01H,KEY_MENU9_2
MOV SYS_STATE,#08H
SJMP KEY_MENU9_END
KEY_MENU9_2:
CJNE A,#02H,KEY_MENU9_3
MOV R0,#SHOWMD_TEMP
MOV R5,#SHOWMDH_AD
MOV R4,#SHOWMDL_AD
MOV R2,#08H
LCALL AWRITE
NOP
LCALL READ_EE
MOV SYS_STATE,#00H
SJMP KEY_MENU9_END
KEY_MENU9_3:
CJNE A,#03H,KEY_MENU9_END
;SJMP KEY_MENU9_END
KEY_MENU9_END:
LJMP KEY_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;退出菜单
KEY_MENU10:
NOP
JNB KEY_UP_F,KEY_MENU10_END
MOV A,KEY_VALUE
ANL A,#03H
CJNE A,#00H,KEY_MENU10_1
MOV SYS_STATE,#03H
SJMP KEY_MENU10_END
KEY_MENU10_1:
CJNE A,#01H,KEY_MENU10_2
MOV SYS_STATE,#09H
SJMP KEY_MENU9_END
KEY_MENU10_2:
CJNE A,#02H,KEY_MENU10_3
MOV SYS_STATE,#00H
SJMP KEY_MENU10_END
KEY_MENU10_3:
CJNE A,#03H,KEY_MENU10_END
;SJMP KEY_MENU10_END
KEY_MENU10_END:
LJMP KEY_END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -