B1R2 EQU 8+2
B1R3 EQU 8+3
B2R1 EQU 16+1

FLAGA EQU 20H
NADAJE EQU FLAGA.0

BUFOR EQU 10H

BUF_N EQU 30H
BUF_NE EQU BUF_N+BUFOR
BUF_O EQU BUF_NE
BUF_OE EQU BUF_O+BUFOR

STOS EQU 60H

;TIMER 0
T0_G EQU 0
T0_C EQU 0
T0_M EQU 0
TIM0 EQU T0_M+T0_C*4+T0_G*8
;TIMER 1
T1_G EQU 0
T1_C EQU 0 
T1_M EQU 2
TIM1 EQU T1_M+T1_C*+T1_G*8

TMOD_SET EQU TIM0+TIM1*16

TR_M EQU 1
TR_R EQU 1

SCON_SET EQU TR_M*64+TR_R*16

TH1_SET EQU 256-192
TL1_SET EQU 256-192

BANK0 MACRO
CLR RS0
MACEND

BANK1 MACRO
SETB RS0
MACEND

LJMP START

ORG 23H
PUSH ACC
PUSH PSW
BANK1
SETB RS0
MACEND

JBC TI,NAD
CLR RI
MOV @R1,SBUF
INC R3
INC R1
CJNE R1,#BUF_OE,ODB_E
MOV R1,#BUF_0

ODB_E:
POP PSW
POP ACC
RETI

NAD:
CJNE R2,#0,NAD_N
CLR NADAJE
POP PSW
POP ACC
RETI

NAD_N:
MOV SBU,@R0
DEC R2
INC R0
CJNE R0,#SBUF_NE,NAD_E
MOV R0,#SBUF_N

NAD_E:
POP PSW
POP ACC
RETI

ORG 100H

START:
MOV SP,#STOS

MOV SCON,#SCON_SET
ORL PCON,#80H
MOV TMOD,#TMOD_SET
MOV TH1,#TH1_SET
MOV TL1,#TL1_SET
SETB TR1

CLR NADAJE

MOV R0,#BUF_N
MOV R1,#BUF_o
BANK1
SETB RS0
MACEND
MOV R0,#BUF_N
MOV R1,#BUF_O
MOV R2,#0
MOV R3,#0
BANK0
CLR RS0
MACEND
SETB EA
SETB ES

LCALL LCD_CLR

LOOP:
MOV A,B1R3
JZ ODB_NO
MOV A,@R1
LCALL WRITE_DATA
DEC B1R3
INC R1
CJNE R1,#BUF_OE,LOOP
MOV R1,#BUF_O
SJMP LOOP

ODB_NO:
LCALL TEST_ENTER
JC LOOP

WPISZ:
LCALL LCD_CLR
LCALL WAIT_KEY

PUSH ACC
MOV A,#BUFOR

LP2:
CJNE A,B1R2,LP3
SJMP LP2

LP3:
POP ACC
MOV @R0,A
INC R0
INC B1R2

JB NADAJE,LP4
SETB NADAJE
SETB TI

LP4:
INC DPTR
CJNE R0,#BUF_NE,LP2
MOV R0,#BUF_N
SJMP LP2

TEXT:
DB 'ABCDE',0