								ORG		00H

	CALL	RS232_SET

LOOP:						 ;------------------------------
	MOV		R0,#40H
	MOV		R1,#10H

LOOP1:
	CALL	DELAY
	CLR		RI
	JNB		RI,$		 

	MOV		A,SBUF
	MOV		@R0,A
    INC		R0
	INC		R0
	DJNZ	R1,LOOP1 
	;MOV	40H,#90
	;MOV	42H,#207
	;MOV	44H,#115
	;MOV	46H,#93
	;MOV	48H,#200
	;MOV	4AH,#97
	;MOV	4CH,#168
	;MOV	4EH,#170
	;MOV	50H,#140
	;MOV	52H,#196
	;MOV	54H,#105
	;MOV	56H,#178
	;MOV	58H,#123
	;MOV	5AH,#134
	;MOV	5CH,#143
	;MOV	5EH,#155

	CALL	SORT
	CALL	DIF
	CALL	DATA_CO
	CALL	OUT
	JMP		THEND			  ;---------------------------------

RS232_SET:					  ;-------------------------------
    MOV     TMOD,#00100000B
    MOV     TH1,#230
    MOV     TL1,#230
	SETB	TR1
	MOV     SCON,#01110000B
	RET

DELAY:						   ;----------------------------------
	MOV		R5,#5
D1:	MOV		R6,#10
D2:	MOV		R7,#10
	DJNZ	R7,$
	DJNZ	R6,D2
	DJNZ	R5,D1
	RET							;--------------------------

SORT:							;-----------------------
	MOV		41H,#00H
	MOV		43H,#01H
	MOV		45H,#02H
	MOV		47H,#03H
	MOV		49H,#04H
	MOV		4BH,#05H		
	MOV		4DH,#06H
	MOV		4FH,#07H
	MOV 	51H,#08H
	MOV		53H,#09H
	MOV		55H,#0AH
	MOV		57H,#0BH
	MOV		59H,#0CH
	MOV		5BH,#0DH		
	MOV		5DH,#0EH
	MOV		5FH,#0FH
;起始迴圈
	MOV 	R2,#0FH
	MOV 	R3,#20H
OUTLOOP:	
	DEC 	R3
	DEC 	R3	
	MOV 	R4,#0
INLOOP:		
	MOV 	A,#40H
	ADD 	A,R4
	MOV 	R0,A
	MOV 	A,@R0
	MOV 	R5,A
	INC		R4
	INC		R4
	INC 	R0
	INC		R0
	CLR 	C
	MOV 	A,@R0
	SUBB	A,R5
	JNC 	NOTEXCHANCG
;資料交換
	MOV 	A,@R0
	MOV 	R5,A
	DEC 	R0
	DEC		R0
	MOV 	A,@R0
	INC 	R0
	INC		R0
	MOV 	@R0,A
	MOV 	A,R5
	DEC 	R0
	DEC		R0
	MOV 	@R0,A
;編號交換
	INC		R0
	MOV		A,@R0
	MOV		R5,A
	INC		R0
	INC		R0
	MOV		A,@R0
	DEC		R0
	DEC		R0
	MOV		@R0,A
	INC		R0
	INC		R0
	MOV		A,R5
	MOV		@R0,A
	DEC		R0
	DEC		R0
	DEC		R0
NOTEXCHANCG:
	MOV 	A,R4
	CLR 	C
	SUBB 	A,R3
	JNZ 	INLOOP
	DJNZ 	R2,OUTLOOP
	RET						   ;------------------------

DIF:						   ;------------------------
	MOV 	R3,#20H
	DEC		R3
	DEC		R3
	CLR		C
	MOV 	R4,#0
	MOV		R7,5EH
INLOOP1:
	
	CLR		C	
	MOV 	A,#5EH
	SUBB 	A,R4
	MOV 	R0,A
	MOV 	A,@R0
	MOV 	R5,A
	INC		R4
	INC		R4
	DEC 	R0
	DEC		R0
	MOV 	A,@R0
	MOV		R6,A
	MOV		A,R5
	SUBB	A,R6
	INC		R0
	INC		R0
	MOV 	@R0,A
	MOV 	A,R4
	CLR 	C
	SUBB 	A,R3
	JNZ 	INLOOP1
	RET						   ;------------------------

