	.CODE
	include	equdst52
	Org	ROM			;Reset Vector
	Ajmp	Start			;
	Org	ROM+3H			;External Interrupt 0 Vector
	Reti				;
	Org	ROM+0BH			;Timer 0 Interrupt Vector
	Reti
	Org	ROM+13H			;External Interrupt 1 Vector
	Reti				;
	Org	ROM+1BH			;Timer 1 Interrupt Vector
	Reti				;
	Org	ROM+23H			;Serial Interrupt Vector
	Reti				;


Rec	Bit	RXD
PanjangData	EQU	26

Start:
	Mov	P1,#00H
	Lcall	Init_LCD
	Acall	InitTimer		;Inisial timer untuk trap data
Loop:
	Acall	AmbilRemote
	Cjne	A,#7FH,$+3		;Kode di bawah 80H, abaikan
	Jc	Loop			;
	Acall	TunjukTabelTombol	;Tunjuk tabel sesuai kode yang diterima
	Movx	A,@DPTR			;Bila tabel kosong, abaikan
	Jz	Loop			;
	Lcall	Delay_1detik
	Mov	B,A
	Mov	DPTR,#TabelPerintah
	Acall	CariPerintah1B
	Jc	Loop
	Jmp	@A+DPTR

Kanal1:
	Cpl	P1.0
	lcall	0cbh
	Ajmp	Loop

Kanal2:
	Cpl	P1.1
	Ajmp	Loop
Kanal3:
	Cpl	P1.2
	Ajmp	Loop
Kanal4:
	Cpl	P1.3
	Ajmp	Loop
Kanal5:
	Cpl	P1.4
	Ajmp	Loop
Kanal6:
	Cpl	P1.5
	Ajmp	Loop
Kanal7:
	Cpl	P1.6
	Ajmp	Loop
Kanal8:
	Cpl	P1.7
	Ajmp	Loop

TunjukTabelTombol:
	Mov	DPTR,#TabelTombol
	Clr	C
	Subb	A,#80H
	Mov	B,#7
	Mul	AB

	Clr	C
	Add	A,DPL
	Jnc	TidakIncDPH
	Inc	DPH
TidakIncDPH:
	Mov	DPL,A
	Mov	A,B
	Add	A,DPH
	Mov	DPH,A
	Ret		

AmbilRemote:
	Acall	CekStartBit		;Tunggu Start Bit
	Mov	R7,#8			;Panjang data bit = 8

AmbilData:
	Push	A			;Ambil 1 bit
	Acall	Bit			;
	Pop	A			;
	Rrc	A			;Geser ke akumulator
	Djnz	R7,AmbilData		;Lakukan 8x
	Clr	TR0
	Ret

CekStartBit:
	Jb	Rec,$
	Setb	TR0
	Jnb	Rec,$
	Mov	A,TH0
	Cjne	A,#08H,$+3
	Jnc	CekStartBitSelesai
	Clr	TR0
	Mov	TH0,#00
	Mov	TL0,#00
	Ajmp	CekStartBit

CekStartBitSelesai:
	Clr	TR0
	Mov	TH0,#00
	Mov	TL0,#00
	Ret


Bit:
	Jb	Rec,$
	Setb	TR0
	Jnb	Rec,$
	Clr	TR0
	Mov	A,TH0
	Cjne	A,#03,$+3
	Jnc	Bit1
	Clr	C
	Mov	TH0,#0
	Mov	TL0,#0
	Ret

Bit1:
	Setb	C
	Mov	TH0,#0
	Mov	TL0,#0
	Ret

InitTimer:
	Mov	TH0,#00			;
	Mov	TL0,#00			;
	Push	A			;
	Mov	A,TMOD
	Anl	A,#0F0H
	Orl	A,#01H
	Mov	TMOD,A
	Pop	A
	Ret

	include	cariprnt

;===========================================
; TABEL TOMBOL-TOMBOL REMOTE CONTROL TIPE RM-827S
; - Data-data yang masih berisi 00 adalah kode cadangan untuk remote control
; - Sony tipe yang lain
;===========================================

