;**********************************
;       WG16032C   ST7920
;**********************************
RS              REG     P3.0
E               REG     P3.4
R_W             REG     P3.7
STP             REG     P2.0
S_S             REG     P2.1

BCD             EQU     7FH
CHAR_ADD        EQU     7EH
DPTRH           EQU     7DH
DPTRL           EQU     7CH
DT1             EQU     7BH
DT2             EQU     7AH
DT3             EQU     79H

;**********************************
                ORG     0H
                JMP     START
START:

INITIAL:
                CLR     E
                MOV     A,#00111000B            
                CALL    WCOM       

                MOV     A,#00001100B            ;Display ON/OFF = 00001DCB
                CALL    WCOM                    ;Display ON,Cursor&Blink OFF

                MOV     A,#00000110B            ;Entry Mode Set = 000001IS
                CALL    WCOM                    ;Increment & Shift OFF

                MOV     A,#00000010B            ;Return Home
                CALL    WCOM 

                MOV     A,#00000001B            ;Clear Display
                CALL    WCOM                    ;Write 20H to DDRAM

;******************************************************
SHOW:
                MOV     R6,#0FFH
                CALL    CSHOW
                ;JMP     $
                CALL    F_C
                LCALL   DELAY
                LCALL   STP_SC

                MOV     R6,#0AAH
                CALL    F_C
                LCALL   DELAY
                LCALL   STP_SC

                CALL    ROW

                CALL    GSHOW

                MOV     R6,#00H
                CALL    F_C
                CALL    SQUARE
                CALL    CSHOW

                MOV     A,#01H
                CALL    WCOM
                
                JMP     SHOW   
;******************************************************
                
CSHOW:  
                CLR     E
                MOV     A,#00111000B            
                CALL    WCOM     
                
                MOV     A,#10010000B
                CALL    WCOM
                MOV     DPTR,#S1
                MOV     R1,#19
CLOOP1:
                MOV     A,#00H
                MOVC    A,@A+DPTR
                CALL    WDATA
                INC     DPTR                
                DJNZ    R1,CLOOP1
                
                MOV     A,#10000010B
                CALL    WCOM
                MOV     DPTR,#S2
                MOV     R1,#6
CLOOP2:
                MOV     A,#00H
                MOVC    A,@A+DPTR
                CALL    WDATA
                INC     DPTR                
                DJNZ    R1,CLOOP2

                MOV     A,#10000111B
                CALL    WCOM
                MOV     DPTR,#S3
                MOV     R1,#6
CLOOP3:
                MOV     A,#00H
                MOVC    A,@A+DPTR
                CALL    WDATA
                INC     DPTR                
                DJNZ    R1,CLOOP3
                LCALL   DELAY
                LCALL   STP_SC
                
                RET
                
;******************************************************

GSHOW:
                MOV     A,#00111110B            
                CALL    WCOM  
                        
                MOV     R5,#02H
                MOV     R4,#00H
                MOV     DPTR,#G1
                MOV     R2,#0
GLOOP1:
                MOV     A,#80H
                ADD     A,R2
                CALL    WCOM
                MOV     A,#80H
                CALL    WCOM
GLOOP2:         MOV     R3,#24
GLOOP3:
                MOV     A,#00H
                MOVC    A,@A+DPTR
                CALL    WDATA
                INC     DPTR
                DJNZ    R3,GLOOP3
                MOV     R5,#02H
                INC     R2
                CJNE    R2,#32,GLOOP1

                LCALL   DELAY
                LCALL   STP_SC
                
                RET
;*******************************************************                
CHK_BUSY:
                MOV     P1,#0FFH                ;SET PORT1=INPUT
                CLR     RS                      ;SET IR  MODE RS=0
                SETB    R_W                     ;SET READ MODE R/W=1
                SETB    E                       ;ENABLE LCM
                MOV     C,P1.7                  ;CHECK BUSY FLAGE(BIT7)
                CLR     E
                JC      CHK_BUSY
                RET
;******************************************************                
WCOM:
                CALL    CHK_BUSY
                CLR     RS
                CLR     R_W
                SETB    E
                MOV     P1,A
                CLR     E
                RET
