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

📄 lib.asm

📁 给香港公司做的出口欧洲的电子称项目全部源代码 CPU:KS57C2308 RANGE:(0 -150KG)/d = 0.1kg
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        DECS     WX                    ;        WX + +
        INCS     Z                     ; Z - -
        JPS      PART3_1               ;
        JPS      PART3_12              ;
PART3_11:                              ;
        SBS      A,@HL                 ; [WX] >= [HL] ? ( SUM1 > SUM2 ?)
        JPS      PART3_13              ; YES.
PART3_12:                              ;
        JPS      DISP_ERR              ; NO. DISPLAY ERR
PART3_13:                              ;
;---------------                       ;
        SMB      1                     ;
        LD       EA,SUM2+0             ;
        SMB      0                     ;
        LD       BCC_BUF+0,EA          ;
;----------------                      ;
        SMB      1                     ;
        LD       EA,SUM2+2             ;
        SMB      0                     ;
        LD       BCC_BUF+2,EA          ;
;----------------                      ;
        SMB      1                     ;
        LD       EA,SUM2+4             ;
        SMB      0                     ;
        LD       BCC_BUF+4,EA          ;
;----------------                      ;
        SMB      1                     ;
        LD       EA,SUM2+6             ;
        SMB      0                     ;
        LD       BCC_BUF+6,EA          ; BCC_BUF <= SUM2
;----------------                      ;
        LD       WX,#(SUM1+0)          ;
        CALL     SUM_SUB               ; BCC_BUF <= SUM1 - BCC_BUF
        LD       EA,#FAT_G_CONL        ;
        LD       ACC_BUF+0,EA          ;
        LD       EA,#FAT_G_CONH        ; ACC_BUF <= 20000
        LD       ACC_BUF+2,EA          ;       CCC_BUF<= (SUM1- SUM2)/20000
        CALL     CW_DIV                ;       .... CCC_BUF IS LMB (0.1KG)
        LD       EA,#0E8H              ;
        LD       ACC_BUF+0,EA          ;
        LD       EA,#03H               ;
        LD       ACC_BUF+2,EA          ;       ACC_BUF<=1000
        CALL     CW_MUL                ;       BCC_BUF <= LMB * 1000
        LD2B     ACC_BUF,WEIGHT        ;       ACC_BUF <= WEIGHT
        CALL     CW_DIV                ; CCC<=1000*LMB/WEIGHT
        LD       HL,#(CCC_BUF+2)       ;
        LD       WX,#0E8H              ;
        LD       YZ,#03H               ;
        CALL     COMP_CON              ;
        JPS      DISP_ERR              ;
        LD       HL,#(CCC_BUF+2)       ;  <990
        LD       WX,#0F4H              ;
        LD       YZ,#01H               ;
        CALL     COMP_CON              ;
        JPS      PART3_21              ; > 500
        JPS      DISP_ERR              ;
PART3_21:                              ;
        RCF                            ;
        LD       EA,CCC_BUF+0          ;
        LD       HL,EA                 ;
        LD       EA,#0E8H              ;
        SBC      EA,HL                 ;
        LD       CCC_BUF+0,EA          ;
        LD       EA,CCC_BUF+2          ;
        LD       HL,EA                 ;
        LD       EA,#03H               ;
        SBC      EA,HL                 ;
        LD       CCC_BUF+2,EA          ; CCC<=1000 - CCC
;---------------------                 ;
        CALL     HEX_BCD               ; BCC_BUF <--- CCC_BUF
        LD2B     FAT_RATE,BCC_BUF      ; FAT_RATE <= BCC_BUF
        RET                            ;
;**************************************;

;**************************************;
;SUM <= SUM + BCC_BUF                  ;
;INPUT: LD       HL,#(SUM+0)           ;
SUM_BCC:LD       WX,#(BCC_BUF+0)       ;
        RCF                            ;
        LD       Y,#(16-8)             ;
SUM_BCC_1:                             ;
        SMB      0                     ;
        LD       A,@WX                 ;
        SMB      1                     ;
        ADC      A,@HL                 ;
        LD       @HL,A                 ;
        INCS     HL                    ;
        INCS     WX                    ;
        INCS     Y                     ;
        JPS      SUM_BCC_1             ;
        SMB      0                     ;
        RET                            ;
;**************************************;

