⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 set.asm

📁 给香港公司做的出口欧洲的电子称项目全部源代码 CPU:KS57C2308 RANGE:(0 -150KG)/d = 0.1kg
💻 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 + -