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

📄 lib.asm

📁 给香港公司做的出口欧洲的电子称项目全部源代码 CPU:KS57C2308 RANGE:(0 -150KG)/d = 0.1kg
💻 ASM
📖 第 1 页 / 共 5 页
字号:
         LD       @HL,A                ;
         DECS     HL                   ;
         DECS     Y                    ;
         JPS      DIVTWO_1             ;
         RET                           ;
;**************************************;

;**************************************;
;4NIBS COMPARE WITH CONSTANT           ;
; (HL) >= #CON: RET                    ;
; (HL) <  #CON: SRET                   ;
;       LD      HL,#(ABS_ERR+2)        ;
;       LD      WX,#CON_L              ;
;       LD      YZ,#CON_H              ;
COMP_CON:                              ;
        LD       EA,@HL                ; (HL) > #CON ?
        CPSE     EA,YZ                 ;
        JPS      COMP_CON_2            ;
COMP_CON_1:                            ;
        DECS     HL                    ;
        DECS     HL                    ;
        LD       EA,@HL                ;
        SBS      EA,WX                 ;
        RET                            ;
        SRET                           ;
COMP_CON_2:                            ;
        SBS      EA,YZ                 ;
        RET                            ;
        SRET                           ;
;**************************************;

;***************************************************************************;
;                              RW_USER_INFO                                 ;
;***************************************************************************;
;READ OR WRITE USER INFO TO EEP        ;
;INPUT: USER_NUM, WRITE_EEP_EN         ;
; WRITE_EEP_EN = 0 , READ EEP          ;
; WRITE_EEP_EN = 1 , WRITE EEP         ;
;-----------------------------         ;
RW_USER_INFO:                          ;
        LD       A,USER_NUM            ;
        DECS     A                     ;
        LD       E,#0                  ;
        ADS      EA,EA                 ; 2A
        ADS      EA,EA                 ; 4A
        ADS      EA,EA                 ; 8A
        RCF                            ;
        LD       WX,#10H               ;
        ADC      EA,WX                 ; EA <= EA + 10H
;-----------------------------         ;
        LD       EEP_RAM_ADDR,EA       ; EEP_RAM_ADDR <= EA
        LD       A,#1                  ;
        LD       EEP_NUM,A             ; BYTE NUM: 2
        LD       EA,#BUFFER_TRX        ;
        LD       CPU_RAM_ADDR,EA       ;
;-----------------------------         ;
        BTST     WRITE_EEP_EN          ; WRITE TO 24C01 ?
        JPS      RUI_2                 ; NO.
        BTSF     KG_FLAG               ; YES. & UNIT IS KG ?
        JPS      RUI_1                 ;        YES.
        CALL     INCH_TO_CM            ;        NO. INCH CONVERT TO CM
RUI_1:  BITS     (AGE+1).3             ;
        BTST     SEX                   ; (AGE+1).3 <= SEX FOR SAVE TO EEP
        BITR     (AGE+1).3             ;
        CALL     WRITE_EEP             ;
        BITR     (AGE+1).3             ; RESTOR AGE
        RET                            ;
RUI_2:  CALL     READ_EEP              ;
        BITS     SEX                   ; SEX <= (AGE+1).3
        BTST     (AGE+1).3             ;
        BITR     SEX                   ;
        BITR     (AGE+1).3             ; RESTORE AGE
        CALL     CHK_USER_INFO         ; IF AGE & HEIGHT OUT OF RANGE,DISPLAY "ERR1"
        BTSF     KG_FLAG               ; UNIT IS KG ?
        RET                            ; YES. EXIT
        JPS      CM_TO_INCH            ; NO. CM CONVERT TO INCH
;**************************************;

;***************************************************************************;
;                              INITIAL USER INFO                            ;
;***************************************************************************;
;CONSTANT DEFINE                       ;
HEIGHT_CON:       EQU    175           ;
AGE_CON:          EQU    30            ;
;---------------------------           ;
INIT_USER_INFO:                        ;
        BITS     SEX                   ;
        LD       EA,#HEIGHT_CON        ;
        LD       HEIGHT,EA             ;
        LD       EA,#AGE_CON           ;
        LD       AGE,EA                ;
        LD       A,#01                 ;
        LD       USER_NUM,A            ;
        BITS     WRITE_EEP_EN          ;
