;******************************************************************************
;               SED 1520
;******************************************************************************
                .SYMBOLS
;******************************************************************************
A0              REG     P3.0
CL              REG     P3.3
E               REG     P3.4            ; E   = RES
CS1             REG     P3.1            ; CS1 = E1
CS2             REG     P3.5            ; CS2 = E2
CS3             REG     P3.3            ; CS3 = E3
R_W             REG     P3.7
RES             REG     P3.2
STP             REG     P2.0
S_S             REG     P2.1
BCD             EQU     01H
PAGE_ADDRESS    EQU     7FH
COL_ADDRESS     EQU     7EH
SET_DATA        EQU     7DH

;******************************************************************************

                ORG        0H
                LJMP       START
                ORG        50H

START:                                          ;program reset start here
                                                ;INITIAL SETTING
INITIAL:
                SETB    RES                     ;Reset
                MOV     A,#11100010B            ;Software RESET
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                CALL    WRITE_COMMAND3

                MOV     A,#10100000B            ;Select ADC=0
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                CALL    WRITE_COMMAND3

                MOV     A,#10100100B            ;Satic Drive OFF
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                CALL    WRITE_COMMAND3

                MOV     A,#10101001B            ;Select Duty=1/32
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                CALL    WRITE_COMMAND3

                MOV     A,#11000000B            ;Set Start Line 0(C0H)~31(DFH)
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                CALL    WRITE_COMMAND3

                MOV     A,#10111000B            ;Set Page Address 0(B8H)~3(BBH)
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                CALL    WRITE_COMMAND3

                MOV     A,#10000000B            ;Set Column Address 0(00H)~(4FH)
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                CALL    WRITE_COMMAND3

                MOV     A,#10101111B            ;Set Display ON
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                CALL    WRITE_COMMAND3

;******************************************************************************
;               SHOW PAGE1
;******************************************************************************
SHOW_P1:
                MOV     R0,#0
                MOV     R1,#0
                MOV     DPTR,#SHOW_WG
SP1LP1:
                MOV     A,#B8H                  ;Set Page Address FROM 00H
                ADD     A,R1                    ;Command B8H~BBH
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                CALL    WRITE_COMMAND3
                MOV     A,#00H                  ;Set Column Address FROM 00H
                CALL    WRITE_COMMAND1
                CALL    WRITE_COMMAND2
                CALL    WRITE_COMMAND3

                MOV     R0,#0                   ;Rest Counter
SP1LP2:                                         ;Write Data To Chip I
                XRL     A,A
                MOVC    A,@A+DPTR
                CALL    WRITE_DATA1
                INC     R0
                INC     DPTR
                CJNE    R0,#61,SP1LP2

SP1LP3:                                         ;Write Data To Chip II
                XRL     A,A
                MOVC    A,@A+DPTR
                CALL    WRITE_DATA2
                INC     R0
                INC     DPTR
                CJNE    R0,#141,SP1LP3

SP1LP4:                                         ;Write Data To Chip III
                XRL     A,A
                MOVC    A,@A+DPTR
                CALL    WRITE_DATA3
                INC     R0
                INC     DPTR
                CJNE    R0,#202,SP1LP4

                INC     R1
                CJNE    R1,#4,SP1LP1

                MOV     R4,#20
                CALL    DELAY1
                LJMP    START
;******************************************************************************
WRITE_COMMAND1:
                CLR     A0
                CLR     R_W
                MOV     P1,A
                SETB    CS1
                NOP
                CLR     CS1
                RET
;******************************************************************************
WRITE_DATA1:
                SETB    A0
                CLR     R_W
                MOV     P1,A
                SETB    CS1
                NOP
                CLR     CS1
                RET
;******************************************************************************
WRITE_COMMAND2:
                CLR     A0
                CLR     R_W
                MOV     P1,A
                SETB    CS2
                NOP
                CLR     CS2
                RET
;******************************************************************************
WRITE_DATA2:
                SETB    A0
                CLR     R_W
                MOV     P1,A
                SETB    CS2
                NOP
                CLR     CS2
                RET
