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

📄 data_pro2.asm

📁 给香港公司做的出口欧洲的电子称项目全部源代码 CPU:KS57C2308 RANGE:(0 -150KG)/d = 0.1kg
💻 ASM
字号:
;PRJ: FAT SCALE                        ;
;MODULE: DATA_PROCESS2                 ;
;FUNCTION: DATA PROCESS                ;
;**************************************;
DP_STATE_CON     EQU      06           ;
;**************************************;
         ORG      900H                 ;
        JPS      DP_CASE0              ;
        JPS      DP_CASE1              ;
        JPS      DP_CASE2              ;
        JPS      DP_CASE3              ;
        JPS      DP_CASE4              ;
        JPS      DP_CASE5              ;
DATA_PROCESS2:                         ;
        BTST     DP2_EN                ;
        RET                            ;
;---------------------                 ;
        LD       L,#DP_STATE_CON       ;
        LD       A,DP_STATE            ;
        CALL     CHK_STATE             ; CHECK DP STATE
;---------------------                 ;
        LD       WX,#0H                ;
        LD       A,DP_STATE            ;
        LD       E,#0H                 ;
        ADS      EA,EA                 ;
        ADS      EA,WX                 ;
        JR       @EA                   ;
;**************************************;

;**************************************;
DP_CASE0:                              ;
        BTSF     SET_EN                ;
        JPS      DP_CASE0_1            ;
        SMB      1                     ;
        INCS     AUTO_OFF_CNT+0        ;
        JPS      DP_CASE0_1            ;
        INCS     AUTO_OFF_CNT+1        ;
        JPS      DP_CASE0_1            ;
        INCS     AUTO_OFF_CNT+2        ;
        JPS      DP_CASE0_1            ;
        SMB      0                     ;
        JP       TURN_OFF_PWR          ;
DP_CASE0_1:                            ;
        SMB      0                     ;
        BTSF     MAN_ON_SCALE          ; MAN ON SCALE ?
        JPS      DP_CASE0_2            ; YES.
DP_CASE0_11:                           ;
        BTST     UPDATE_LCD_ON         ; NO.& UPDATE_LCD_ON = 1 ?
        RET                            ;      NO.
        BITR     UPDATE_LCD_ON         ;      YES. CLR IT.
        BTST     SET_EN                ; SET MODULE ENABLE ?
        JPS      WT_TO_BCD             ; NO. DISPLAY WEIGHT
        RET                            ; YES.DON'T DISPLAY WEIGHT
;--------------------------            ;
DP_CASE0_2:                            ;
        BITR     SET_EN                ;
        BTST     FAT_TEST_EN           ; FAT_TEST_EN = 1 ?
        JPS      DP_CASE0_3            ; NO.
;        CALL     DISP_HEIGHT           ; YES.
;        CALL     DISP_AGE              ;
;        CALL     SEX_ICON_ON           ;
        JPS      DP_CASE0_4            ;
DP_CASE0_3:                            ;
        LD       A,#0                  ;
        CALL     DISP_8888             ; CLR LCD
;        CALL     DIGIT789_OFF          ;
;        CALL     DIGIT_AB_OFF          ;
;        CALL     SEX_ICON_OFF          ;
;        SMB      1                     ;
;        BITR     HEIGHT_ICON           ;
;        BITR     AGE_ICON              ;
;        BITR     INCH_ICON             ;
;        BITR     CM_ICON               ;
;        SMB      0                     ;
DP_CASE0_4:                            ;
        BTST     POSITIVE_FLAG         ; IS "- "
        JP       DISP_ERR              ; YES IF POSITIVE FLAG = 0, DISP "E  ".
        LD       A,#SCALE_MODE_CON     ; NO.
        LD       RUN_MODE_REG,A        ;
        LD       A,#0H                 ; FOR FLASH LINE ......
        LD       FLASH_CNT,A           ;
        CALL     UPDN_DIGIT_OFF        ;
        CALL     LOOP_FLASH            ;
        LD       EA,#(256-50)          ;
        LD       SCALE_DLY,EA          ;
        LD       EA,#(256-65)          ;
        LD       DP_DLY,EA             ;
        INCS     DP_STATE              ; CAL_STATE + +
        RET                            ;
