P5 EQU 0F8H
P7 EQU 0DBH


LCDSTATUS equ 0FF2EH 	;OBECNY STATUS EKRANU
LCDCONTROL equ 0FF2CH	;ADRES KONTROLI EKRANU
LCDDATAWRITE equ 0FF2DH	;ADRES ZAPISU DO EKRANU
LCDDATAREAD equ 0FF2FH	;ADRES ODCCZYTU Z EKRANU

LINE1 equ 080h
INIT equ 038H
LINE2 equ 0C0H
LCDON equ 0EH
CLEAR equ 01H

LJMP START
ORG 100H

START:

MOV R5,#0H

MOV R6, #00000000B
MOV R2, #0FFH
 
MOV DPTR,#8077H
MOV A,#031H
MOVX @DPTR,A

MOV DPTR,#807BH
MOV A,#032H
MOVX @DPTR,A

MOV DPTR,#807DH
MOV A,#033H
MOVX @DPTR,A

MOV DPTR,#807EH
MOV A,#041H
MOVX @DPTR,A

MOV DPTR,#80B7H
MOV A,#34H
MOVX @DPTR,A

MOV DPTR,#80BBH
MOV A,#35H
MOVX @DPTR,A

MOV DPTR,#80BDH
MOV A,#36H
MOVX @DPTR,A

MOV DPTR,#80BEH
MOV A,#042H
MOVX @DPTR,A

MOV DPTR,#80D7H
MOV A,#37H
MOVX @DPTR,A

MOV DPTR,#80DBH
MOV A,#38H
MOVX @DPTR,A

MOV DPTR,#80DDH
MOV A,#39H
MOVX @DPTR,A

MOV DPTR,#80DEH
MOV A,#043H
MOVX @DPTR,A

MOV DPTR,#80E7H
MOV A,#02AH
MOVX @DPTR,A

MOV DPTR,#80EBH
MOV A,#30H
MOVX @DPTR,A

MOV DPTR,#80EDH
MOV A,#023H
MOVX @DPTR,A

MOV DPTR,#80EEH
MOV A,#044H
MOVX @DPTR,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PETLA:
MOV DPTR,#LCDSTATUS
MOVX A,@DPTR
JB ACC.7,PETLA

MOV DPTR,#LCDCONTROL
MOV A, #INIT
MOVX @DPTR,A

PETLA2:
MOV DPTR,#LCDSTATUS
MOVX A,@DPTR
JB ACC.7,PETLA2

MOV DPTR,#LCDCONTROL
MOV A, #CLEAR
MOVX @DPTR,A

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Poczatek:
MOV P5, #01111111B
MOV B,P5
Mov A,P7
CPL A
XRL A,B
CJNE A,#01111111B,Dalej
JMP WIERSZ2

Dalej:
MOV DPTR,#8000H
ETY0:
INC DPTR
DEC A
CJNE A,#0,ETY0

MOVX A,@DPTR
MOV R6,A
JMP KONIEC                   

WIERSZ2:
MOV P5, #10111111B
MOV B,P5
Mov A,P7
CPL A
XRL A,B
CJNE A,#10111111B,Dalej1
JMP WIERSZ3

Dalej1:
MOV DPTR,#8000H
ETY1:
INC DPTR
DEC A
CJNE A,#0,ETY1

MOVX A,@DPTR
MOV R6,A
JMP KONIEC

posredni:
JMP poczatek

WIERSZ3:
MOV P5, #11011111B
MOV B,P5
Mov A,P7
CPL A
XRL A,B
CJNE A,#11011111B,Dalej2
JMP WIERSZ4

Dalej2:
MOV DPTR,#8000H
ETY2:
INC DPTR
DEC A
CJNE A,#0,ETY2

MOVX A,@DPTR
MOV R6,A
JMP KONIEC

WIERSZ4:
MOV P5, #11101111B
MOV B,P5
Mov A,P7
CPL A
XRL A,B
CJNE A,#11101111B,Dalej3
MOV R2,#0FFH
JMP Poczatek

Dalej3:
MOV DPTR,#8000H
ETY3:
INC DPTR
DEC A
CJNE A,#0,ETY3

MOVX A,@DPTR
MOV R6,A
JMP KONIEC

KONIEC:
MOV A,R6
SUBB A,R2
JZ Poczatek
MOV A,R6
MOV R2,A
MOV A, P1
SUBB A, R6
JZ posredni

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A,R6

PUSH ACC
PETLA3:
MOV DPTR,#LCDSTATUS
MOVX A,@DPTR
JB ACC.7,PETLA3

WYPISZ1:
MOV DPTR, #LCDDATAWRITE
POP ACC
MOVX @DPTR,A

INC R5

MOV A,R5
SUBB A,#21H
JZ PETLA5

MOV A,R5
SUBB A,#0FH
JNZ Posredni

PETLA4:
MOV DPTR,#LCDSTATUS
MOVX A,@DPTR
JB ACC.7,PETLA4

WIERSZ:
MOV DPTR, #LCDCONTROL
MOV A,#LINE2
MOVX @DPTR,A

JMP Poczatek

PETLA5:
MOV DPTR,#LCDSTATUS
MOVX A,@DPTR
JB ACC.7,PETLA5

nowa:
MOV DPTR, #LCDCONTROL
MOV A,#CLEAR
MOVX @DPTR,A

MOV R5,#0H

PETLA6:
MOV DPTR,#LCDSTATUS
MOVX A,@DPTR
JB ACC.7,PETLA6

WIERSZX:
MOV DPTR, #LCDDATAWRITE
MOV A,R6
MOVX @DPTR,A



JMP Poczatek

NOP
NOP
NOP
END START