DATA_CO:
	MOV		R3,#20H
	MOV		R4,#0
DATA_SORT:
	MOV		A,#40H
	ADD		A,R4
	MOV		R0,A
	MOV		A,@R0
	MOV		DPTR,#65535
	MOV		B,#20
	MUL		AB
	CLR		C
	MOV		R1,A
	MOV		A,DPL
	SUBB	A,R1
	MOV		DPL,A
	MOV		R1,B
	MOV		A,DPH
	SUBB	A,R1
	MOV		DPH,A
	CLR		C	
	MOV		A,R0
	ADD		A,#20H
	INC		A
	MOV		R0,A
	MOV		A,DPL
	MOV		@R0,A
	DEC		R0
	MOV		A,DPH
	MOV		@R0,A
	MOV		A,R0
	SUBB	A,#20H
	MOV		R0,A
	INC		R4
	INC		R4
	MOV		A,R4
	CLR		C
	SUBB	A,R3
	JNZ		DATA_SORT
	RET


OUT:						   ;--------------------------
	MOV		R3,#20H
	MOV		R4,#0
	MOV		P0,#0FFH
	MOV		P2,#0FFH
	MOV		TMOD,#00000001B
HI_OUT:
	MOV		A,#60H
	ADD		A,R4
	MOV		R0,A
	MOV		TH0,@R0
	INC		R0
	MOV		TL0,@R0
	CALL	T0_INT
	CLR		C
	MOV		A,R0
	SUBB	A,#20H
	MOV		R0,A
	MOV		A,@R0
	RL		A
	MOV		DPTR,#TBL
	JMP		@A+DPTR
TBL:AJMP	O1
	AJMP	O2
	AJMP	O3
	AJMP	O4
	AJMP	O5
	AJMP	O6
	AJMP	O7
	AJMP	O8
	AJMP	O9
	AJMP	O10
	AJMP	O11
	AJMP	O12
	AJMP	O13
	AJMP	O14
	AJMP	O15
	AJMP	O16
OP:	INC		R4
	INC		R4
	MOV		A,R4
	CLR		C
	SUBB	A,R3
	JNZ		HI_OUT
	JMP		LOW_OUT

LOW_OUT:
	MOV		DPTR,#25576
	MOV		A,R7
	MOV		B,#20
	MUL		AB
	CLR		C
	MOV		R1,A
	MOV		A,DPL
	ADD		A,R1
	MOV		DPL,A
	MOV		R1,B
	MOV		A,DPH
	ADDC	A,R1
	MOV		DPH,A
	MOV		TL0,DPL
	MOV		TH0,DPH
	CALL	T0_INT
	MOV		P0,#11111111B
	MOV		P2,#11111111B	
	JMP		OUT
	RET				   ;-------------------------

T0_INT:
	SETB	TR0
	JNB		TF0,$
	CLR		TF0
	RET				   ;----------------------------
	
O1:	CLR		P0.0		   ;------------------------------
	JMP		OP
O2:	CLR		P0.1
	JMP		OP
O3:	CLR		P0.2
	JMP		OP
O4:	CLR		P0.3
	JMP		OP
O5:	CLR		P0.4
	JMP		OP
O6:	CLR		P0.5
	JMP		OP
O7:	CLR		P0.6
	JMP		OP
O8:	CLR		P0.7
	JMP		OP
O9:	CLR		P2.0
	JMP		OP
O10:CLR		P2.1
	JMP		OP
O11:CLR		P2.2
	JMP		OP
O12:CLR		P2.3
	JMP		OP
O13:CLR		P2.4
	JMP		OP
O14:CLR		P2.5
	JMP		OP
O15:CLR		P2.6
	JMP		OP
O16:CLR		P2.7
	JMP		OP
						;----------------------------------
THEND:
	END