;**************************************;

;**************************************;
;DP_CASE1: BEGIN TO FLASH LINE ....    ;
DP_CASE1:                              ;
        BTST     MAN_ON_SCALE          ; MAN ON SCALE ?
        JPS      RETURN_TO_CASE0       ; NO.
        BITR     KEYSCAN_EN            ; YES. DISABLE KEYSCAN
        BTSF     SCALE_OK              ; SCALE_OK ?
        JPS      DP_CASE1_1            ; YES.
        INCS     DP_DLY+0              ; NO.
        RET                            ;
        INCS     DP_DLY+1              ;
        RET                            ;
        LD       EA,#(256-65)          ;
        LD       DP_DLY,EA             ;
        CALL     LOOP_FLASH            ;
        INCS     SCALE_DLY+0           ;
        RET                            ;
        INCS     SCALE_DLY+1           ;
        RET                            ;
        JP       TURN_OFF_PWR          ;
;-------------------                   ;
;SCALE IS OK .....                     ;
DP_CASE1_1:                            ; SCALE IS OK
        BITR     SCALE_OK              ;
        LD       EA,#(256-200)         ;
        LD       DP_DLY,EA             ;
        LD       A,#(16-3)             ;
        LD       DP_DLY+2,A            ;
        INCS     DP_STATE              ; DP_STATE++
        BITR     CAL_WT_EN             ; CLR THIS BIT
        CALL     COMP_WEIGHT           ; COMPARE WEIGHT WITH LAST WEIGHT
        JPS      WT_TO_BCD             ;
;**************************************;

;**************************************;
;DP_CASE2: DELAY 2S FOR DISPLAY FIANAL WEIGHT VALUE ...
DP_CASE2:                              ;
        INCS     DP_DLY+0              ;
        RET                            ;
        INCS     DP_DLY+1              ;
        RET                            ;
        INCS     DP_DLY+2              ;
        RET                            ;
        INCS     DP_STATE              ; DP_STATE ++
        BTST     UPDATE_LAST_WT        ; UPDATE LAST WEIGHT ?
        RET                            ; NO.
;WRITE LAST_WEIGHT TO 24C01            ;
WR_LAST_WEIGHT:                        ;
        LD       A,#01H                ; YES.
        LD       EEP_NUM,A             ; BYTE NUM: 2
        LD       EA,#00H               ;
        LD       EEP_RAM_ADDR,EA       ; EEP_RAM_ADDR: 04H
        LD       EA,#LAST_WEIGHT       ;
        LD       CPU_RAM_ADDR,EA       ;
        JPS      WRITE_EEP             ; WRITE LASTEST WEIGHT TO 24C01
;**************************************;

;**************************************;
;DP_CASE3: CHK TAPE ON PIN,IF TAPE ON IS HIGH, RETURN TO CASE 0
;          OTHERWISE,FLASH THE WEIGHT 5 TIMES...
DP_CASE3:                              ;
        BTST     MAN_ON_SCALE          ; MAN ON SCALE ?
        JPS      RETURN_TO_CASE0       ; NO.
; IF FATA_TEST_EN = 1 TEST FAT RATE    ;
DP_CASE3_1:                            ;
        BTSF     FAT_TEST_EN           ; YES. ENABLE TEST FAT ?
        JP       INIT_FAT_TEST         ;      YES. INITIAL FAT_TEST MODULE
        LD       A,#(16-4)             ;      NO.  FLASH 4 TIMES THEN PWR OFF
        LD       FLASH_CNT,A           ;
        BITS     FLASH_DISP_ON         ;
        INCS     DP_STATE              ;
        RET                            ;
;**************************************;

;**************************************;
;CASE4: FLASH SCALE RESULT             ;
DP_CASE4:                              ;
        INCS     DP_STATE              ; DP_STATE ++
        LD       EA,#(256-150)         ;
        LD       DP_DLY,EA             ;