IUI_1:  CALL     RW_USER_INFO          ;
        INCS     USER_NUM              ;
        LD       A,USER_NUM            ;
        CPSE     A,#USER_NUM_CON       ;
        JPS      IUI_1                 ;
        RET                            ;
;**************************************;

;***************************************************************************;
;                                 ZERO_TRACE                                ;
;***************************************************************************;
ZERO_TRACE:                            ;
        LD       HL,#(WT_BCD+2)        ;
;---------------------                 ;
;UNIT IS KG                            ;
        BTST     KG_FLAG               ;
        JPS      ZT_1                  ;
        LD       WX,#14H               ;
        LD       YZ,#00H               ;
        CALL     COMP_CON              ;
        RET                            ;
        JPS      ZT_12                 ;
;---------------------                 ;
;UNIT IS LB                            ;
ZT_1:   BTST     LB_ST_FLAG            ;
        JPS      ZT_11                 ;
        LD       WX,#30H               ;
        LD       YZ,#00H               ;
        CALL     COMP_CON              ;
        RET                            ;
        JPS      ZT_12                 ;
;---------------------                 ;
;UNIT IS STONE                         ;
ZT_11:  LD       WX,#03H               ; WEIGHT > 1.4KG/3LB/0:03 LB ?
        LD       YZ,#00H               ;
        CALL     COMP_CON              ;
        RET                            ; YES.
;--------------------------------------;
ZT_12:  LD       EA,#00H               ;
        LD       WT_BCD+0,EA           ;
        LD       WT_BCD+2,EA           ;
        LD       FRACTION,EA           ;
;-----------------------               ;
;START TO ZERO_TRACE,......            ;
ZT_2:   BTST     STATIC_FLAG           ; STATIC_FLAG = 1 ?
        JPS      ZT_4                  ; NO.  EXIT
        LD       HL,#ABS_ERR           ; YES.
        LD       YZ,#MID_POINT         ;
        LD       WX,#CNT0              ;
        CALL     SUB2BB                ; ABS_ERR <= MID_POINT - CNT0
        JPS      ZT_3                  ; MID_POINT >= CNT0
        LD       HL,#ABS_ERR           ; MID_POINT < CNT0
        CALL     ABS2BB                ;
ZT_3:   RCF                            ;
        LD       E,#0                  ;
        LD       A,CNTS_PER_G          ;
        LD       WX,EA                 ;
        ADC      WX,EA                 ; WX <= 3d
        LD       YZ,#00H               ;
        LD       HL,#(ABS_ERR+2)       ; ABS_ERR >= 3d ?
        CALL     COMP_CON              ;
        JPS      ZT_4                  ; YES. EXIT
        LD       E,#0H                 ; NO.
        LD       A,CNTS_PER_G          ;
        LD       WX,EA                 ; WX <= 1d
        LD       YZ,#00H               ;
        LD       HL,#(ABS_ERR+2)       ; ABS_ERR >= 1d ?
        CALL     COMP_CON              ;
        JPS      ZT_31                 ; YES.
        JPS      ZT_32                 ; NO.
ZT_31:  INCS     ZERO_TRACE_CNT        ; YES.ZERO_TRACE_CNT ++
        RET                            ;
ZT_32:  LD2B     CNT0,MID_POINT        ; NO.
ZT_4:   LD       A,#(16-2)             ;
        LD       ZERO_TRACE_CNT,A      ;
        RET                            ;
;**************************************;

;***************************************************************************;
;                             FOOT-INCH <=> CM                              ;
;***************************************************************************;