;**************************************;
;BCC_BUF <= SUM1 - BCC_BUF             ;
;INPUT: LD       WX,#(SUM1+0)          ;
SUM_SUB:LD       HL,#(BCC_BUF+0)       ;
        RCF                            ;
        LD       Y,#(16-8)             ;
SUM_SUB_1:                             ;
        PUSH     HL                    ;
        LD       EA,WX                 ;
        LD       HL,EA                 ;
        SMB      1                     ;
        LD       A,@HL                 ;
        SMB      0                     ;
        POP      HL                    ;
        SBC      A,@HL                 ; A <= A - @HL
        LD       @HL,A                 ;
        INCS     HL                    ;
        INCS     WX                    ;
        INCS     Y                     ;
        JPS      SUM_SUB_1             ;
        RET                            ;
;**************************************;

;**************************************;
;FUNCTION: USE TO CLR SUM1 AND SUM2    ;
; INPUT: LD     HL,#(SUM+0)            ;
CLR_SUM:                               ;
        LD       Y,#(16-8)             ;
CLR_SUM_1:                             ;
        LD       A,#0                  ;
        SMB      1                     ;
        LD       @HL,A                 ;
        SMB      0                     ;
        INCS     HL                    ;
        INCS     Y                     ;
        JPS      CLR_SUM_1             ;
        RET                            ;
;**************************************;

;**************************************;
;INPUT   L, A                          ;
;IF A > = L, DISP ERR5.                ;
CHK_STATE:                             ;
;      LD      L,#DP_STATE_CON         ;
;      LD      A,DP_STATE              ;
       LD      E,#0                    ;
       LD      H,#0                    ;
       SBS     EA,HL                   ; EA >= HL ?
       JP      DISP_ERR5               ; YES. STATE OUT OF RANGE
       RET                             ; NO.  STATE IN RANGE
;**************************************;
;*******************************************************;
;              CALCULATE WATER_RATE                     ;
;*******************************************************;
;    WATER=0.5*HEIGHT-0.36*WEIGHT-6*S+0.001*R-AGE/10
;--------------------------------------------------------
PARA_A_H:       EQU             01H     ; 
PARA_A_L:       EQU            0F4H     ; A=500
PARA_B_H:       EQU             00H     ; 
PARA_B_L:       EQU             24H     ; B=36
PARA_C_H:       EQU             17H     ;
PARA_C_L:       EQU             70H     ; C=6000
PARA_D_H:       EQU             02H     ;
PARA_D_L:       EQU             58H     ; D=600
PARA_E_H:       EQU             00H     ;    
PARA_E_L:       EQU             64H     ; E=100
PARA_F_H:       EQU             00H     ;
PARA_F_L:       EQU             64H     ; F=100
;---------------------------------------;
CAL_WATER_RATE:
        SMB     0                       ;
        LD      EA,HEIGHT               ;
        LD      ACC_BUF+0,EA            ;
        LD      EA,#00                  ;
        LD      ACC_BUF+2,EA            ;
        LD      BCC_BUF+0,EA            ;
        LD      BCC_BUF+2,EA            ;
        LD      BCC_BUF+4,EA            ;
        LD      BCC_BUF+6,EA            ;
        LD      EA,#PARA_A_L            ;
        LD      CCC_BUF+0,EA            ;
        LD      EA,#PARA_A_H            ;
        LD      CCC_BUF+2,EA            ;
        CALL    CW_MUL                  ;  TEMP=50*HEIGHT==>BCC
        LD      EA,BCC_BUF+0            ;
        LD      ABS_ERR+0,EA            ;
        LD      EA,BCC_BUF+2            ;
        LD      ABS_ERR+2,EA            ;
        LD      EA,BCC_BUF+4            ;
        LD      ABS_ERR+4,EA            ;  BCC==>ABS_ERR  
        LD      EA,#00                  ;
        LD      BCC_BUF+0,EA            ;
        LD      BCC_BUF+2,EA            ;
        LD      BCC_BUF+4,EA            ;
        LD      BCC_BUF+6,EA            ;
        LD      EA,#PARA_B_L            ;
        LD      CCC_BUF+0,EA            ;
        LD      EA,#PARA_B_H            ;
        LD      CCC_BUF+2,EA            ;
        LD2B    ACC_BUF,WEIGHT          ;    WEIGHT==>ACC_BUF
        CALL    CW_MUL                  ;  36*WEIGHT==>BCC_BUF
        LD      WX,#(ABS_ERR+0)         ;
        LD      HL,#(BCC_BUF+0)         ;
        RCF                             ;
        LD      Z,#05                   ;
