$MOD51

	Org	50H
	CSEG




;=============
;HD44780
;=============
GeserDisplay_Kanan		EQU	05BDH             
;Menggeser tampilan LCD HD44780 ke kanan

GeserDisplay_Kiri		EQU	05C4H             
;Menggeser tampilan LCD HD44780 ke kiri

Posisi_Awal			EQU	05CBH             
;Mengatur posisi cursor LCD ke posisi awal

GeserCursor_Kiri		EQU	05D2H             
;Menggeser Cursor LCD ke kiri

GeserCursor_Kanan		EQU	05D9H             
;Menggeser Cursor LCD ke kanan

KirimPesan_LCD			EQU	05E0H             
;Mengirim data di alamat yang ditunjuk oleh DPTR ke LCD hingga data 0F
;- DPTR diisi dengan alamat awal data yang dikirim
;- Akhir data adalah 0FH

Init_LCD			EQU	05ECH             
;Inisialisasi LCD

Kirim_Perintah			EQU	062BH             
;Mengirim data ke register perintah LCD
;- Data diisi di akumulator

Kirim_Karakter			EQU	064AH             
;Mengirim data ke register data LCD
;- Data diisi di akumulator

Baris2				EQU	0654H             
;Memindah posisi cursor ke baris 2

Ambil_ScanCode			EQU	0865H
;Mengambil 1 byte scan code keyboard
;- Nilai scan code berada pada akumulator

KirimScanCode			EQU	08A3H
;Mengirim 1 byte scan code keyboard
;- Nilai scan code berada pada akumulator

InitKeyboard			EQU	08C4H
;Inisialisasi Keyboard

CapslockLED				EQU	08DDH
;Mengaktifkan LED Caps Lock Keyboard


SensorUtara Bit P1.0
SensorTimurLaut Bit P1.1
SensorTimur Bit P1.2
SensorTenggara  Bit P1.3
SensorSelatan   Bit P1.4
SensorBaratDaya Bit P1.5
SensorBarat Bit P1.6
SensorBaratLaut Bit P1.7
ROM			EQU	2000H

	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				;
Start:
	Lcall	Init_LCD			;Inisial LCD

Loop:
    Jnb  SensorUtara,BukanUtara
    Mov DPTR,#PesanUtara
    Lcall   KirimPesan_LCD
    Lcall   PosisiAwal_LCD
    Ajmp    Loop

BukanUtara:
    Jnb  SensorTimurLaut,BukanTimurLaut
    Mov DPTR,#PesanTimurLaut
    Lcall   KirimPesan_LCD
    Lcall   PosisiAwal_LCD
    Ajmp    Loop
    
BukanTimurLaut:
    Jnb  SensorTimur,BukanTimur
    Mov DPTR,#PesanTimur
    Lcall   KirimPesan_LCD
    Lcall   PosisiAwal_LCD
    Ajmp    Loop

BukanTimur:
    Jnb  SensorTenggara,BukanTenggara
    Mov DPTR,#PesanTenggara
    Lcall   KirimPesan_LCD
    Lcall   PosisiAwal_LCD
    Ajmp    Loop

BukanTenggara:
    Jnb  SensorSelatan,BukanSelatan
    Mov DPTR,#PesanSelatan
    Lcall   KirimPesan_LCD
    Lcall   PosisiAwal_LCD
    Ajmp    Loop

BukanSelatan:
    Jnb  SensorBaratDaya,BukanBaratDaya
    Mov DPTR,#PesanBaratDaya
    Lcall   KirimPesan_LCD
    Lcall   PosisiAwal_LCD
    Ajmp    Loop

BukanBaratDaya:
    Jnb  SensorBarat,BukanBarat
    Mov DPTR,#PesanBarat
    Lcall   KirimPesan_LCD
    Lcall   PosisiAwal_LCD
    Ajmp    Loop

BukanBarat:
    Jnb  SensorBaratLaut,BukanBaratLaut
    Mov DPTR,#PesanBaratLaut
    Lcall   KirimPesan_LCD
    Lcall   PosisiAwal_LCD
    Ajmp    Loop

BukanBaratLaut:
    Lcall   Init_LCD
    Ajmp    Loop

PesanUtara:
    DB  'Utara',0FH

PesanTimurLaut:
    DB  'Timur Laut',0FH

PesanTimur:
    DB  'Timur',0FH

PesanTenggara:
    DB  'Tenggara',0FH

PesanSelatan:
    DB  'Selatan',0FH

PesanBaratDaya:
    DB  'Barat Daya',0FH

PesanBarat:
    DB  'Barat',0FH

PesanBaratLaut:
    DB  'Barat Laut',0FH

    END
