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

📄 lcd.asm

📁 给香港公司做的出口欧洲的电子称项目全部源代码 CPU:KS57C2308 RANGE:(0 -150KG)/d = 0.1kg
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;**************************************;
LCD_R0:          EQU     0E0H          ;
MALE_ICON:       BIT     (LCD_R0+15).0 ; "MALE"
FEMALE_ICON:     BIT     (LCD_R0+17).0 ; "FEMAL"
HEIGHT_ICON:     BIT     (LCD_R0+06).0 ; "HIGH"
ST_POINT:        BIT     (LCD_R0+20).0 ; ":" STONE
KG_POINT:        BIT     (LCD_R0+23).0 ; "." P1
KG_ICON:         BIT     (LCD_R0+24).0 ; "KG"
FAT_ICON:        BIT     (LCD_R0+27).0 ; "FAT%"
RF_ICON:         BIT     (LCD_R0+21).0 ; "(((" RF_ICON
ST_ICON:         BIT     (LCD_R0+29).0 ; "ST"
LB_ICON:         BIT     (LCD_R0+31).0 ; "LB"
INCH_ICON:       BIT     (LCD_R0+14).0 ; "INCH"
CM_ICON:         BIT     (LCD_R0+12).0 ; "CM"
P2_POINT:        BIT     (LCD_R0+11).0 ; "." P2
WATER_ICON:      BIT     (LCD_R0+09).0 ; "WATER%"
FRACTION_LINE:   BIT     (LCD_R0+26).0 ; "-"
FT_POINT:        BIT     (LCD_R0+08).0 ; ":" FOOT
AGE_ICON:        BIT     (LCD_R0+00).0 ; "AGE"
MINUS_ICON:      BIT     (LCD_R0+16).1 ; "-"
;**************************************;

;**************************************;
         ORG     1000H                 ;
SEG_TAB1:                              ; FOR DISPLAY DIGIT (1,2,3,4,5)
;                   ;  FEBC XAGD       ;
        DB  0F5H    ;  1111 0101       ; 0
        DB  030H    ;  0011 0000       ; 1
        DB  067H    ;  0110 0111       ; 2
        DB  037H    ;  0011 0111       ; 3
        DB  0B2H    ;  1011 0010       ; 4
        DB  097H    ;  1001 0111       ; 5
        DB  0D7H    ;  1101 0111       ; 6
        DB  0B4H    ;  1011 0100       ; 7
        DB  0F7H    ;  1111 0111       ; 8
        DB  0B7H    ;  1011 0111       ; 9
        DB  0F6H    ;  1111 0110       ; A
        DB  0D3H    ;  1101 0011       ; B
        DB  0C5H    ;  1100 0101       ; C
        DB  073H    ;  0111 0011       ; D
        DB  0C7H    ;  1100 0111       ; E
        DB  0C6H    ;  1100 0110       ; F
        DB  000H    ;  0000 0000       ; X     10H  OFF
        DB  0C3H    ;  1100 0011       ; t     11H
        DB  042H    ;  0100 0010       ; r     12H
        DB  053H    ;  0101 0011       ; o     13H
        DB  002H    ;  0000 0010       ;"M -"  14H
        DB  0C1H    ;  1100 0001       ; L     15H
        DB  004H    ;  0000 0100       ;"H -"  16H
        DB  001H    ;  0000 0001       ;"L -"  17H
;**************************************;

;***************************************************************************;
;                               DISPLAY DIGIT                               ;
;***************************************************************************;
;FUNCTION: DISPLAY DIGIT1-4            ;
;R: [HL] [WX] [ACC_BUF]  (4 NIBS)      ;
;INPUT: [BCC_BUF] (4 BYTES)            ;
DIGIT1234_DISP:                        ;
        LD       HL,#(LCD_R0+15)       ; DIGIT 1
        LD       WX,#(BCC_BUF+6)       ;
        CALL     DDISP                 ;
;---------------------------           ;
        LD       HL,#(LCD_R0+18)       ; DIGIT 2
        LD       WX,#(BCC_BUF+4)       ;
        CALL     DDISP                 ;