TabelTombol:
	DB	'1     ',0FH
	DB	'2     ',0FH
	DB	'3     ',0FH
	DB	'4     ',0FH
	DB	'5     ',0FH
	DB	'6     ',0FH
	DB	'7     ',0FH
	DB	'8     ',0FH
	DB	'9     ',0FH
	DB	'0     ',0FH
	DB	0,0,0,0,0,0,0	;8a
	DB	0,0,0,0,0,0,0	;8b
	DB	'1-    ',0FH	
	DB	'2-    ',0FH	
	DB	0,0,0,0,0,0,0	;8e
	DB	0,0,0,0,0,0,0	;8f
	DB	'Prog+ ',0FH
	DB	'Prog- ',0FH
	DB	'Vol+  ',0FH
	DB	'Vol-  ',0FH
	DB	0,0,0,0,0,0,0
	DB	'Power ',0FH
	DB	'Pic Md',0FH
	DB	'A/B   ',0FH
	DB	0,0,0,0,0,0,0	;98
	DB	0,0,0,0,0,0,0	;99
	DB	0,0,0,0,0,0,0	;9a
	DB	0,0,0,0,0,0,0	;9b
	DB	0,0,0,0,0,0,0	;9c
	DB	0,0,0,0,0,0,0	;9d
	DB	0,0,0,0,0,0,0	;9e
	DB	0,0,0,0,0,0,0	;9f
	DB	0,0,0,0,0,0,0	;a0
	DB	0,0,0,0,0,0,0	;a1
	DB	0,0,0,0,0,0,0	;a2
	DB	0,0,0,0,0,0,0	;a3
	DB	0,0,0,0,0,0,0	;a4
	DB	'TV/VID',0FH	;a5
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0	
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0

	DB	'Sleep ',0FH	;b6
	DB	0,0,0,0,0,0,0	;b7
	DB	0,0,0,0,0,0,0	;b8
	DB	0,0,0,0,0,0,0	;b9
	DB	0,0,0,0,0,0,0	;ba
	DB	0,0,0,0,0,0,0	;bb
	DB	0,0,0,0,0,0,0	;bc
	DB	0,0,0,0,0,0,0	;bd
	DB	0,0,0,0,0,0,0	;be
	DB	0,0,0,0,0,0,0	;bf
	DB	0,0,0,0,0,0,0	;c0
	DB	0,0,0,0,0,0,0	;c1
	DB	0,0,0,0,0,0,0	;c2
	DB	0,0,0,0,0,0,0	;c3
	DB	0,0,0,0,0,0,0	;c4
	DB	0,0,0,0,0,0,0	;c5
	DB	0,0,0,0,0,0,0	;c6
	DB	0,0,0,0,0,0,0	;c7
	DB	0,0,0,0,0,0,0	;c8
	DB	0,0,0,0,0,0,0	;c9
	DB	0,0,0,0,0,0,0	;ca
	DB	0,0,0,0,0,0,0	;cb	
	DB	0,0,0,0,0,0,0	;cc
	DB	0,0,0,0,0,0,0	;cd
	DB	0,0,0,0,0,0,0	;ce
	DB	0,0,0,0,0,0,0	;cf
	DB	0,0,0,0,0,0,0	;d0
	DB	0,0,0,0,0,0,0	;d1
	DB	0,0,0,0,0,0,0	;d2	
	DB	0,0,0,0,0,0,0	;d3
	DB	0,0,0,0,0,0,0	;d4
	DB	0,0,0,0,0,0,0	;d5
	DB	0,0,0,0,0,0,0	;d6
	DB	0,0,0,0,0,0,0	;d7
	DB	0,0,0,0,0,0,0	;d8
	DB	0,0,0,0,0,0,0	
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0	
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0	
	DB	0,0,0,0,0,0,0
	DB	'+     ',0FH
	DB	'-     ',0FH
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	0,0,0,0,0,0,0
	DB	'Select',0FH

TabelPerintah:
	DB	'1'
	DW	Kanal1
	DB	'2'
	DW	Kanal2
	DB	'3'
	DW	Kanal3
	DB	'4'
	DW	Kanal4
	DB	'5'
	DW	Kanal5
	DB	'6'
	DW	Kanal6
	DB	'7'
	DW	Kanal7
	DB	'8'
	DW	Kanal8
	DB	0