;******************************************************************************
WRITE_COMMAND3:
                CLR     A0
                CLR     R_W
                MOV     P1,A
                SETB    CS3
                NOP
                CLR     CS3
                RET
;******************************************************************************
WRITE_DATA3:
                SETB    A0
                CLR     R_W
                MOV     P1,A
                SETB    CS3
                NOP
                CLR     CS3
                RET
;******************************************************************************
DELAY1:
LOPC1:
                MOV     R5,#3FH
LOPB1:
                MOV     R6,#0FFH
LOPA1:
                DJNZ    R6,LOPA1
                DJNZ    R5,LOPB1
                DJNZ    R4,LOPC1
                RET
;******************************************************************************
SHOW_WG:
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,060h,030h,030h,030h,030h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,070h,070h,030h,038h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,040h,040h,07Ch
        DB      03Ch,038h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,0C0h,0E0h
        DB      0E0h,0E0h,0E0h,0E0h,0C0h,0C0h,0C0h,000h,000h,000h
        DB      000h,000h,000h,0E0h,0E0h,000h,000h,000h,004h,0FEh
        DB      0FEh,000h,000h,080h,0E0h,067h,0E7h,0E6h,0C0h,080h
        DB      000h,000h,000h,000h,000h,000h,03Eh,0FFh,0F8h,000h
        DB      0BCh,0FFh,0F0h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,007h,006h,0C2h,0E7h,0E7h,0E2h,080h,000h
        DB      000h,0FEh,0FFh,000h,000h,000h,0E0h,0F3h,09Bh,0FBh
        DB      0E0h,000h,000h,0FEh,0FFh,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,007h,067h,0F2h,0D8h,0F8h,0F0h
        DB      0C0h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      003h,007h,0C6h,0E7h,0E7h,0E2h,0C0h,000h,000h,000h
        DB      03Eh,0FFh,0F4h,000h,000h,0C0h,060h,060h,060h,0C0h
        DB      0C0h,080h,000h,000h,000h,000h,002h,007h,006h,0E2h
        DB      0E0h,080h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,0F8h,0FEh,083h,031h
        DB      071h,072h,00Fh,00Eh,00Eh,00Eh,00Eh,00Eh,00Eh,00Eh
        DB      00Eh,00Fh,00Fh,00Fh,00Eh,00Eh,00Eh,00Fh,00Fh,00Eh
        DB      00Eh,00Eh,00Eh,00Eh,00Eh,00Eh,00Fh,00Fh,00Fh,00Fh
        DB      00Eh,00Eh,00Eh,00Eh,00Eh,00Fh,00Fh,000h,000h,00Fh
        DB      007h,000h,000h,000h,000h,000h,078h,0FEh,0C0h,080h
        DB      080h,086h,08Fh,0CEh,0CEh,0EFh,07Fh,000h,000h,007h
        DB      00Fh,00Eh,00Eh,00Eh,00Eh,00Fh,00Fh,00Fh,00Fh,001h
        DB      000h,00Fh,00Fh,000h,000h,000h,000h,000h,000h,07Fh
        DB      0E1h,0C0h,0C0h,0C0h,0CDh,0FFh,07Eh,07Fh,019h,000h
        DB      000h,000h,000h,000h,030h,0FEh,0C0h,080h,080h,083h
        DB      08Fh,0CEh,0CEh,0EFh,07Fh,00Eh,00Eh,00Eh,00Eh,00Fh
        DB      00Fh,00Eh,00Eh,00Eh,00Eh,00Eh,00Ch,00Eh,00Fh,00Fh
        DB      00Fh,00Eh,00Eh,00Eh,00Eh,00Eh,00Eh,00Fh,00Fh,00Fh
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,003h,007h,007h,007h,007h
        DB      007h,007h,003h,003h,001h,001h,003h,003h,001h,003h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,001h,001h,003h,003h,003h
        DB      003h,001h,001h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,001h
        DB      005h,006h,004h,006h,006h,004h,000h,000h,000h,000h
        DB      000h,000h,000h,001h,001h,003h,003h,003h,003h,001h
        DB      001h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h,000h,000h,000h,000h
        DB      000h,000h,000h,000h,000h,000h
        END