SUB_W:  LD      A,@WX                   ;
        SBC     A,@HL                   ;
        LD      @HL,A                   ;
        INCS    WX                      ;
        INCS    HL                      ;
        DECS    Z                       ;  
        JPS     SUB_W                   ;  ABS_ERR-BCC_BUF==>BCC_BUF
        BTSF    SEX                     ;
        JPS     ADDRES                  ;  MALE    RESULT-0
        LD      EA,BCC_BUF+0            ;
        LD      ABS_ERR+0,EA            ;
        LD      EA,BCC_BUF+2            ;
        LD      ABS_ERR+2,EA            ;
        LD      EA,BCC_BUF+4            ;
        LD      ABS_ERR+4,EA            ;  BCC==>ABS_ERR
        LD      EA,#PARA_C_L            ;
        LD      BCC_BUF+0,EA            ;
        LD      EA,#PARA_C_H            ;
        LD      BCC_BUF+2,EA            ;  6000==>BCC_BUF
        LD      EA,#00                  ;
        LD      BCC_BUF+4,EA            ;
        LD      BCC_BUF+6,EA            ;
        LD      WX,#(ABS_ERR+0)         ;
        LD      HL,#(BCC_BUF+0)         ;
        RCF                             ;
        LD      Z,#04                   ;
SUB_S:  LD      A,@WX                   ;
        SBC     A,@HL                   ;
        LD      @HL,A                   ;
        INCS    WX                      ;
        INCS    HL                      ;
        DECS    Z                       ;  
        JPS     SUB_S                   ;  ABS_ERR-BCC_BUF(6000)==>BCC_BUF
        NOP
ADDRES: LD      EA,#PARA_D_L            ; 
        LD      ACC_BUF+0,EA            ;
        LD      EA,#PARA_D_H            ;
        LD      ACC_BUF+2,EA            ;
        LD      WX,#(ACC_BUF+0)         ;
        LD      HL,#(BCC_BUF+0)         ;
        CALL    ADD2B3B                 ;  BCC_BUF+RES(600)==>BCC_BUF                
        LD      EA,BCC_BUF+0            ;
        LD      ABS_ERR+0,EA            ;
        LD      EA,BCC_BUF+2            ;
        LD      ABS_ERR+2,EA            ;
        LD      EA,BCC_BUF+4            ;
        LD      ABS_ERR+4,EA            ; BCC_BUF==>ABS_ERR
        LD      EA,AGE                  ;
        LD      CCC_BUF+0,EA            ;
        LD      EA,#00                  ; AGE==>CCC_BUF
        LD      CCC_BUF+2,EA            ;
        LD      EA,#PARA_E_L            ;
        LD      ACC_BUF+0,EA            ;
        LD      EA,#PARA_E_H            ;
        LD      ACC_BUF+2,EA            ; 100==>ACC_BUF
        CALL    CW_MUL                  ; 100*AGE==>BCC_BUF
        LD      WX,#(ABS_ERR+0)         ; ABS_ERR-BCC_BUF==>BCC_BUF
        LD      HL,#(BCC_BUF+0)         ;
        LD      Z,#05                   ;
        RCF                             ;
SUB_A:  LD      A,@WX                   ;
        SBC     A,@HL                   ;
        LD      @HL,A                   ;
        INCS    WX                      ;
        INCS    HL                      ;
        DECS    Z                       ;  
        JPS     SUB_A                   ;  
        LD      EA,#PARA_F_L             ; 
        LD      ACC_BUF+0,EA            ;
        LD      EA,#PARA_F_H             ;
        LD      ACC_BUF+2,EA            ;
        CALL    CW_DIV                  ;  BCC_BUF/100==>CCC_BUF
        CALL    HEX_BCD                 ;  CONVERT CCC_BUF TO BCD IN BCC_BUF        
        LD      EA,BCC_BUF+0            ;
        SMB     1                       ;
        LD      WATER_RATE+0,EA         ;
        SMB     0                       ;
        LD      EA,BCC_BUF+2            ;
        SMB     1                       ;
        LD      WATER_RATE+2,EA         ;
        SMB     0                       ;
        RET                             ;
 

⌨️ 快捷键说明

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