;--------------------                  ;
        BTST     MAN_ON_SCALE          ; MAN ON SCALE ?
        JPS      RETURN_TO_CASE0       ; NO.
DP_CASE4_1:                            ;
        BTST     FLASH_DISP_ON         ; YES. & FLASH ON ?
        JPS      DP_CASE4_2            ;        |
        BITR     FLASH_DISP_ON         ;        YES. DISPLAY WEIGHT
        LD2B     BCC_BUF,WT_BCD        ;        |
        JP       DISP_WEIGHT           ;        |
DP_CASE4_2:                            ;        |
        LD       A,#0H                 ;        NO.
        CALL     DISP_8888             ;
        BITS     FLASH_DISP_ON         ;
        INCS     FLASH_CNT             ;  FLASH_CNT FULL ?
        RET                            ;  NO.
        LD2B     BCC_BUF,WT_BCD        ;
        CALL     DISP_WEIGHT           ;
        LD       EA,#0FFH              ;
        CALL     DELAY_3MS             ;
        LD       EA,#0FFH              ;
        CALL     DELAY_3MS             ;
        LD       EA,#0FFH              ;
        CALL     DELAY_3MS             ;
        JP       TURN_OFF_PWR          ;  YES.
;**************************************;

;**************************************;
; DP_CASE5: DELAY 0.5S FOR FLASH LCD   ;
DP_CASE5:                              ;
        BTST     MAN_ON_SCALE          ; MAN ON SCALE ?
        JPS      RETURN_TO_CASE0       ; NO.
DP_CASE5_1:                            ; YES.
        INCS     DP_DLY+0              ;
        RET                            ;
        INCS     DP_DLY+1              ;
        RET                            ;
        LD       A,#04H                ;
        LD       DP_STATE,A            ;
        RET                            ;
;**************************************;

;**************************************;
RETURN_TO_CASE0:                       ;
        LD       A,#0H                 ;
        LD       DP_STATE,A            ;
        BITS     CAL_WT_EN             ;
        CALL     INIT_KB               ;
LD_AUTOFF_CNT:                         ;
        SMB      1                     ;
        LD       EA,#00H               ;
        LD       AUTO_OFF_CNT+0,EA     ;
        LD       AUTO_OFF_CNT+2,EA     ; RELOAD AUTO_OFF_CNT
        SMB      0                     ;
        RET                            ;
;**************************************;

;**************************************;
; COMPARE WEIGHT WITH LAST WEIGHT      ;
COMP_WEIGHT:                           ;
        SMB      15                    ;
        LDB      C,JP1_PIN             ;
        SMB      0                     ;
        BTST     C                     ; JP1 CONNECTED ?
        RET                            ; YES.
        LD       HL,#ABS_ERR           ; NO.
        LD       YZ,#WEIGHT            ;
        LD       WX,#LAST_WEIGHT       ;
        CALL     SUB2BB                ; ABS_ERR = |LAST_WEIGHT - WEIGHT|
        JPS      COMP_WT1              ;
        LD       HL,#ABS_ERR           ;
        CALL     ABS2BB                ; ABS_ERR<= 1+ /ABS_ERR
COMP_WT1:                              ;
        LD       WX,#24                ;
        BTST     KG_FLAG               ; UNIT IS KG ?
        LD       WX,#54                ; NO.
        LD       HL,#(ABS_ERR+2)       ; YES.
        LD       YZ,#00                ;
        CALL     COMP_CON              ; COMPARE ABS_ERR WITH CONSTANT
        JPS      COMP_WT2              ; ABS_ERR >= 0.5KG
        LD2B     WEIGHT,LAST_WEIGHT    ;
        BITR     UPDATE_LAST_WT        ;
        RET                            ;
COMP_WT2:                              ;
        LD2B     LAST_WEIGHT,WEIGHT    ;
        BITS     UPDATE_LAST_WT        ;
        RET                            ;
;**************************************;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -