	RAM_ADDR	EQU	40H
	ASCI_RSULT	EQU	50H
	COUNT		EQU	3
	ORG	0000H
	MOV	TMOD, #00000110B	;TIMER 0 MODE 2, COUNTER
	MOV	TH0, #0			;TH0 = 0
AGAIN:	SETB	TR0			;START TIMER/COUNTER 0
BACK1:	MOV	A, TL0			;A = TL0
	MOV	B, P1			;B = P1
	CJNE	A, B, NEXT		;IF A IS NOT EQUAL TO B GOTO NEXT
	CLR	A			;A = 0
	MOV	TL0, A			;TL0 = A
NEXT:	MOV	P2, A
	LCALL	BIN_DEC_CONVRT	
	LCALL	DEC_ASCI_CONVRT
	MOV	TMOD, #20H              ;TIMER 1 MODE 2
	MOV	TH1, #0FDH              ;9600 BAUD RATE
	MOV	SCON, #50H              ;8-BIT, 1 STOP BIT, REN ENABLED
	SETB	TR1                     ;START TIMER 1
	LCALL	SEND
	JNB	TF0, BACK1
	CLR	TF0			;CLEAR TIMER 0 FLAG
	SJMP	AGAIN
	

;-------CONVERTING BIN(HEX) TO DEC (00-FF TO 000-255)

BIN_DEC_CONVRT:
	MOV	R0, #RAM_ADDR
	MOV	A, P2
	MOV	B, #10
	DIV	AB
	MOV	@R0, B
	INC	R0
	MOV	B, #10
	DIV	AB
	MOV	@R0, B
	INC	R0
	MOV	@R0, A
	RET
	
;-------CONVERTING DEC DIGITS TO DISPLAYABLE ASCII DIGITS

DEC_ASCI_CONVRT:
	MOV	R0, #RAM_ADDR
	MOV	R1, #ASCI_RSULT
	MOV	R2, #3
BACK:	MOV	A, @R0
	ORL	A, #30H
	MOV	@R1, A
	INC	R0
	INC	R1
	DJNZ	R2, BACK
	RET
	
;-------SERIAL DATA TRANSFER.

SEND:	MOV	SBUF, 50H
	MOV	SBUF, 51H
	MOV	SBUF, 52H
H_1:	JNB	TI, H_1
	CLR	TI
	RET
	END 
