📄 keyscan.asm
字号:
LD CAL_STATE,A ;
LD A,#0000B ;
JP DISP_8888 ;
;---------------------- ;
PRO_CAL_1: ;
CPSE A,#CAL_MODE_CON ; SYS IN CAL MODE ?
RET ; NO. EXIT
BITS CAL_PRESSED ; YES.
RET ;
;**************************************;
;***************************************************************************;
; PROCESS_USER_SELECT ;
;***************************************************************************;
; INPUT: ACC ;
PRO_USER_SELECT: ;
LD A,RUN_MODE_REG ;
CPSE A,#SCALE_MODE_CON ; SYS IN SCALE MODE ?
JPS PUS_1 ; NO.
PUS_0: LD A,#USER_MODE_CON ; YES. LOAD MODE CON
LD RUN_MODE_REG,A ;
LD A,#01H ; USER_NUM = 1
LD USER_NUM,A ;
JPS PUS_2 ;
PUS_1: CPSE A,#USER_MODE_CON ; SYS IN USER MODE ?
RET ; NO. EXIT
;-------------------------- ;
;USER_NUM ++ ;
PUS_11: INCS USER_NUM ; USER_NUM ++
NOP ;
LD A,USER_NUM ;
CPSE A,#USER_NUM_CON ;
JPS PUS_2 ;
LD A,#01H ;
LD USER_NUM,A ;
PUS_2: BITS SET_EN ; ENABLE SET MODULE
LD A,#04H ;
LD SET_STATE,A ;
RET ;
;---------------------- ;
;USER_NUM -- ;
PUS_21: ;
LD A,USER_NUM ;
CPSE A,#01H ;
JPS PUS_3 ;
LD A,#USER_NUM_CON ;
PUS_3: DECS A ;
NOP ;
LD USER_NUM,A ;
JPS PUS_2 ;
;**************************************;
;***************************************************************************;
; PROCESS UP OR DN ;
;***************************************************************************;
; FUNCTION: WHEN "UP"/"DN" KEY PRESSED,PROCESS IT
;**************************************;
;PROCESS "UP" KEY ;
PROCESS_UP: ;
LD A,RUN_MODE_REG ; SYS IN SET MODE ?
CPSE A,#SET_MODE_CON ;
JPS PRO_UP_A ; NO.
JPS PRO_UP_0 ; YES.
PRO_UP_A: ;
CPSE A,#USER_MODE_CON ; SYS IN USER MODE ?
RET ; NO.
JPS PUS_11 ; YES.
;--------------------- ;
;SYS IN "SET MODE", USE "UP" KEY INPUT USER'S INFO
PRO_UP_0: ;
BITS UP_DN_PRESSED ; UP_DN_PRESSED = 1
LD A,INFO_PTR ;
CPSE A,#0H ;
JPS PRO_UP_1 ;
;--------------------- ;
INCS USER_NUM ; USER_NUM ++
LD A,USER_NUM ;
CPSE A,#USER_NUM_CON ;
RET ;
LD A,#1H ;
LD USER_NUM,A ;
RET ;
;--------------------- ;
PRO_UP_1: ;
CPSE A,#1H ; SEX ++
JPS PRO_UP_2 ;
BTST SEX ;
JPS PRO_UP_11 ;
BITR SEX ;
RET ;
PRO_UP_11: ;
BITS SEX ;
RET ;
;------------------------ ;
PRO_UP_2: ; AGE + +
CPSE A,#02H ;
JPS PRO_UP_3 ;
LD EA,AGE ;
LD WX,#99 ; ( 10 - 100 )
CPSE EA,WX ;
JPS PRO_UP_21 ;
LD EA,#10 ;
JPS PRO_UP_22 ;
PRO_UP_21: ;
LD WX,EA ;
INCS WX ;
LD EA,WX ;
PRO_UP_22: ;
LD AGE,EA ;
RET ;
;---------------------- ;
PRO_UP_3: ; HEIGHT ++
BTSF KG_FLAG ; UNIT IS KG ?
JPS PRO_UP_32 ; YES.
;--------------------- ;
; UNIT IS LB/ST ; NO.
LD A,HT_BUF+0 ;
CPSE A,#0BH ; [HT_BUF+0] FULL ?
JPS PRO_UP_31 ; NO.
LD A,#0H ; YES.
LD HT_BUF+0,A ;
INCS HT_BUF+1 ; [HT_BUF+1]++
RET ;
PRO_UP_31: ;
INCS HT_BUF+0 ; [HT_BUF+0] ++
LD EA,HT_BUF ;
LD WX,#73H ; HT >= 7 FT 3 INCH ?
SBS EA,WX ;
JPS PRO_UP_31A ; YES.
RET ; NO.
PRO_UP_31A: ;
LD EA,#34H ; YES.
LD HT_BUF,EA ;
RET ;
;------------------------ ;
; UNIT IS KG ;
PRO_UP_32: ;
LD EA,HEIGHT ;
LD WX,#220 ; ( 100 - 220 )
CPSE EA,WX ;
JPS PRO_UP_33 ;
LD EA,#100 ;
JPS PRO_UP_34 ;
PRO_UP_33: ;
LD WX,EA ;
INCS WX ;
LD EA,WX ;
PRO_UP_34: ;
LD HEIGHT,EA ;
RET ;
;**************************************;
;**************************************;
;PROCESS "DOWN" KEY ;
PROCESS_DN: ;
LD A,RUN_MODE_REG ; SYS IN SET MODE ?
CPSE A,#SET_MODE_CON ;
JPS PRO_DN_A ; NO.
JPS PRO_DN_0 ; YES.
PRO_DN_A: ;
CPSE A,#USER_MODE_CON ; SYS IN USER MODE ?
RET ; NO.
JPS PUS_21 ; YES. USER_NUM - -
;-------------------------- ;
;USE "DOWN" KEY TO INPUT USER'INFO ......
PRO_DN_0: ;
BITS UP_DN_PRESSED ; YES. UP_DN_PRESSED = 1
LD A,INFO_PTR ;
CPSE A,#0H ;
JPS PRO_DN_1 ;
;-------------------------- ;
PRO_DN_00: ;
LD A,USER_NUM ; USER_NUM - = 1
CPSE A,#0H ;
JPS PRO_DN_01 ;
LD A,#USER_NUM_CON ;
LD USER_NUM,A ;
JPS PRO_DN_02 ;
PRO_DN_01: ;
CPSE A,#1H ;
JPS PRO_DN_02 ;
LD A,#USER_NUM_CON ;
LD USER_NUM,A ;
PRO_DN_02: ;
DECS A ;
LD USER_NUM,A ;
RET ;
;----------------------- ;
PRO_DN_1: ;
CPSE A,#1H ; SEX - = 1
JPS PRO_DN_2 ;
BTST SEX ;
JPS PRO_DN_11 ;
BITR SEX ;
RET ;
PRO_DN_11: ;
BITS SEX ;
RET ;
;------------------------ ;
PRO_DN_2: ; AGE - = 1
CPSE A,#02H ;
JPS PRO_DN_3 ;
;
LD EA,AGE ;
LD WX,#10 ; ( 10 - 100 )
CPSE EA,WX ;
JPS PRO_DN_21 ;
LD EA,#99 ;
JPS PRO_DN_22 ;
PRO_DN_21: ;
DECS EA ;
PRO_DN_22: ;
LD AGE,EA ;
CALL DISP_AGE ;
RET ;
;-----------------------
PRO_DN_3: ; HEIGHT - = 1
BTSF KG_FLAG ;
JPS PRO_DN_33 ;
;------------------------- ;
; UNIT IS LB/ST ;
LD EA,HT_BUF ; HT_BUF < = 3:04 INCH ?
LD WX,#34H ;
SBS WX,EA ;
JPS PRO_DN_31A ;
JPS PRO_DN_31 ;
PRO_DN_31A: ;
LD EA,#72H ; YES.
LD HT_BUF,EA ;
RET ;
PRO_DN_31: ;
LD A,HT_BUF+0 ; NO.
CPSE A,#0H ;
JPS PRO_DN_32 ;
LD A,HT_BUF+1 ;
DECS A ;
NOP ;
LD HT_BUF+1,A ;
LD A,#0BH ;
LD HT_BUF+0,A ;
RET ;
PRO_DN_32: ;
DECS A ;
LD HT_BUF+0,A ;
RET ;
;------------------------- ;
; UNIT IS KG ;
PRO_DN_33: ;
LD EA,HEIGHT ;
LD WX,#100 ; ( 100 - 220 )
CPSE EA,WX ;
JPS PRO_DN_34 ;
LD EA,#220 ;
JPS PRO_DN_35 ;
PRO_DN_34: ;
DECS EA ;
PRO_DN_35: ;
LD HEIGHT,EA ;
RET ;
;**************************************;
;***************************************************************************;
; PROCESS_SET ;
;***************************************************************************;
; FUNCTION: WHEN "SET" KEY PRESSED,PROCESS IT
; OUTPUT: SET_EN,SURE_FLAG ;
PROCESS_SET: ;
LD A,RUN_MODE_REG ;
CPSE A,#SCALE_MODE_CON ; SYS IN SCALE MODE ?
JPS PRO_SET_1 ; NO.
;---------------------------- ;
; HERE SYS ENTER INTO SET MODE.... ;
BTSF FAT_TEST_EN ; FAT_TEST_EN = 1 ?;
JP PRO_SET_21 ; YES.
LD A,#SET_MODE_CON ; NO.
LD RUN_MODE_REG,A ;
BITS SET_EN ; SYS ENTER SET MODULE
BITR SET_OK ; SET_OK = 0 , SET USER INFO START .
LD A,#0H ;
LD INFO_PTR,A ; INIT POINTER,SET_STATE & USER NUM.
LD USER_NUM,A ;
LD SET_STATE,A ;
JP DISP_8888 ;
;---------------------------- ;
;NOW SYS IN SET MODE, PROCESS SET KEY ;
PRO_SET_1: ;
CPSE A,#SET_MODE_CON ; SYS IN SET MODE ?
JPS PRO_SET_2 ; NO.
LD A,USER_NUM ; YES.
CPSE A,#0H ; USER_NUM = 0 ?
JPS PRO_SET_11 ; |
LD A,#01H ; YES
LD USER_NUM,A ; |
RET ; |
PRO_SET_11: ; |
BITS SET_PRESSED ; NO. SET_PRESSED = 1
INCS INFO_PTR ; INFO_PTR + +
LD A,INFO_PTR ; USER_NUM = 4 ?
CPSE A,#04H ; |
RET ; NO. EXIT
BITS SET_OK ; YES. SET_OK = 1
BITS FAT_TEST_EN ;
LD A,#0H ; INFO_PTR RESTORE TO 0
LD INFO_PTR,A ;
CALL DISP_HEIGHT ; YES.
RET ;
;---------------------- ;
PRO_SET_2: ;
CPSE A,#USER_MODE_CON ; SYS IN USER MODE ?
RET ; NO.
PRO_SET_21: ;
BITS SET_EN ; ENTER SET MODE TO MODIFY USER INFO
BITR FAT_TEST_EN ; = 0
BITR SET_OK ; = 0 BEGIN TO MODIFY USER INFO
LD A,#SET_MODE_CON ;
LD RUN_MODE_REG,A ;
LD A,#00H ; 01 --->(MODIFY) 00H
LD INFO_PTR,A ;
LD A,#01H ;
LD SET_STATE,A ; !!! NOTE HERE !!!
LD A,#(16-11) ;
LD FLASH_CNT,A ;
LD A,#00H ;
CALL DISP_8888 ;
CALL SEX_ICON_ON ;
CALL DISP_NUM ;
CALL DISP_AGE ;
CALL DISP_HEIGHT ;
JP LOAD_SETDLY_2S ; SET DLY_TIMER (1S) FOR WAITING FOR SET/UP/DN PRESSED
;**************************************;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -