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

📄 lib.asm

📁 给香港公司做的出口欧洲的电子称项目全部源代码 CPU:KS57C2308 RANGE:(0 -150KG)/d = 0.1kg
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;**************************************;
; LOOP_FLASH:                          ;
; FUNCTION: CONTROL LCD FLASHING ...   ;
; INPUT: FLASH_CNT                     ;
LOOP_FLASH:                            ;
        SMB      1                     ;
        BITR     KG_ICON               ;
        BITR     ST_ICON               ;
        BITR     LB_ICON               ;
        BITR     KG_POINT              ;
        BITR     ST_POINT              ;
        SMB      0                     ;
        LD       A,FLASH_CNT           ;
        CPSE     A,#00H                ;
        JPS      LOOP_FLASH_1          ;
        INCS     FLASH_CNT             ; FLASH_CNT ++
        LD       EA,#DN_LINE           ;
        JPS      TIP_DISP              ;
LOOP_FLASH_1:                          ;
        CPSE     A,#01H                ;
        JPS      LOOP_FLASH_2          ;
        INCS     FLASH_CNT             ; NO.  FLASH_CNT + +
        LD       EA,#MD_LINE           ;
        JPS      TIP_DISP              ;
LOOP_FLASH_2:                          ;
        CPSE     A,#02H                ;
        RET                            ;
        LD       A,#00H                ; FLASH_CNT - -
        LD       FLASH_CNT,A           ;
        LD       EA,#UP_LINE           ;
        JPS      TIP_DISP              ;
;**************************************;

;**************************************;
CHK_SENSOR:                            ;
        INCS     CHK_ADC_CNT+0         ;
        RET                            ;
        INCS     CHK_ADC_CNT+1         ; IF CHK_ADC_CNT FULL,  ADC'S WORK IS ABNORMAL
        RET                            ; THEN SYSTEM DISP "ERR5"
CHK_SENSOR_1:                          ;
        JPS      DISP_ERR5             ;
;**************************************;

;**************************************;
CON_BEN_MINH:    EQU     07H           ;
CON_BEN_MINL:    EQU     0D0H          ; 7D0H = 400*5
CON_BEN_MAXH:    EQU     12H           ;
CON_BEN_MAXL:    EQU     0C0H          ; 12C0 = 400*12
;**************************************;
;FUNCTION:                             ;
; CHECK CNT10/CNT21 IN (400*5,--- 400*12) ?
;INPUT: ACC_BUF                        ;
;C = 1: ACC IN RANGE                   ;
;C = 0: ACC OUT OF RANGE               ;
CHK_BENMARK:                           ;
        SCF                            ; C= 0
        LD       HL,#(ACC_BUF+2)       ;
        LD       YZ,#CON_BEN_MINH      ;
        LD       WX,#CON_BEN_MINL      ;
        CALL     COMP_CON              ;
        JPS      CHK_BEN_1             ; ACC_BUF > CON_MIN
        JPS      CHK_BEN_2             ; ACC_BUF < CON_MIN
CHK_BEN_1:                             ;
        SCF                            ; C= 0
        LD       HL,#(ACC_BUF+2)       ;
        LD       YZ,#CON_BEN_MAXH      ;
        LD       WX,#CON_BEN_MAXL      ;
        CALL     COMP_CON              ;
CHK_BEN_2:                             ;
        RCF                            ; ACC_BUF > CON_MAX
        RET                            ; ACC_BUF < CON_MAX
;**************************************;

;***************************************************************************;
;                                DELAY                                      ;
;***************************************************************************;
; DELAY_3MS                            ;
; INPUT : EA                           ;
DELAY_3MS:                             ;
        LD       YZ,EA        ; 2 CYC  ;
DLY_1:  LD       EA,#0FAH     ; 2 CYC  ;
DLY_2:  NOP                  ; 1 CYC   ;
        NOP                  ; 1 CYC   ;
        NOP                  ; 1 CYC   ;
        NOP                  ; 1 CYC   ;
        NOP                  ; 1 CYC   ;
        NOP                  ; 1 CYC   ;
        NOP                  ; 1 CYC   ;
        DECS     EA          ; 2 CYC   ; 12*251
        JPS      DLY_2       ; 3 CYC   ;
        DECS     YZ             ; 2CYC ;     (2+13*253+2)*0.95 ~= 3.0ms
        JPS      DLY_1          ; 3CYC ; EACH CYC IS 0.95 us
        RET                            ;
