Judul :
BELAJAR MIKROKONTOLER AT89C51/52/55 (Teori dan aplikasi) Agfianto Eko Putra Back Cover: Buku ini ditujukan bagi mereka yang ingin memanfaatkan mikrokontroler tipe CISC yaitu AT89C51/52/55 (seri AT89 dari Atmel, Inc.) dalam aplikasi pengontrolan elektronik. Selain itu juga dalam rangka memperkaya pustaka nasional dalam bidang elektronika maupun sistem elektronika. Buku yang terdiri dari 7 bagian ini mengupas tuntas AT89C51/52/55 mulai dari awal tentang arsitektur dasar keluarga AT89 atau seri MCS-51, set instruksi (termasuk cara pengeditan program hingga siap untuk disimpan ke dalam Flash PEROM AT89C), kanal paralel (termasuk karakteristik dari masing-masing port dan aplikasinya), karakteristik timer dan counter, kanal serial dan penanganan sistem interupsi. Program mikrokontroler disimpan ke dalam Flash PEROM-nya AT89, sekaligus bisa juga dihapus, keunggulan ini dapat dimanfaatkan sebagai sarana belajar mikrokontroler, karena tidak memerlukan memori program luar seperti EPROM, EEPROM dan lain sebagainya yang membutuhkan peralatan pengisian dan penghapusan yang merepotkan (dan mahal). Sehingga pada bagian terakhir dibahas secara singkat pembuatan alat untuk mengisi (sekaligus menghapus) program dari mikrokontroler AT89C51/52/55 menggunakan Pemrogram Easy Downloader 2.2, selain itu buku ini dilengkapi dengan CDROM yang berisi dokumentasi lengkap Pemrogram Easy Downloader 2.2 dan program pendukung untuk kompilasi dan informasi lainnya.
Kata Pengantar Edisi 2 Segala puja dan puji hanya saya haturkan kepada Alloh aza wa jalla yang telah memberikan karunia-Nya, sehingga Buku Edisi 2 ini dapat diselesaikan dengan baik. Sebelumnya perkenankan saya mengucapkan terima kasih secara pribadi kepada segenap pembaca Edisi 1 dimana saja berada, atas saran, kritikan dan diskusi selama ini. Juga kepada penerbit yang telah menerbitkan buku ini. Pada Edisi 2 ini tidak terlalu banyak berubah dari Edisi 1, kecuali lampiran yang pada Edisi 1 diisi dengan Datasheet Mikrokontroler AT89C51 dan 55, maka pada Edisi 2 ini dihilangkan seluruhnya, diganti dengan 4 Lampiran, yaitu: Keterangan CDROM pelengkap buku, Referensi Cepat Instruksi AT89, Referensi Detil Instruksi AT89 dan Register-register khusus AT89. Bagi para pembaca yang ingin tetap memiliki Datasheet tersebut dapat mencetak sendiri, karena di dalam CDROM telah diberikan secara lebih lengkap (bahkan jauh lebih lengkap). Selain itu rangkaian Easy Downloader pada Bagian VII telah diganti dengan yang lebih jelas. Keterangan-keterangan program juga diperjelas dengan menambahkan beberapa penjelasan singkat. Mungkin perlu diklarifikasikan bahwa produk Atmel keluarga seri AT89 terdiri dari AT89C51, AT89C52, AT89C55, AT89S8252, AT89S53, AT89C1051 dan AT89C2051.
Sehingga sangat dimungkinkan dengan belajar melalui buku ini, Anda dapat mencoba dan menggunakan mikrokontroler seri AT89 lainnya (selain AT89C51/52/55) dengan cara yang sama, hanyasaja beberapa tipe memiliki beberapa fasilitas tambahan lainnya (Anda bisa melihat pada Datasheet di CDROM atau Lampiran E) yang bisa dimanfaatkan seoptimal mungkin. Selanjutnya kami persilahkan para Pembaca untuk mengunjungi website saya di http://www.geocities.com/agfianto untuk mendapatkan infromasi lebih lanjut, khususnya tentang workshop dan Easy Downloader. Akhir Desember 2003 Agfianto Eko Putra
DAFTAR ISI BAGIAN I : ARSITEKTUR MIKROKONTROLER AT89C51/52/55 I.1. Pendahuluan.................................................................................................... I.2. Organisasi Memori ........................................................................................... I.2.1. Pemisahan Memori Program Dan Data...................................................... I.2.2. Memori Program...................................................................................... I.2.3. Memori Data ........................................................................................... I.3. Set Instruksi Secara Sekilas .............................................................................. I.3.1. Program Status Word .............................................................................. I.3.2. Mode-Mode Pengalamatan ....................................................................... I.3.2.1. Pengalamatan Langsung (Direct Addressing).................................. I.3.2.2. Pengalamatan Tak-Langsung (Indirect Addressing)......................... I.3.2.3. Instruksi-instruksi Register ............................................................ I.3.2.4. Instruksi-instruksi Register-Khusus ................................................ I.3.2.5. Konstanta Langsung (Immediate Constants) .................................. I.3.2.6. Pengalamatan Terindeks (Indexed Addressing) .............................. I.3.3. Instruksi-Instruksi Aritmetika ................................................................... I.3.4. Instruksi-Instruksi Logik........................................................................... I.3.5. Instruksi-Instruksi Transfer Data .............................................................. I.3.5.1. RAM Internal ................................................................................ I.3.5.2. RAM Eksternal .............................................................................. I.3.5.3. Tabel-tengok (Lookup Table)......................................................... I.3.6. Instruksi-Instruksi Boolean....................................................................... I.3.7. Offset Relatif........................................................................................... I.3.8. Instruksi-Instruksi Lompat (Jump) ............................................................ I.4. Pemberian Clock Pada Mikrokontroler 51 ........................................................... I.5. Siklus-Siklus Mesin (Machine Cycles) ................................................................. I.6. Struktur Interupsi............................................................................................. I.6.1. Pengaktifan Interupsi .............................................................................. I.6.2. Prioritas Interupsi.................................................................................... I.6.3. Simulasi Tingkat Prioritas Ketiga Dalam Perangkat Lunak........................... I.7. Sekilas Mikrokontroler Atmel Keluarga 51 .......................................................... I.8. SFR (Register Fungsi Khusus) Pada Keluarga 51 ................................................
I.9. Pengenalan Perangkat Lunak Pemrograman Mikrokontroler ................................ I.9.1. Tata-Cara Membuat Program Mikrokontroler AT89C51............................... I.9.2. Menggunakan TS Control Emulator 8051 .................................................. I.9.3. Langkah-langkah Percobaan .................................................................... BAGIAN II: SET INSTRUKSI DAN PEMROGRAMAN ASSEMBLY MCS51 II.1. Operan Dan Set Instruksi MCS51 ..................................................................... II.1.1. Mode Pengalamatan Dalam MCS51 ......................................................... II.1.2. Set Instruksi Dalam MCS51..................................................................... II.1.2.1. Kelompok Penyalinan Data........................................................... II.1.2.2. Kelompok Instruksi Arimetik ........................................................ A. Instruksi ADD dan ADDC........................................................... B. Instruksi SUBB.......................................................................... C. Instruksi DA A .......................................................................... D. Instruksi MUL AB...................................................................... E. Instruksi DIV AB ....................................................................... F. Instruksi DEC dan INC............................................................... G. Instruksi INC DPTR................................................................... II.1.2.3. Kelompok Instruksi Logika ........................................................... II.2. Operasi Bit Dengan MCS51 .............................................................................. II.2.1. Pemberian Nilai Data Biner ..................................................................... II.2.2. Pemindahan Data Biner .......................................................................... II.2.3. Operasi Logika ....................................................................................... II.2.4. Pengujian Nilai Boolean .......................................................................... II.2.5. Pemakaian Instruksi Operasi Bit .............................................................. II.3. Mengatur Aliran Program MCS51...................................................................... II.3.1. Kelompok Instruksi Jump........................................................................ II.3.1.1. Instruksi LJMP............................................................................. II.3.1.2. Instruksi AJMP ............................................................................ II.3.1.3. Instruksi SJMP............................................................................. II.3.2. Kelompok Instruksi Untuk Sub-Rutin ....................................................... II.3.3. Kelompok Instruksi Lompatan Bersyarat .................................................. II.3.3.1. Instruksi JZ / JNZ ........................................................................ II.3.3.2. Instruksi JC / JNC ........................................................................ II.3.3.3. Instruksi JB / JNB / JBC ............................................................... II.3.4. Kelompok Instruksi Proses Dan Test........................................................ II.3.4.1. Instruksi DJNZ............................................................................. II.3.4.2. Instruksi CJNE............................................................................. II.4. Pemrograman Bahasa Assembly MCS ............................................................... II.5. Operasi Assembler .......................................................................................... II.6. Format Program Bahasa Assembly ................................................................... II.6.1. Label ..................................................................................................... II.6.2. Mnemonik.............................................................................................. II.6.3. Operan .................................................................................................. II.6.4. Komentar .............................................................................................. II.6.5. Simbol-Simbol Assembler Khusus ............................................................ II.6.6. Pengalamatan Tak-Langsung .................................................................. II.6.7. Data Langsung....................................................................................... II.6.8. Alamat Data........................................................................................... II.6.9. Alamat Bit .............................................................................................
II.6.10. Alamat Kode ........................................................................................ II.6.11. Jump Dan Call Umum ........................................................................... II.7. Ekspresi-Ekspresi Assembler ............................................................................ II.7.1. Basis Bilangan........................................................................................ II.7.2. String Karakter....................................................................................... II.7.3. Operator-Operator Aritmetik ................................................................... II.7.4. Operator-Operator Logika ....................................................................... II.7.5. Operator-Operator Khusus...................................................................... II.7.6. Operator-Operator Relasional.................................................................. II.7.7. Operator-Operator Ekspresi .................................................................... II.7.8. Prioritas Operator................................................................................... II.8. Pengarah Assembler (Assembler Directive) ....................................................... II.8.1. Kontrol Kondisi Assembler....................................................................... II.8.2. Definisi Simbol ....................................................................................... II.8.3. Pemesanan/ Inisialisasi Penyimpan ......................................................... II.8.4. Penggabungan Program (Program Linkage) ............................................. II.8.5. Pemilihan Segmen.................................................................................. II.9. Operasi Penggabungan (Program Linkage) ....................................................... BAGIAN III: PORT PARALEL MIKROKONTROLER ATMEL KELUARGA 51 III.1. Pendahuluan ................................................................................................. III.2. Fungsi-Fungs Kaki (Pin) ................................................................................. III.3. Struktur Port Dan Cara-Kerja .......................................................................... III.3.1. Konfigurasi-Konfigurasi Port I/O........................................................... III.3.2. Ringkasan Spesifikasi Masing-Masing Port ............................................ III.3.2.1. Port 0 .................................................................................... III.3.2.2. Port 1 .................................................................................... III.3.2.3. Port 2 .................................................................................... III.3.2.4. Port 3 .................................................................................... III.4. Contoh-Contoh Aplikasi Penggunaan Port........................................................ III.4.1. Menghidupkan LED Melalui Kanal Paralel .............................................. III.4.1.1. Tujuan................................................................................... III.4.1.2. Rangkaian Apilkasi ................................................................. III.4.1.3. Program Pertama ................................................................... III.4.1.4. Langkah-langkah Menyimpan Program ke Flash Memori Menggunakan Easy-Programer .............................................................. III.4.1.5. Program Kedua ...................................................................... III.4.1.6. Program Ketiga ...................................................................... III.4.1.7. Program Keempat .................................................................. III.4.1.8. Program Kelima...................................................................... III.4.2. Aplikasi Port Untuk Penggerak 7-Segmen ............................................. III.4.2.1. Tujuan................................................................................... III.4.2.2. Rangkaian Aplikasi ................................................................. III.4.2.3. Program Pertama ................................................................... III.4.2.4. Program Kedua ...................................................................... III.4.2.5. Program Ketiga ...................................................................... III.4.3. Aplikasi Port Untuk Masukan/Keluaran Penggerak LED .......................... III.4.3.1. Tujuan................................................................................... III.4.3.2. Rangkaian Aplikasi .................................................................
III.4.3.3. Program Pertama ................................................................... III.4.3.4. Program Kedua ...................................................................... III.4.3.5. Program Ketiga ...................................................................... III.4.4. Aplikasi Port Untuk Masukan/Keluaran Penggerak 7-Segmen ................. III.4.4.1. Tujuan................................................................................... III.4.4.2. Rangkaian Aplikasi ................................................................. III.4.4.3. Program Pertama ................................................................... III.4.4.4. Program Kedua ...................................................................... III.4.5. Membaca Tombol Keypad Matriks Serta Penampil 7 Segmen ................. III.4.5.1. Tujuan................................................................................... III.4.5.2. Rangkaian Aplikasi ................................................................. III.4.5.3. Program Pertama ................................................................... III.4.5.4. Program Kedua ...................................................................... III.4.6. Apilikasi Port 0 Menjadi Penggerak Penampil 8 X 7-Segmen................... III.4.6.1. Tujuan................................................................................... III.4.6.2. Rangkaian Aplikasi ................................................................. III.4.6.3. Program Pertama ................................................................... III.4.6.4. Program Kedua ...................................................................... III.4.6.5. Program Ketiga ...................................................................... BAGIAN IV: TIMER DAN COUNTER DALAM AT89C51/52 IV.1. Pendahuluan.................................................................................................. IV.2. Sarana Timer/Counter AT89C51/52/55 ........................................................... IV.2.1. Ringkasan Mode Kerja Timer 0 Dan Timer 1.......................................... IV.2.2. Register Pengatur Timer ...................................................................... IV.2.3. Mode Kerja Timer 2 (Khusus AT89C52/55)............................................ IV.3. Mengatur Timer ............................................................................................. IV.4. Contoh Pemakaian Timer/Counter ................................................................... IV.4.1. Menghidupkan/Mematikan LED Selama 1 Detik ..................................... IV.4.1.1. Tujuan ................................................................................... IV.4.1.2. Rangkaian Apilkasi .................................................................. IV.4.1.3. Program ................................................................................ IV.4.2. Menghidupkan/Mematikan LED Menggunakan Timer Sebagai Pencacah.. IV.4.2.1. Tujuan ................................................................................... IV.4.2.2. Rangkaian Apilkasi .................................................................. IV.4.2.3. Program ................................................................................. IV.4.3. Membunyikan Speaker Dengan Frekuensi 500 Hertz .............................. IV.4.3.1. Tujuan ................................................................................... IV.4.3.2. Rangkaian Aplikasi .................................................................. IV.4.3.3. Program ................................................................................. IV.4.4. Membunyikan Speaker Untuk Alarm Dan LED Flip-Flop .......................... IV.4.4.1. Tujuan ................................................................................... IV.4.4.2. Rangkaian Aplikasi .................................................................. IV.4.4.3. Program ................................................................................. BAGIAN V: PORT SERIAL PADA AT89C51/52/55 V.1. Pendahuluan ................................................................................................... V.2. Antarmuka Serial ............................................................................................. V.3. Register Kontrol Port Serial ..............................................................................
V.4. Baudrate ......................................................................................................... V.4.1. Menggunakan Timer 1 Untuk Menghasilkan Baud Rate ............................. V.4.2. Menggunakan Timer 2 Untuk Menghasilkan Baud Rate ............................. V.5. Detil Mode Kerja Port Serial ............................................................................. V.5.1. Lebih Lanjut Tentang Mode 0 .................................................................. V.5.2. Lebih Lanjut Tentang Mode 1 .................................................................. V.5.3. Lebih Lanjut Tentang Mode 2 Dan 3 ........................................................ V.6. Contoh Aplikasi Port Serial ............................................................................... V.6.1. Inisialisasi Port Serial .............................................................................. V.6.2. Subrutin Pengirim Karakter...................................................................... V.6.3. Subrutin Penerima Karakter..................................................................... V.6.4. Komunikasi Serial Dengan Komputer........................................................ V.6.4.1. Tujuan ...................................................................................... V.6.4.2. Rangkaian Aplikasi ..................................................................... V.6.4.3. Program Pertama ....................................................................... V.6.4.4. Program Kedua .......................................................................... BAGIAN VI: SISTEM INTERUPSI PADA AT89C51/52/55 VI.1. Pendahuluan.................................................................................................. VI.2. Struktur Interupsi........................................................................................... VI.3. Mengaktifkan Dan Menon-Aktifkan Interupsi .................................................... VI.4. Tingkat Prioritas Interupsi .............................................................................. VI.5. Teknik Polling ................................................................................................ VI.6. Pemrosesan Interupsi..................................................................................... VI.7. Vektor-Vektor Interupsi .................................................................................. VI.8. Perancangan Program Interupsi ...................................................................... VI.8.1. Rutin Layanan Interupsi Pendek ........................................................... VI.8.2. Vektor-Vektor Interupsi........................................................................ VI.9. Pewaktuan Interupsi ...................................................................................... VI.10. Contoh-Contoh Aplikasi Menggunakan Interupsi .................................... VI.10.1. Aplikasi Mematikan Dan Menghidupkan Tungku......................... VI.10.2. Sistem Alarm ........................................................................... BAGIAN VII: PEMBUATAN PEMROGRAM AT89C51/52/55 EASY DOWNLOADER 2.2 VII.1. Pendahuluan ................................................................................................ VII.2. Keterangan Perakitan .................................................................................... LAMPIRAN LAMPIRAN LAMPIRAN LAMPIRAN LAMPIRAN
A: Tentang CDROM Pelengkap Buku ....................................................... B: Referensi Cepat Instruksi AT89C51/52/55 ........................................... C: Referensi Detil Instruksi AT89C51/52/55............................................. D: Register-register Khusus AT89C51/52/55............................................ E: Mikrokontroler Atmel’s Flash Seri AT89 ...............................................
Daftar Pustaka Atmel, 1997, “Flash Microcontroller: Architectural Overview”, Atmel Inc., USA Atmel, 1997, “AT89 Series Hardware Description”, Atmel Inc., USA MacKenzie, L. Scott, 1995, ”The 8051 Microcontroller, 2nd edition”, Prentice Hall, Inc., USA