;*************************************;
; CM_TO_INCH:                         ;
; FUNCTION: UNIT CONVERT              ;
; INPUT: HEIGHT                       ;
; OUTPUT: HT_BUF                      ;
; FOOT = [HT*246/7499]                ;( 7499 = 1D4BH )
; INCH = [RM/625]                     ;( 618 = 26AH)
; [HT_BUF+1] <= FOOT                  ;
; [HT_BUF+0] <= INCH                  ;
;*************************************;
CM_TO_INCH:                           ;
        LD       EA,HEIGHT            ;
        LD       ACC_BUF+0,EA         ;
        LD       EA,#00               ;
        LD       ACC_BUF+2,EA         ;
        LD       CCC_BUF+2,EA         ;
        LD       EA,#246              ;
        LD       CCC_BUF+0,EA         ;
        CALL     CW_MUL               ;
        LD       EA,#4BH              ;
        LD       ACC_BUF+0,EA         ;
        LD       EA,#1DH              ;
        LD       ACC_BUF+2,EA         ;
        CALL     CW_DIV               ;
        LD       A,CCC_BUF+0          ;
        LD       HT_BUF+1,A           ; GET FOOT
        LD       EA,#00H              ;
        LD       BCC_BUF+4,EA         ;
        LD       BCC_BUF+6,EA         ;
        LD2B     BCC_BUF+0,ABS_ERR+0  ;
        LD       EA,#67H              ;
        LD       ACC_BUF+0,EA         ;
        LD       EA,#02H              ; 267H
        LD       ACC_BUF+2,EA         ;
        CALL     CW_DIV               ;
;----------------------               ;
;CHK ABS_ERR >= 267/2 ?  IF YES. BIT_TEMP = 1, ELSE: BIT_TEMP= 0
        BITR     BIT_TEMP             ;
        LD       HL,#(ABS_ERR+2)      ; ABS_ERR >= #133H ?
        LD       WX,#33H              ;
        LD       YZ,#01H              ;
        CALL     COMP_CON             ;
        BITS     BIT_TEMP             ; YES.
        BTSF     BIT_TEMP             ; BIT_TEMP = 1 ?
        INCS     CCC_BUF              ;
        NOP                           ;
;----------------------               ;
        LD       A,CCC_BUF+0          ;
        LD       HT_BUF+0,A           ; GET INCH
        CPSE     A,#0CH               ; A = 0CH ?
        JPS      CM2INCH_1            ; NO.
        LD       A,#0                 ; YES.
        LD       HT_BUF+0,A           ;
        INCS     HT_BUF+1             ;
        NOP                           ;
CM2INCH_1:                            ;
        LD       EA,HT_BUF            ;
        SMB      1                    ;
        LD       HT_BUF_BAK,EA        ;
        SMB      0                    ;
        RET                           ;
;*************************************;

;*************************************;
; INCH_TO_CM:                         ;
; FUNCTION: UNIT CONVERT              ;
; INPUT:  HT_BUF                      ;
; OUTPUT: HEIGHT                      ;
; [HT_BUF+1]: FOOT                    ;
; [HT_BUF]:   INCH                    ;
; HEIGHT <= CM                        ;
; CM<=(12*FOOT +INCH)*254/100         ;
;*************************************;
INCH_TO_CM:                           ;
        LD       EA,HT_BUF            ;
        LD       WX,EA                ;
        SMB      1                    ;
        LD       EA,HT_BUF_BAK        ;
        SMB      0                    ;
        CPSE     EA,WX                ; HT_BUF = HT_BUF_BAK ?
        JPS      INCH2CM_1            ; NO. BEGIN TO CONVERT
        RET                           ; YES. OLD HEIGHT STILL VALID.
INCH2CM_1:                            ;
        LD       A,HT_BUF+1           ;
        LD       E,#0                 ;
        RCF                           ;
        ADC      EA,EA                ;
        ADC      EA,EA                ; 4 * HT_BUF
        LD       WX,EA                ;
        ADC      EA,EA                ; 8 * HT_BUF
        ADC      WX,EA                ; WX <= 12 * HT_BUF
        LD       A,HT_BUF+0           ;
        LD       E,#0                 ;
        ADC      EA,WX                ; EA <= WX + INCH
        LD       ACC_BUF+0,EA         ;
        LD       EA,#00               ;
        LD       ACC_BUF+2,EA         ;
        LD       CCC_BUF+2,EA         ;
        LD       EA,#254              ;
        LD       CCC_BUF+0,EA         ;
        CALL     CW_MUL               ;
        LD       EA,#100              ;
        LD       ACC_BUF+0,EA         ;
        LD       EA,#00H              ;
        LD       ACC_BUF+2,EA         ;
        CALL     CW_DIV               ;
        LD       EA,CCC_BUF+0         ;
        LD       HEIGHT,EA            ;
        RET                           ;
;*************************************;

⌨️ 快捷键说明

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