9. Pena 30 adalah ALE Address Latch Enable yang digunakan untuk menahan alamat memori eksternal selama pelaksanaan memori eksternal.
10. Pena 31 EAVPP. Bila diberi logika tinggi, mikrokontroler akan melaksanakan instruksi dari Flash PEROM internal ketika isi program counter kurang dari 4096. Bila diberi
logika rendah, mikrokontroler akan melaksanakan seluruh instruksi dari memori program eksternal. Pin ini juga menerima tegangan 12 volt VPP selama pemrograman Flash.
11. Pena 32 sampai 39 Port 0 merupakan port paralel 8 bit open drain dua arah. Bila digunakan untuk mengakses memori eksternal, port ini akan memultipleks alamat memori
dengan data. 12. Pena 40 Vcc dihubungkan ke Vcc + 5 Volt.
2.11.2 Organisasi Memori
AT89S52
Mikrokontroler AT89S52 mempunyai pembagian ruang alamat untuk program dan data. Memori data terletak pada ruang alamat terpisah dari memori. Memori yang dapat diakses
secara internal adalah memori RAM internal dan Downloadable Flash Memori sebagai memori program internal. Selain itu mikrokontroler juga dapat mengakses memori program
dan memori data dari luar.
2.11.3 Software Mikrokontroler AT89S52
Sebuah mikrokontroler tidak akan bekerja bila tidak diberikan program kepadanya. Program tersebut daftar apa yang harus dilakukan oleh mikrokontroler. Sebuah
mikrokontroler yang telah bekerja baik dengan suatu program belum tentu akan bekerja seperti semula jika programnya diganti.
Operand dan Ekspresi
Bentuk umum semua instruksi dalam assembler MCS 51 dapat dituliskan sebagai berikut :
[label:] Mnemonic [operand] [,operand] [,operand] [;komentar]
Universitas Sumatera Utara
Jumlah operand tergantung pada tipe Mnemonic.
Simbol Assembler Khusus
Assembler telah menyediakan beberapa symbol untuk menunjukkan register tertentu sebagai operand. Tabel berikut menunjukkan simbol assembler khusus.
Simbol khusus Arti
A Akumulator R0 sampai R7
Register Serbaguna DPTR
Data pointer. Register 16 bit
PC Program counter. Register 16 bit yang berisi alamat
instruksi berikutnya yang akan dijalankan. C Carry
flag
AB Akumulatorregister B. Pasangan register untuk
perkalian dan pembagian. Tabel 2.6 Simbol Assembler Khusus
Pengalamatan Langsung
Pengalamatan langsung dilakukan dengan memberikan nilai ke suatu register secara langsung. Untuk melaksanakan hal tersebut digunakan tanda .
MOV A,01H : Isi akumulator dengan bilangan 01H.
MOV DPTR,19AB : Isi register DPTR dengan bilangan 19ABH.
Pengalamatan Bit
Pengalamatan bit adalah penunjukan alamat lokasi bit baik dalam RAM internal byte 32 sampai 47 atau bit perangkat keras. Untuk melakukan pengalamatan bit digunakan symbol
titik ., misalnya FLAGS.3, 40.5, 21H.5, dan ACC.7. SETB TR1
: Set TR1 Timer 1 on.
Universitas Sumatera Utara
Perintah DIV AB
Bilangan biner 8 bit dalam Akumulator
A
dibagi dengan bilangan biner 8 bit dalam register
B
. Hasil pembagian berupa bilangan biner 8 bit ditampung di Akumulator, sedangkan sisa pembagian berupa bilangan biner 8 bit ditampung di register
B
. Bit
OV
dalam
PSW
Program Status Word dipakai untuk menandai nilai sebelum pembagian yang ada dalam register
B
. Bit
OV
akan bernilai ‘
1
’ jika register
B
asalnya bernilai
00
.
Penambahan Satu INC
Proses inkremen merupakan proses penambahan satu pada sisi suatu register atau memori.
INC A : A
← A + 1 Pemakaian instruksi inkremen menghemat pemakaian memori karena instruksi INC
merupakan instruksi 1 byte tidak memakai operand.
Logika AND ANL
Instruksi ini melakukan proses logika AND antara suatu register dengan register, register dengan data, carry flag dengan isi suatu alamat bit, dan lain – lain. Operasi logika
AND
banyak dipakai untuk me-‘ ’-kan beberapa bit tertentu dari sebuah bilangan biner 8 bit,
caranya dengan membentuk sebuah bilangan biner 8 bit sebagai data konstan yang di-
ANL
- kan bilangan asal. Bit yang ingin di-‘
’-kan diwakili dengan ‘ ’ pada data konstan, sedangkan
bit lainnya diberi nilai ‘
1
’, misalnya. Instruksi
ANL P1,01111110
akan mengakibatkan bit 0 dan bit 7 dari Port 1
P1
bernilai ‘ ’ sedangkan bit-bit lainnya tetap tidak berubah nilai.
Logika NOT Komplemen, CPL
Instruksi ini melakukan proses logika NOT pada suatu register, carry flag, atau isi suatu alamat bit. Sebagai contoh, misalnya akumulator berisi 0101 1100
B
. Instruksi CPL A akan menyebabkan isi akumulator menjadi 1010 0011B atau A3H.
Universitas Sumatera Utara
Instruksi JB JNB JBC
Instruksi
JB
Jump on Bit Set, instruksi
JNB
Jump on not Bit Set dan instruksi
JBC
Jump on Bit Set Then Clear Bit merupakan instruksi Jump bersyarat yang memantau nilai- nilai bit tertentu. Bit-bit tertentu bisa merupakan bit-bit dalam register status maupun kaki
input mikrokontroler MCS51.
CJNE Compare Jump If Not Equal
Instruksi ini akan membandingkan isi register, atau isi memori dengan suatu data. Bila sama, instruksi selanjutnya yang akan dituju. Bila tidak sama, instruksi yang ditunjuk oleh
label yang akan dilaksanakan. Sebagai contoh : CJNE R0,02H, Tak_Sama
Berarti jika R0 tidak sama dengan 02H maka instruksi akan menuju ke alamat dengan lebel Tak_Sama.
DJNZ Decrement and Jump If Not Zero
Instruksi ini akan mengurangi isi register atau memori dengan satu. Bila sudah 0, instruksi selanjutnya yang akan dilaksanakan. Bila belum 0, instruksi dilanjutkan ke label.
Sebagai contoh : DJNZ R1, Ulangi
Berarti jika R1 tidak sama dengan nol, setelah dikurangi 1, pelaksanaan instruksi harus melompat ke tabel ulangi.
JB Jump If Bit Is Set
Instruksi ini akan menguji suatu bit. Bila isinya 1, instruksi akan menuju label. Bila isinya 0, instruksi selanjutnya yang akan dieksekusi. Sebagai contoh, dalam instruksi.
JB P1.0,Ulangi Bila P1.0 bit 0 port 1 = 1, instruksi akan menuju ke label Ulangi.
Universitas Sumatera Utara
JNB Jump If Bit Is Not Set
Instruksi ini menguji suatu alamat bit. Bila isinya 0, eksekusi akan menuju alamat kode. Jika isinya 1, instruksi selanjutnya yang akan dilaksanakan.
JNZ Jump If Accumulator Is Not Zero
Instruksi ini menguji akumulator. Bila tidak sama dengan 0, eksekusi menuju alamat kode. Jika sama dengan 0, instruksi selanjutnya yang akan dilaksanaka.
Percabangan Tanpa Syarat
Instruksi ini meliputi SJMP Short Jump dan LJMP Long Jump. Sebagai contoh, dalam isntruksi
SJMP Awal
Eksekusi program akan menuju label awal tanpa syarat apa pun.
Kelompok Instruksi untuk sub-rutin
Instruksi-instruksi untuk membuat dan memakai sub-rutinmodul program, selain melibatkan Program Counter, melibatkan pula Stack yang diatur oleh Register Stack Pointer.
Sub-rutin merupakan suatu potong program yang karena berbagai pertimbangan dipisahkan dari program utama. Bagian-bagian di program utama akan ‘memanggil’
CALL
sub-rutin, artinya mikrokontroler sementara meninggalkan alur program utama untuk mengerjakan instruksi-instruksi dalam sub-rutin, selesai mengerjakan sub-rutin
mikrokontroler kembali ke alur program utama. Satu-satunya cara membentuk sub-rutin adalah memberi instruksi
RET
pada akhir potongan program sub-rutin. Program sub-rutin di-’panggil’ dengan instruksi
ACALL
atau
LCALL
. Agar nantinya mikrokontroler bisa meneruskan alur program utama, pada saat
menerima instruksi
ACALL
atau
LCALL
, sebelum mikrokontroler pergi mengerjakan sub- rutin, nilai Program Counter saat itu disimpan dulu ke dalam
Stack
Stack adalah sebagian
Universitas Sumatera Utara
kecil dari memori-data yang dipakai untuk menyimpan nilai Program Counter secara otomatis, kerja dari Stack dikendalikan oleh Register Stack Poiner.
Selanjutnya mikrokontroler mengerjakan instruksi-instruksi di dalam sub-rutin sampai menjumpai instruksi
RET
yang berfungsi sebagai penutup dari sub-rutin. Saat menerima instruksi
RET
, nilai asal Program Counter sebelum mengerjakan sub-rutin yang disimpan di dalam Stack, dikembalikan ke Program Counter sehingga mikrokontroler bisa meneruskan
pekerjaan di alur program utama. Instruksi
ACALL
dipakai untuk me-‘manggil’ program sub-rutin dalam daerah memori-program 2 KiloByte yang sama, setara dengan instruksi
AJMP
yang sudah dibahas di atas. Sedangkan instruksi
LCALL
setara dengan instruksi
LCALL
, yang bisa menjangkau seluruh memori-program mikrokontroler MCS51 sebanyak 64 KiloByte. Tapi tidak ada
instrusk
SCALL
yang setara dengan instruksi
SJMP
. Program untuk AT89C1051 dan AT89C2051 tidak perlu memakai instruksi
LCALL
. Instruksi
RET
dipakai untuk mengakhiri program sub-rutin, di samping itu masih ada pula instruksi
RETI
, yakni instruksi yang dipakai untuk mengakhiri Program Layanan Interupsi Interrupt Service Routine, yaitu semacam program sub-rutin yang dijalankan
mikrokontroler pada saat mikrokontroler menerima sinyal permintaan interupsi.
Catatan
: Saat mikrokontroler menerima sinyal permintaaan interupsi, mikrokontroler
akan melakukan satu hal yang setara dengan intruksi
LCALL
untuk menjalankan Program Layanan Interupsi dari sinyal interupsi bersangkutan. Di samping itu, mikrokontroler juga
me-‘mati’-kan sementara mekanisme layanan interupsi, sehingga permintaan interupsi berikutnya tidak dilayani. Saat menerima instruksi
RETI
, makanisme layanan interusi kembali diaktipkan dan mikrokontroler melaksanakan hal yang setara dengan instruksi
RET
.
Universitas Sumatera Utara
BAB III SISTEM KERJA
3.1 Pengertian Umum
Sistem kendali jarak jauh adalah suatu sistem yang berfungsi untuk pengontrolan jarak jauh, dimana masing-masing output yang dikontrol harus sesuai dengan kode
kontrolnya masing-masing. Sistem ini terdiri dua instrumen penting, pertama telepon cordless dan instrumen pengendali.
Instrumen pengendali inilah sebetulnya perangkat paling utama. Adapun instrumen ini dibangun dari beberapa subsistem, yakni subsistem mikrokontroler, DTMF Decoder, sensor
optocoupler, sensor LDR, sensor infrared, buzzer, darlington transistor dan power supply. Prinsip kerja secara umum dari alat ini adalah Alat ini dapat bekerja dengan
memanfaatkan sumber tegangan dari line telepon ataupun dari saluran buatan untuk memberi sinyal nada telepon yang berfungsi untuk membangkitkan sinyal DTMF Dual Tone Multy
Frequensi dari tombol pesawat telepon sehingga memungkinkan untuk mengaplikasikan alat ini tanpa menggunakan line telepon. Alat ini hanya mengubah sinyal DTMF dari tombol
pesawat telepon menjadi biner 4bit yang mana sinyal tersebut akan diolah oleh mikrokontroler sesuai dengan program yang telah dibuat untuk mengontrol beban onoff,
diantaranya : Tombol 1 s.d 8 + Tombol = Menghidupkan beban sesuai dengan tombol yang ditekan
Tombol 1 s.d 8 + Tombol = Mematikan beban sesuai dengan tombol yang ditekan Tombol 0 + Tombol = Menghidupkan seluruh beban
Tombol 0 + Tombol = Mematikan seluruh beban Tombol 9 + Tombol = Mengaktifkan alarm
Tombol 9 + Tombol = Me nonaktifkan alarm
Universitas Sumatera Utara