
TRANSMITTER:

DATA0	EQU	28H
TEMP	EQU	31H
TE	EQU	P2.0		;TRANSMIT ENABLE PIN
;
	ORG	0000H
	AJMP	START
;
	ORG	0100H
START:	CLR	TE		;TRANSMIT ENABLE PIN OF HT640
	MOV	DATA0,#16H
MAIN:	MOV	A,DATA0
	ACALL	SEND
	AJMP	MAIN
SEND:	MOV	P1,A		;PUT DATA0 TO THE DATA BUS (D0-D7 OF HT 640)
	SETB	TE
	ACALL	WAIT
	ACALL	WAIT
	CLR	TE		;GIVE AN INTERRUPT TO TE PIN TO START RF COMMUNICATION
	ACALL	WAIT
	ACALL	WAIT
	RET
WAIT:	MOV	TEMP,#0FFH
HERE:	DEC	TEMP
	MOV	A,TEMP
	JNZ	HERE
	RET
END

WAIT:	MOV	R0,#0FFH
	DJNZ	R0,$
	RET

RECEIVER:

RCV	EQU	28H		;DATA FROM RF
TV	EQU	P2.0		;DATA IS RECEIVED INTERRUPT
LED	EQU	P2.1		;CORRECT DATA IS RECEIVED LED
;
	ORG	0000H
	AJMP	START
;
	ORG	0100H
START:	CLR 	TV 		;CLEAR FLAG
	SETB	LED		;TURN OFF LED
	CLR	C
MAIN:	JNB	TV,MAIN		;IF THERE IS NO COMMING DATA WAIT HERE
	MOV	RCV,P1		;TAKE THE DATA FROM DATA BUS (D0-D7 OF HT648L)
	ACALL	WAIT
	MOV	A,RCV
	SUBB	A,#16H
	JNZ	EXIT		;EXIT IF THE DATA DOESNT MATCH
	CLR	LED		;TURN ON LED IF THE DATA IS EQUAL TO 16H
	ACALL	LONGWAIT
EXIT:	AJMP	START

WAIT:	MOV	R1,#0FFH
HERE:	DEC	R1
	MOV	A,R1
	JNZ	HERE
	RET

LONGWAIT:
	MOV	R1,#0FFH
LONG1:	MOV	R2,#0FFH
LONG2:	DEC	R2
	MOV	A,R2
	JNZ	LONG2
	DEC	R1
	JNZ	LONG1
	RET
END

LONGWAIT:
	MOV	R1,#0FFH
LONG1:	MOV	R2,#0FFH
	DJNZ	R2,$
	DJNZ	R1,LONG1
	RET