;*******************************************************
WDATA:
                CALL    CHK_BUSY
                SETB    RS
                CLR     R_W
                SETB    E
                MOV     P1,A
                CLR     E
                RET
;********************************************************                
F_C:
                MOV     A,#00111110B            
                CALL    WCOM
                
                MOV     R2,#0
FLOOP1:
                MOV     A,#80H
                ADD     A,R2
                CALL    WCOM
                MOV     A,#80H
                CALL    WCOM
                MOV     R3,#32
FLOOP2:
                MOV     A,R6
                CALL    WDATA
                DJNZ    R3,FLOOP2
                INC     R2
                CJNE    R2,#32,FLOOP1

                RET
;**********************************************************
ROW:
                MOV     A,#00111110B            
                CALL    WCOM  
                        
                MOV     R4,#0FFH
                MOV     R2,#0
RLOOP1:
                MOV     A,#80H
                ADD     A,R2
                CALL    WCOM
                MOV     A,#80H
                CALL    WCOM
                MOV     R3,#32
RLOOP2:
                MOV     A,R4
                CALL    WDATA
                DJNZ    R3,RLOOP2
                CPL     A
                MOV     R4,A
                INC     R2
                CJNE    R2,#32,RLOOP1

                LCALL   DELAY
                LCALL   STP_SC
                
                RET
;**********************************************************
SQUARE:
                MOV     R1,#32
                MOV     R2,#80H
SLOOP4:
                MOV     R3,#80H
SLOOP5:
                MOV     A,R2
                CALL    WCOM
                MOV     A,R3
                CALL    WCOM
                
                MOV     A,#80H
                CALL    WDATA
                
                MOV     A,R3
                ADD     A,#8
                MOV     R3,A
                
              ;********************  
                MOV     R3,#8BH

SLOOP6:
                MOV     A,R2
                CALL    WCOM
                MOV     A,R3
                CALL    WCOM
                
                MOV     A,#00H
                CALL    WDATA
                MOV     A,#01H
                CALL    WDATA
                
                MOV     A,R3
                ADD     A,#8
                MOV     R3,A
                
                INC     R2
                DJNZ    R1,SLOOP4
                
;******************************************
                
                MOV     A,#00111110B
                CALL    WCOM

                MOV     A,#80H
                CALL    WCOM
                MOV     A,#80H
                CALL    WCOM
                MOV     R3,#24
SLOOP1:
                MOV     A,#0FFH
                CALL    WDATA
                DJNZ    R3,SLOOP1
;******************************************                
                MOV     A,#9FH
                CALL    WCOM
                MOV     A,#80H
                CALL    WCOM
SLOOP2:
                MOV     R3,#24
SLOOP3:
                MOV     A,#FFH
                CALL    WDATA
                DJNZ    R3,SLOOP3

                MOV     A,#9FH
                CALL    WCOM
                MOV     A,#80H
                CALL    WCOM
                MOV     A,#FFH
                CALL    WDATA

                RET

;*****************************************************************************
DELAY:
                CALL    CBCD
                MOV     R4,BCD
D1:
                MOV     R5,#100
D2:
                MOV     R6,#200
D3:
                DJNZ    R6,D3
                DJNZ    R5,D2
                DJNZ    R4,D1
                RET
;*****************************************************************************
;       Procedure of step by step   and  scan
;*****************************************************************************
STP_SC:
                MOV        C,S_S
                JC         STEP
                RET

STEP:           MOV        C,STP
                MOV        R5,#0FH
LOPE:           MOV        R6,#0FFH
LOPH:           DJNZ       R6,LOPH
                DJNZ       R5,LOPE
                JNB        S_S,LOUT
                JNC        STEP
LOUT:
                RET
;*****************************************************************************
;       BCD DELAY TIME SELECT
;*****************************************************************************
CBCD:
                PUSH       A
                MOV        A,P0
                ANL        A,#0FH
                RL         A
                RL         A
                MOV        BCD,A  
                POP        A
                RET
