$MOD51
;************************************************************************
;* BACA 8 CHANNEL ADC DATA (ADC0808/0809) OLEH DST-51 DAN KIRIM KE SERIAL
;* PC
;* Registers:
;*       - DPTR  : DPH.5 ... DPH.7 --> ADC Address
;*               : DPL.0 ... DPL.2 --> ADC Channel
;*       - A     : Data
;*       - B     : Delay
;* 
;* DST-51 Internal routine yang digunakan:
;*       - Init_Serial
;*       - Serial_Out
;*       - ASCII_Out
;* Program ini digunakan untuk hanya KIT ADC-0809 Testing 
;* Design by: Paulus Andi Nalwan, ST
;**************************************

        CSEG
ASCII_Out	EQU	197H
Init_Serial	EQU	1B8H
Serial_Out	EQU	1C8H

	Org	2000H
	Ajmp	Start
	Org	2003H		;External INT0
	Reti
	Org	200BH		;Timer 0 Interrupt
	Reti
	Org	2013H		;External INT1
	Reti
	Org	201BH		;Timer 1 Interrupt
	Reti
	Org	2023H		;Serial I/O Interrupt
	Reti

Start:
	Mov	Dptr,#08000H	;ADC pada alamat 800XH, CS4 pada DST-51
	Lcall	Init_Serial	;Inisial Serial Port

Loop:
	Acall	ADC		;Akses ADC
	Acall	Delay		;
	Mov	A,#' '		;
	Lcall	Serial_Out	;Kirim Spasi
	Inc	Dptr		;Tunjuk ke channel berikut

	Mov	A,DPL		;
	Cjne	A,#08H,Loop	;Channel 8? Belum Loop
        Ajmp    $               ;Berhenti

ADC:
	Mov	A,#00H			;Start Conversion
	Movx	@Dptr,A			;
        Jb      INT0,$                  ;Tunggu EOC
	Acall	Delay
	Mov	A,#00H			;Read Convert Data
	Movc	A,@A+Dptr		;
	Lcall	ASCII_Out		;Send to Serial Out
	Ret

Delay:
	Push	B
	Mov	B,#0FFH
        Djnz    B,$
	Pop	B
	Ret
        END
