📄 set.asm
字号:
;PRJ: FAT_SCALE
;MODULE: USER_SET.ASM ;
;FUNCTION: USER SETTING & USER_NUM SELECT
;**************************************;
SET_STATE_CON: EQU 5 ;
;***************************************************************************;
; USER_SET ;
;***************************************************************************;
ORG 500H ;
JPS SET_CASE0 ;------\
JPS SET_CASE1 ; |
JPS SET_CASE2 ; |--- "SET" KEY SET USER INFO
JPS SET_CASE3 ;------/
JPS SET_CASE4 ;------ "USER" KEY SELECT USER
;------------------- ;
USER_SET: ;
BTST SET_EN ; SET_EN = 1 ?
RET ; NO. EXIT
;-------------------- ;
LD L,#SET_STATE_CON ;
LD A,SET_STATE ;
CALL CHK_STATE ; CHECK SET STATE
;-------------------- ;
LD WX,#0 ; YES.
LD A,SET_STATE ;
LD E,#0 ;
ADS EA,EA ;
ADS EA,WX ;
JR @EA ;
;**************************************;
;INCLUDE CASE 0,1,2,3 ;
;----------------------------- ;
; CASE0: ENTER USER/SET/MEM STATE FROM HERE
SET_CASE0: ;
BITS FLASH_DISP_ON ;
BITR SET_FLASH_EN ;
CALL DISP_USER_INFO ;
INCS SET_STATE ;
LD A,#(16-11) ;
LD FLASH_CNT,A ;
JPS LOAD_SETDLY_2S ; SET DLY_TIMER (2S) FOR WAITING FOR SET/UP/DN PRESSED
;**************************************;
;**************************************;
;WAIT FOR "SET/UP/DN" PRESSED ;
SET_CASE1: ;
BTST SET_PRESSED ; SET PRESSED ?
JPS SET_CASE1_1 ; NO.
;---------------------------- ; |
;"SET" KEY PRESSED ; |
BITR SET_PRESSED ; YES. CLR IT
BTSF SET_OK ; & SET_OK ?
JPS SET_CASE1_3 ; YES.
LD A,INFO_PTR ; NO. & INFO_PTR = 1 ?
CPSE A,#01H ;
JPS SET_CASE1_2 ; NO.
BITR WRITE_EEP_EN ; YES. READ INFO FROM EEP ACCORDING TO USER_NUM
CALL RW_USER_INFO ;
JPS SET_CASE1_2 ;
;-------------------------- ;
;"UP/DN" KEY PRESSED (SETTING IS NOT OVER)
SET_CASE1_1: ;
BTST UP_DN_PRESSED ; "UP" OR "DOWN" PRESSED ?
JPS SET_CASE1_4 ; NO.
BITR UP_DN_PRESSED ; YES.CLEAR THIS FLAG
BITS FLASH_DISP_ON ;
SET_CASE1_2: ;
LD A,#0 ; SYS STILL IN CASE 0
LD SET_STATE,A ;
RET ;
;------------------------- ;
; SETTING IS OVER,..... ;
SET_CASE1_3: ; SETTING IS OVER, WRITE INFO TO EEP ......
BITS WRITE_EEP_EN ;
CALL RW_USER_INFO ; WRITE DATA TO 24C01 ACCORDING TO USER_NUM
CALL LOAD_SETDLY_1S ;
INCS SET_STATE ; SET_STATE ++
RET ;
;--------------------- ;
; NO KEY PRESSED..... ;
SET_CASE1_4: ;
BTSF SET_FLASH_EN ; LCD IN FLASH STATUS ?
JPS SET_CASE1_5 ; YES.
INCS SET_DLY+0 ; NO.DELAY ...
RET ;
INCS SET_DLY+1 ;
RET ;
INCS SET_DLY+2 ;
RET ;
CALL LOAD_SETDLY_H1S ; DLY TIME OUT,SET LCD FLASH FREQUENCY(2Hz)
BITS SET_FLASH_EN ; ENABLE LCD FLASH FLAG
BITR FLASH_DISP_ON ;
JP DISP_USER_INFO ;
;--------------------------- ;
; BEGIN TO FLASHING LCD ;
SET_CASE1_5: ;
INCS SET_DLY+0 ;
RET ;
INCS SET_DLY+1 ;
RET ;
INCS SET_DLY+2 ;
RET ;
CALL LOAD_SETDLY_H1S ; LCD FLASH FREQUENCY SET TO 2 Hz
BTST FLASH_DISP_ON ; IF FLASH_DISP_ON = 1 ,LCD ON
JPS SET_CASE1_51 ; OTHERWISE ,LCD OFF
BITR FLASH_DISP_ON ;
JP DISP_USER_INFO ;
SET_CASE1_51: ;
BITS FLASH_DISP_ON ;
INCS FLASH_CNT ; FLASH_CNT FULL ?
JP DISP_USER_INFO ; NO.
LD A,#0 ;
CALL DISP_8888 ;
JPS EXIT_SET_MODE ; YES. EXIT SET MODULE.
;**************************************;
;**************************************;
;CASE2,CASE3: FLASH HEIGHT/AGE/SEX/USER_NO.
; SETTING IS OVER ;
; DISPLAY USER_NUM'S INFO THREE TIMES
SET_CASE2: ;
INCS SET_DLY+0 ;
RET ;
INCS SET_DLY+1 ;
RET ;
INCS SET_DLY+2 ;
RET ;
INCS SET_STATE ;
CALL LOAD_SETDLY_1S ;
;----------------------- ;
LD A,#(16-2) ;
LD FLASH_CNT,A ; AGE/HEIGHT FLASH 2 TIMES
;----------------------- ;
BITS ON_ALLINFO_FLAG ; WHEN COMPLETE SETTING,ONALL_INFO_FLAG = 1
BITR DISP_OVER_FLAG ;
BITS FLASH_DISP_ON ; FLASH_DISP_ON = 1, DISPLAY HEIGHT, = 0 DISPLAY AGE
BITS SET_FLASH_EN ;
JP DISP_USER_INFO ; DISPLAY USER'INFO
;**************************************;
;**************************************;
SET_CASE3: ;
INCS SET_DLY+0 ;
RET ;
INCS SET_DLY+1 ;
RET ;
INCS SET_DLY+2 ;
RET ;
BTSF DISP_OVER_FLAG ; DISP OVER ?
JPS EXIT_SET_MODE ; YES.
CALL LOAD_SETDLY_1S ; NO.
;-------------------- ;
BTST FLASH_DISP_ON ;
JPS SET_CASE3_1 ;
BITR FLASH_DISP_ON ;
CALL DISP_USER_INFO ;
INCS FLASH_CNT ; FLASH_CNT ++ & FULL ?
RET ; NO.
BITS DISP_OVER_FLAG ; YES.
RET ;
SET_CASE3_1: ;
BITS FLASH_DISP_ON ;
JP DISP_USER_INFO ;
EXIT_SET_MODE: ; YES. SCALE RETURN TO NORMAL SCALE STATE
BITR SET_EN ; DISABLE SET MODULE AGAIN
LD A,#SCALE_MODE_CON ;
LD RUN_MODE_REG,A ;
BTSF FAT_TEST_EN ;
CALL DISP_HEIGHT ;
BTSF PWR_ON_NOW ; PWR_ON_NOW ?
RET ; YES.
BITS DP2_EN ; NO.
CALL LD_AUTOFF_CNT ;
JP WT_TO_BCD ;
;**************************************;
;***************************************************************************;
; USER SELECT ;
;***************************************************************************;
; USER SELECT (INCLUDE CASE 4/2/3) ;
; INPUT: [PWR_ON_NOW] ;
; [MAN_ON_SCALE] ;
; OUTPUT: [FAT_TEST_EN] ;
; [USER_NUM] ;
;**************************************;
;**************************************;
SET_CASE4: ;
LD A,#0 ;
CALL DISP_8888 ; CLR LCD
CALL DISP_NUM ; DISPLAY USER NUMBER
BITR WRITE_EEP_EN ; READ DATA FROM 24C01
BITS FAT_TEST_EN ;
CALL RW_USER_INFO ;
CALL DISP_AGE ;
CALL DISP_HEIGHT ;
CALL SEX_ICON_ON ;
LD A,#02H ;
LD SET_STATE,A ;
JPS LOAD_SETDLY_H1S ;
;**************************************;
;**************************************;
LOAD_SETDLY_2S: ;
LD EA,#(256-110) ;
LD SET_DLY+0,EA ;
LD A,#(16-2) ;
LD SET_DLY+2,A ; DELAY_2S
RET ;
;---------------------- ;
LOAD_SETDLY_1S: ;
LD EA,#(256-220) ;
JPS LOAD_SETDLY_COM ;
;---------------------- ;
LOAD_SETDLY_H1S: ;
LD EA,#(256-100) ;
;---------------------- ;
LOAD_SETDLY_COM: ;
LD SET_DLY+0,EA ; DELAY_0.5S
LD A,#(16-1) ;
LD SET_DLY+2,A ;
RET ;
;**************************************;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -