Organisasi Memori Software Mikrokontroler AT89S52

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