;---------------------------           ;
        LD       HL,#(LCD_R0+21)       ; DIGIT 3
        LD       WX,#(BCC_BUF+2)       ;
        CALL     DDISP                 ;
;----------------------------          ;
        LD       HL,#(LCD_R0+24)       ; DIGIT 4
        LD       WX,#(BCC_BUF+0)       ;
;----------------------------          ;
DDISP:  LD       A,@WX                 ;
        LD       Z,A                   ; GET LOW_ORDER NIB OF BCC_BUF
        INCS     WX                    ;
        LD       A,@WX                 ;
        LD       Y,A                   ; GET HIGH-ORDER NIB OF BCC_BUF
        LD       EA,YZ                 ;
DDISP1: LDC      EA,@EA                ; LOOK-UP-TABLE TO GET CODE
DDISP2: LD       ACC_BUF,EA            ; DISPLAY CODE --->BCC_BUF
;--------------------------            ;
        LD       A,ACC_BUF+1           ;
        RCF                            ;
        AND      A,#1100B              ;
        RRC      A                     ; 0110   *****************
        LD       X,A                   ;  A SAVE TO WX
        LD       W,#0                  ;
        SMB      1                     ;
        LD       A,@HL                 ;
        LD       E,#0                  ;
        AND      A,#0001B              ; 0001   *****************
        OR       EA,WX                 ;
        LD       @HL,A                 ; SEND DATA TO 1ST LCD_REG
        SMB      0                     ;
;--------------------------            ;
        INCS     HL                    ; HL + +
        LD       A,ACC_BUF+0           ;
        AND      A,#0111B              ;
        SMB      1                     ;
        LD       @HL,A                 ; SEND DATA TO 2ND LCD_REG
        SMB      0                     ;
;--------------------------            ;
        INCS     HL                    ; HL + +
        LD       A,ACC_BUF+1           ;
        AND      A,#0011B              ;
        LD       E,#0                  ;
        RCF                            ;
        ADC      EA,EA                 ; 0110   *****************
        LD       X,A                   ; A SAVE TO WX
        LD       W,#0                  ;
        SMB      1                     ;
        LD       A,@HL                 ;
        LD       E,#0                  ;
        AND      A,#0001B              ; 0001   ******************
        OR       EA,WX                 ;
        LD       @HL,A                 ;SEND DATA TO 3RD LCD_REG
        SMB      0                     ;
        RET                            ;
;--------------------------------------;
DN_DIGIT_DISP:                         ;
        LD       HL,#(LCD_R0+29)       ;
        JPS      DDISP1                ;
        RET
;****************************************************************************;
;                                 DISPLAY TIP & ALARM                        ;
;****************************************************************************;
          ORG  1080H                   ;
       DB 13H,13H,13H,13H  ;OOOO       ;
       DB 10H,13H,13H,13H  ;XOOO       ;
       DB 10H,10H,13H,13H  ;XXOO       ;
       DB 10H,10H,10H,13H  ;XXXO       ;
       DB 10H,10H,10H,10H  ;XXXX       ;
       DB 16H,16H,16H,16H  ;UP_LINE    ;
       DB 17H,17H,17H,17H  ;DN_LINE    ;
       DB 14H,14H,14H,14H  ;MD_LINE    ;
       DB 08H,08H,08H,08H  ;EIGHT 8888 ;
       DB 0CH,0AH,15H,01H  ;CAL1       ;
       DB 0CH,0AH,15H,02H  ;CAL2       ;
       DB 12H,04H,00H,10H  ;R40X       ;
       DB 12H,01H,02H,00H  ;R120       ;
       DB 10H,10H,15H,13H  ;XXLO       ;
       DB 0EH,12H,12H,05H  ;ERR5       ; SENSOR
       DB 0EH,12H,12H,04H  ;ERR4       ; 24C01
       DB 0EH,12H,12H,03H  ;ERR3       ; KB
       DB 0EH,12H,12H,02H  ;ERR2       ; CAL
       DB 0EH,12H,12H,01H  ;ERR1       ; CAPTURE ZERO
       DB 0EH,10H,10H,10H  ;E          ;
       DB 01H,14H,01H,02H  ;1 - 12     ;
;--------------------                  ;
;INPUT: EA                             ;
TIP_DISP:                              ;
        RCF                            ;
        ADC      EA,EA                 ;
        ADC      EA,EA                 ;
        LD       WX,#80H               ;
        ADC      WX,EA                 ;
        LDC      EA,@WX                ;
        LD       BCC_BUF+6,EA          ;
        INCS     WX                    ;
        LDC      EA,@WX                ;
        LD       BCC_BUF+4,EA          ;
        INCS     WX                    ;
        LDC      EA,@WX                ;
        LD       BCC_BUF+2,EA          ;
        INCS     WX                    ;
        LDC      EA,@WX                ;
        LD       BCC_BUF+0,EA          ;
        JPS      DIGIT1234_DISP        ;
;**************************************;

;**************************************;
         ORG     1100H                 ;
SEG_TAB3:                              ;
;                   ;  EFCB XDGA       ; FOR DISPLAY DIGIT (7,8,9,A,B)
        DB  0F5H    ;  1111 0101       ; 0
        DB  030H    ;  0011 0000       ; 1
        DB  097H    ;  1001 0111       ; 2
        DB  037H    ;  0011 0111       ; 3
        DB  072H    ;  0111 0010       ; 4
        DB  067H    ;  0110 0111       ; 5
        DB  0E7H    ;  1110 0111       ; 6
        DB  071H    ;  0111 0001       ; 7
        DB  0F7H    ;  1111 0111       ; 8
        DB  077H    ;  0111 0111       ; 9
        DB  0F3H    ;  1111 0011       ; A
        DB  0E6H    ;  1110 0110       ; B
        DB  0C5H    ;  1100 0101       ; C
        DB  0B6H    ;  1011 0110       ; D
        DB  0C7H    ;  1100 0111       ; E
        DB  0C3H    ;  1100 0011       ; F
        DB  000H    ;  0000 0000       ; X 10H  OFF
;**************************************;
;INPUT: [BCC_BUF]                      ;
DIGIT_AB_DISP:                         ;
        LD       HL,#(LCD_R0+00)       ;
        LD       EA,BCC_BUF+2          ; DIGIT A
        CALL     DISP                  ;
;--------------------------------------;
        LD       HL,#(LCD_R0+03)       ; DIGIT B
        LD       EA,BCC_BUF+0          ;
        CALL     DISP                  ;
        RET                            ;
;--------------------------------------;
;INPUT: [BCC_BUF]                      ;
DIGIT789_DISP:                         ;
        LD       HL,#(LCD_R0+06)       ;
        LD       EA,BCC_BUF+4          ; DIGIT 7
        CALL     DISP                  ;
;--------------------------------------;
        LD       HL,#(LCD_R0+09)       ; DIGIT 8
        LD       EA,BCC_BUF+2          ;
        CALL     DISP                  ;
;--------------------------------------;
        LD       HL,#(LCD_R0+12)       ; DIGIT 9
        LD       EA,BCC_BUF+0          ;
DISP:   LDC      EA,@EA                ; LOOK-UP-TABLE TO GET CODE
        JPS      DDISP2                ;
;**************************************;
; DISLAY UP DIGIT ;
; INPUT: EA                            ;
         ORG     1200H                 ;
SEG_TAB4:                              ;         
;                  ;  XEDX XABC        ; FOR DISPLAY DIGIT 5
        DB  00H    ;  0000 0000        ; 0  OFF
        DB  03H    ;  0000 0011        ; 1
        DB  66H    ;  0110 0110        ; 2
        DB  27H    ;  0010 0111        ; 3
        DB  00H    ;  0000 0000        ; 4  OFF
        DB  00H    ;  0000 0000        ; 5  OFF
        DB  00H    ;  0000 0000        ; 6  OFF
        DB  00H    ;  0000 0000        ; 7  OFF
        DB  00H    ;  0000 0000        ; 8  OFF
        DB  00H    ;  0000 0000        ; 9  OFF
;----------------------------------------
UP_DIGIT_DISP:                         ;
        LD       HL,#(LCD_R0+27)       ;
        LDC      EA,@EA                ; LOOK-UP-TABLE TO GET CODE
        LD       WX,EA                 ;
        LD       A,@HL                 ;
        AND      A,#0001B              ;
        LD       E,A                   ;
        LD       E,#0H                 ;
        OR       WX,EA                 ;
        LD       A,W                   ;
        SMB      1                     ;
        LD       @HL,A                 ;
        LD       A,X                   ;
        INCS     HL                    ;
        LD       @HL,A                 ;
        SMB      0                     ;
        RET                            ;
;**************************************;

;****************************************************************************;
;                              DISPLAY WEIGHT                                ;
;****************************************************************************;
;INPUT:BCC_BUF                         ;
DISP_WEIGHT:                           ;
        JPS      CHK_MINUS             ; CHK DISPLAY ON OR OFF "- "
DISP_WT:LD       A,BCC_BUF+3           ;
        LD       BCC_BUF+6,A           ;
        LD       A,BCC_BUF+2           ;
        LD       BCC_BUF+4,A           ;
        LD       A,BCC_BUF+1           ;
        LD       BCC_BUF+2,A           ;
        LD       A,#0                  ;
        LD       BCC_BUF+1,A           ;
        LD       BCC_BUF+3,A           ;
        LD       BCC_BUF+5,A           ;
        LD       BCC_BUF+7,A           ;
;---------------------                 ;
        BTSF     KG_FLAG               ; UNIT IS KG ?
        JPS      DW_01                 ; YES.
        BTST     LB_ST_FLAG            ; NO. & UNIT IS LB ?
        JPS      DW_2                  ;       NO. UNIT IS ST
;---------------------                 ;       |
;DISPLAY KG/LB.                        ;       |
DW_01:  LD       A,BCC_BUF+6           ;       YES.
        CPSE     A,#0                  ;
        JPS      DW_4                  ;
        LD       EA,#LCD_OFF_CON       ;
        LD       BCC_BUF+6,EA          ;
DW_1:   LD       A,BCC_BUF+4           ;
        CPSE     A,#0                  ;
        JPS      DW_4                  ;
        LD       EA,#LCD_OFF_CON       ;
        LD       BCC_BUF+4,EA          ;
        JPS      DW_4                  ;
;---------------------                 ;
DW_2:   LD       A,BCC_BUF+6           ; FOR DISPLAY STONE.
        CPSE     A,#0                  ;
        JPS      DW_3                  ;
        LD       EA,#LCD_OFF_CON       ;
        LD       BCC_BUF+6,EA          ;
DW_3:   LD       A,BCC_BUF+2           ;
        CPSE     A,#0                  ;
        JPS      DW_4                  ;
        LD       EA,#LCD_OFF_CON       ;
        LD       BCC_BUF+2,EA          ;
DW_4:   CALL     DIGIT1234_DISP        ;
;---------------------                 ;
        BTSF     CAL_EN                ;
        RET                            ;
        BTSF     SET_EN                ;
        RET                            ;
        BTST     DISP_MINUS_ON         ;
        JPS      DW_40                 ;
        SMB      1                     ;
        BITS     MINUS_ICON            ;
        SMB      0                     ;
DW_40:  BTSF     KG_FLAG               ; UNIT IS KG ?
        JPS      KG_ON                 ; YES.
        BTSF     LB_ST_FLAG            ; NO. & UNIT IS LB ?
        JPS      LB_ON                 ;       YES.
        CALL     STONE_ON              ;       NO. UNIT IS STONE
        LD       EA,FRACTION           ;
        LD       WX,#00                ;
        CPSE     EA,WX                 ;
        JPS      DW_41                 ;
        CALL     UPDN_DIGIT_OFF        ; TURN OFF SMALL DIGIT
        RET
;--------------------                  ;
DW_41:  LD       A,FRACTION+0          ; FOR DISPALY FRACTION ...
        LD       E,#0                  ;
        CALL     DN_DIGIT_DISP         ;
        LD       A,FRACTION+1          ;
        LD       E,#0                  ;
        CALL     UP_DIGIT_DISP         ;
        SMB      1                     ;
        BITS     FRACTION_LINE         ;
        SMB      0                     ;
        RET                            ;
;**************************************;

;**************************************;
UPDN_DIGIT_OFF:                        ;

⌨️ 快捷键说明

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