
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;WRITE (Y,X)INPUT PARAMETER Y_COOR_L,X_COOR_H, X_COOR_L)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITE_Y_X:
        LCALL   LCD_CS
;        MOV     R0,#ADDR_PORT  ;;WRITE Y
        CLR     ADDRESS
        MOV     A,#ROW_ADDR
        MOVX    @R0,A
;        MOV     R0,#DATA_PORT
        SETB    ADDRESS
        MOV     A,Y_COOR_L
        MOVX    @R0,A

;        MOV     R0,#ADDR_PORT;  #2;WRITE XH
        CLR     ADDRESS
        MOV     A,#COL_HADDR
        MOVX    @R0,A
;        MOV     R0,#DATA_PORT
        SETB    ADDRESS
        MOV     A,X_COOR_H
        MOVX    @R0,A
;        MOV     R0,#ADDR_PORT;  #2;WRITE XL
        CLR     ADDRESS
        MOV     A,#COL_LADDR
        MOVX    @R0,A
;        MOV     R0,#DATA_PORT
        SETB    ADDRESS
        MOV     A,X_COOR_L
        MOVX    @R0,A
        RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;WRITE COLOR DATA INPUT PARAMETER COLOR_REG_L)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITE_COLOR:
        LCALL   LCD_CS
;        MOV     R0,#ADDR_PORT  ;;WRITE Y
        CLR    ADDRESS
        MOV     A,#DATA_ADDR
        MOVX    @R0,A
;        MOV     R0,#DATA_PORT
        SETB    ADDRESS
        MOV     A,COLOR_REG_L
        MOVX    @R0,A
        RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;INPUT PARAMETE    Y_COOR_L,
;                  X_COOR_H,X_COOR_L,
;                  COLOR_REG_L,
;                  BAK_CHAR_NUM  ;;character high
;                  CHAR_NUM1 ;Y  ;;character width/8
;;;;;;;;;;;;;;;;DISPLAY HANZI FONT COLOR;;;;;;;;;;;;;;;;;;        
DISP_HANZI:	
        MOV	A,BAK_CHAR_NUM
	MOV	CHAR_NUM,A	
DISP_HANZI1:	
        CLR	A		
	MOVC	A,@A+DPTR	
	INC	DPTR
	MOV	CHAR_BYTE,A
	MOV	A,DPH		
	MOV	CIRYH,A
	MOV	A,DPL
	MOV	CIRYL,A
	MOV	R7,#8
DISP_HANZI2:	
        MOV	A,CHAR_BYTE
	RLC	A
	MOV	CHAR_BYTE,A
	JNC	DISP_HANZI3
	PUSH	07H
	LCALL   WRITE_DOT
	POP	07H
DISP_HANZI3:
        LCALL   X_COOR_ADD1
	DJNZ	R7,DISP_HANZI2
	;Τέ΄ζDPTR
	MOV	A,CIRYH
        MOV     DPH,A
	MOV	A,CIRYL
	MOV	DPL,A
	DJNZ	CHAR_NUM,DISP_HANZI1
	MOV	A,BAK_CHAR_NUM
	MOV	B,#8
	MUL	AB
	MOV	R0,A
	MOV	A,X_COOR_L
	CLR	C
	SUBB	A,R0
	MOV	X_COOR_L,A
	MOV	A,X_COOR_H
	SUBB	A,B
	MOV	X_COOR_H,A
        LCALL   Y_COOR_ADD1
	DJNZ	CHAR_NUM1,DISP_HANZI
	RET 
	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Y_COOR_ADD1:
        INC     Y_COOR_L
        RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;        
X_COOR_ADD1:        
        MOV	A,X_COOR_L
	ADD	A,#1
	MOV	X_COOR_L,A
	MOV	A,X_COOR_H
	ADDC	A,#0
	MOV	X_COOR_H,A
	CLR     C
	RET   	 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;INPUT PARAMETE    Y_COOR_L
;                  X_COOR_H,X_COOR_L,
;                  COLOR_REG_L
;;;;;;;;;;;;;;;;clear color;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITE_DOT: 
        LCALL   LCD_CS  ;(X,Y) 
        LCALL   WRITE_Y_X
        LCALL   WRITE_COLOR
        RET	 