;**************************************;

;**************************************;
CNT10_DEF_H:     EQU     0CH           ;
CNT10_DEF_L:     EQU     80H           ; 0C80H = 400 * 8
CNT21_DEF_H:     EQU     19H           ;
CNT21_DEF_L:     EQU     00H           ; 1900H = 800 * 8
;**************************************;
;FUNCTION: GET BENCHMARK               ;
;OUTPUT: CNT21,CNT10                   ;
;R: [EEP_NUM]                          ;
;   [EEP_RAM_ADDR]                     ;
;   [TRX_ADDR_BUF]                     ;
;   [AVERAGE]                          ;
GET_BENCHMARK:                         ;
;--------------------------            ;
;UNIT SELECT:                          ;
        BITR     EMB                   ; KG: KG_FLAG = 1
        LD       A,P4                  ; LB: KG_FLAG = 0 & LB_ST_FLAG = 1
        AND      A,#0011B              ; ST: KG_FLAG = 0 & LB_ST_FLAG = 0
        CPSE     A,#0011B              ;
        JPS      GB_1                  ;
        BITS     KG_FLAG               ;
        JPS      GB_2                  ;
GB_1:   BITR     KG_FLAG               ; KG_FLAG = 0.
        BITR     LB_ST_FLAG            ;
        CPSE     A,#0001B              ; IS LB ?
        BITS     LB_ST_FLAG            ; YES.
;----------------------------          ;
;READ JPS& PROCESS IT                  ;
GB_2:   LDB      C,JP0_PIN             ;
        LD       EA,#ADC_DLY_CON1      ;
        BTST     C                     ;
        LD       EA,#ADC_DLY_CON2      ;
        LD       ADC_DLY_BUF,EA        ;
        BITS     EMB                   ;
;----------------------------          ;
;READ DATA FROM 24C01                  ;
        LD       A,#5                  ; READ 24C01
        LD       EEP_NUM,A             ; BYTE NUM: 6
        LD       EA,#00H               ;
        LD       EEP_RAM_ADDR,EA       ; EEP_RAM_ADDR: 00H
        LD       EA,#LAST_WEIGHT       ; BUFFER ADDR: #LAST_WEIGHT
        LD       CPU_RAM_ADDR,EA       ;
        CALL     READ_EEP              ;
;-----------------------------         ;
;ANALYSE CNT10, CNT21 : IN RANGE ?     ;
        LD2B     ACC_BUF,CNT10         ;
        CALL     CHK_BENMARK           ;
        BTST     C                     ; C = 1 ?
        JPS      GB_3                  ; NO.
        LD2B     ACC_BUF,CNT21         ; YES. GO ON CHK CNT21
        LD       HL,#(ACC_BUF+3)       ;
        CALL     DIVTWO                ;
        CALL     CHK_BENMARK           ;
        BTST     C                     ; C = 1 ?
        JPS      GB_3                  ; NO.
;--------------                        ; YES.
;CNTS_PER_G<= CNT10/400                ; 400 = 190H
        LD       EA,#01                ;
        LD       ACC_BUF+2,EA          ;
        LD       EA,#90H               ;
        LD       ACC_BUF+0,EA          ;
        CALL     CLR_BCC_BUF           ;
        LD2B     BCC_BUF,CNT10         ;
        CALL     CW_DIV                ;
        LD       A,CCC_BUF             ;
        LD       CNTS_PER_G,A          ;
        RET                            ;
GB_3:   LD       EA,#CNT10_DEF_H       ;
        LD       CNT10+2,EA            ;
        LD       EA,#CNT10_DEF_L       ;
        LD       CNT10+0,EA            ;
        LD       EA,#CNT21_DEF_H       ;
        LD       CNT21+2,EA            ;
        LD       EA,#CNT21_DEF_L       ;
        LD       CNT21+0,EA            ;
        LD       A,#08H                ;
        LD       CNTS_PER_G,A          ;
        RET                            ;
;**************************************;

;**************************************;
CLR_BCC_BUF:                           ;
        LD       EA,#00                ;
        LD       BCC_BUF+0,EA          ;
        LD       BCC_BUF+2,EA          ;
        LD       BCC_BUF+4,EA          ;
        LD       BCC_BUF+6,EA          ;
        RET                            ;
;**************************************;