;**********************************************************
S1:
        DB      'ABCDEFGHIJKLMNOPQRSTUVWX'
S2:
        DB      C1H,63H,C5H,E9H,AAH,A9H
S3:
        DB      BCH,F2H,CCH,E5H,B0H,E6H

        
G1:     
          DB      008h,042h,010h,084h,021h,008h,042h,010h
          DB      084h,021h,008h,042h,010h,084h,021h,008h
          DB      042h,010h,084h,021h,008h,042h,010h,084h
          DB      008h,042h,010h,084h,021h,008h,042h,010h
          DB      084h,021h,008h,042h,010h,084h,021h,008h
          DB      042h,010h,084h,021h,008h,042h,010h,084h
          DB      000h,040h,010h,004h,001h,000h,040h,010h
          DB      004h,001h,000h,040h,010h,004h,001h,000h
          DB      040h,010h,004h,001h,000h,040h,010h,084h
          DB      000h,040h,010h,004h,001h,000h,040h,010h
          DB      004h,001h,000h,040h,010h,004h,001h,000h
          DB      040h,010h,004h,001h,000h,040h,010h,004h
          DB      0C0h,000h,000h,000h,000h,000h,000h,000h
          DB      000h,000h,000h,000h,000h,000h,000h,000h
          DB      000h,000h,000h,000h,000h,000h,000h,000h
          DB      000h,000h,000h,000h,000h,000h,000h,000h
          DB      000h,000h,000h,000h,000h,000h,000h,000h
          DB      000h,000h,000h,000h,000h,000h,000h,000h
          DB      002h,0AAh,0AAh,0AAh,0AAh,0A0h,000h,0AAh
          DB      0AAh,0AAh,0AAh,0A8h,000h,00Ah,0AAh,0AAh
          DB      0AAh,0AAh,000h,002h,0AAh,0AAh,0AAh,0AAh
          DB      001h,055h,055h,055h,055h,043h,0B8h,055h
          DB      055h,055h,055h,050h,0BBh,085h,055h,055h
          DB      055h,054h,02Eh,0E1h,055h,055h,055h,055h
          DB      002h,0AAh,0AAh,0AAh,0AAh,0A2h,028h,0AAh
          DB      0AAh,0AAh,0AAh,0A8h,0AAh,08Ah,0AAh,0AAh
          DB      0AAh,0AAh,028h,0A2h,0AAh,0AAh,0AAh,0AAh
          DB      0F1h,055h,055h,055h,055h,043h,0A8h,055h
          DB      055h,055h,055h,050h,0AAh,085h,055h,055h
          DB      055h,054h,02Eh,0A1h,055h,055h,055h,055h
          DB      002h,0AAh,0AAh,0AAh,0AAh,0A0h,0A8h,0AAh
          DB      0AAh,0AAh,0AAh,0A8h,0AAh,08Ah,0AAh,0AAh
          DB      0AAh,0AAh,022h,0A2h,0AAh,0AAh,0AAh,0AAh
          DB      001h,055h,055h,055h,055h,043h,0B8h,055h
          DB      055h,055h,055h,050h,0BBh,085h,055h,055h
          DB      055h,054h,02Eh,0E1h,055h,055h,055h,055h
          DB      002h,0AAh,0AAh,0AAh,0AAh,0A0h,000h,0AAh
          DB      0AAh,0AAh,0AAh,0A8h,000h,00Ah,0AAh,0AAh
          DB      0AAh,0AAh,000h,002h,0AAh,0AAh,0AAh,0AAh
          DB      001h,055h,055h,055h,055h,040h,000h,055h
          DB      055h,055h,055h,050h,000h,005h,055h,055h
          DB      055h,054h,000h,001h,055h,055h,055h,055h
          DB      0C2h,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      001h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      002h,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      001h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      002h,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0F1h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      002h,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      001h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      002h,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      001h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      0C2h,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      001h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      002h,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      001h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      002h,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0F1h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      002h,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh,0AAh
          DB      001h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h
          DB      055h,055h,055h,055h,055h,055h,055h,055h

                END                                                                                