;**************************************;
CHK_OVERLOAD:                          ;
;IF WEIGHT > OVERLOAD_CON,DISP "ERR"   ;
        LD       HL,#(CCC_BUF+2)       ;
        LD       YZ,#CON_OVERLOAD_H1   ;
        LD       WX,#CON_OVERLOAD_L1   ;
        BTSF     KG_FLAG               ; UNIT IS KG ?
        JPS      CHKO_1                ; YES.UNIT IS KG.
        LD       YZ,#CON_OVERLOAD_H2   ; NO. UNIT IS LB/STONE
        LD       WX,#CON_OVERLOAD_L2   ;
CHKO_1: CALL     COMP_CON              ; OVERLOAD ?
        JPS      DISP_ERR              ; YES.
        RET                            ; NO.
;**************************************;

;***************************************************************************;
;                         PUSH DATA AVERAGE                                 ;
;***************************************************************************;
; FUNCTION: PUSH SCALE_CNT TO DATA_BUF & AVERAGE FOUR DATA
; INPUT: SCALE_CNT                     ;
; OUTPUT: BCC_BUF                      ;
PUSH_DATA_AVERAGE:                     ;
;-----------------------------         ;
        SMB      1                     ;
        LD       WX,#(DATA_BUF+08)     ;
        LD       HL,#(DATA_BUF+12)     ;
        LD       Y,#02H                ;
PD_1:   LD       Z,#03H                ;
PD_2:   PUSH     HL                    ;
        LD       EA,WX                 ;
        LD       HL,EA                 ;
        LD       A,@HL                 ;
        POP      HL                    ;
        LD       @HL,A                 ;
        INCS     WX                    ;
        INCS     HL                    ;
        DECS     Z                     ;
        JPS      PD_2                  ;
;------------------                    ;
        LD       EA,#08H               ;
        SBS      WX,EA                 ;
        SBS      HL,EA                 ;
        DECS     Y                     ;
        JPS      PD_1                  ;
;------------------                    ;
        SMB      0                     ;
        BTST     CHK_BTCNT_FLAG        ; CHK_BTCNT_FLAG = 1 ?
        JPS      PD_4                  ; NO.
        LD       EA,SCALE_CNT+0        ; YES.
        LD       WX,#40H               ;
        SBS      EA,WX                 ; [SCALE_CNT+0] > 40H ?
        JPS      PD_3                  ; YES.
        JPS      PD_4                  ; NO.
PD_3:   LD       EA,#02H               ;
        LD       SCALE_CNT,EA          ;
;--------------------                  ;
;PUSH DATA TO DTA BUFFER               ;
PD_4:   LD       EA,SCALE_CNT+0        ;
        SMB      1                     ;
        LD       DATA_BUF+0,EA         ;
        SMB      0                     ;
        LD       EA,SCALE_CNT+2        ;
        SMB      1                     ;
        LD       DATA_BUF+2,EA         ;
;-----------------------------         ;
;DATA_AVERAGE:                         ;
        LD       EA,#00                ;
        LD       B1_BCC_BUF+0,EA       ;
        LD       B1_BCC_BUF+2,EA       ;
        LD       B1_BCC_BUF+4,EA       ;
        LD       B1_BCC_BUF+6,EA       ;
        LD       WX,#(DATA_BUF+0)      ;
        LD       HL,#(B1_BCC_BUF+0)    ;
DA_1:   LD       Z,#03                 ;
DA_2:   CALL     ADD2B3B               ;
        LD       EA,#(256-05)          ;
        ADS      HL,EA                 ; RESTORE HL TO THE FIRST ADDRESS
        NOP                            ;
        DECS     Z                     ;
        JPS      DA_2                  ;
        LD       X,#01                 ;
DA_3:   LD       W,#05H                ;
        LD       HL,#(B1_BCC_BUF+5)    ;
        RCF                            ;
DA_4:   LD       A,@HL                 ;
        RRC      A                     ;
        LD       @HL,A                 ;
        DECS     HL                    ;
        DECS     W                     ;
        JPS      DA_4                  ;
        DECS     X                     ;
        JPS      DA_3                  ;
        LD       EA,B1_BCC_BUF+0       ;
        SMB      0                     ;
        LD       BCC_BUF+0,EA          ;
        SMB      1                     ;
        LD       EA,B1_BCC_BUF+2       ;
        SMB      0                     ;
        LD       BCC_BUF+2,EA          ;
        RET                            ;
;**************************************;

⌨️ 快捷键说明

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