You are on page 1of 87

PROYEK AKHIR

ALGORITMA ROBOT PEMANJAT TIANG

PUJI WAHYONO NRP. 710 303 0017

Dosen Pembimbing Ir. SIGIT WASISTA, M.Kom. NIP. 132 055 259

JURUSAN TEKNIK ELEKTRONIKA POLITEKNIK ELEKTRONIKA NEGERI SURABAYA 2006

ABSTRAK Kemajuan teknologi yang semakin pesat terutama dalam bidang teknologi robotika telah memasuki berbagai segi kehidupan manusia yang dalam aplikasinya mulai dari bidang otomatisasi industri, militer, intertaintmen maupun dalam bidang medis. Pada prinsipnya tujuan penciptaan robot tersebut adalah untuk membantu meneyelesaikan tugas manusia yang sulit atau bahkan tak mungkin dikerjakan oleh manusia. Dengan tujuan untuk membantu tugas pemanjatan yang pada umumnya sangat beresiko dan dapat mengakibatkan terjadinya kecelakaan maka dibuatlah robot pemanjat tiang ini. Robot pemanjat tiang adalah robot yang memiliki kemanpuan untuk melakukan pemanjatan. Untuk mengoperasikan robot ini dapat dilakukan secara manual maupun secara otomatis. Pada mode otomatis ketinggian pemajatan yang ingin dicapai dapat disetting dengan memberikan input melalui keypad, menu pilihan maupun nilai setting yang telah diberikan akan ditampilkan pada LCD. Pada operasi secara manual robot dikendalikan oleh user melalui joystick. Seluruh proses yang terjadi pada robot ini dikendalikan oleh Microcontroller yang merupakan pengontrol utama. Kata kunci : Microcontroller, LCD, Keypad, mode operasi

ii

ABSTRACT Technology progress which fast progressively especially in the field of robotics technology have entered various facet of human life which is in its application start from industrial automation area, military, entertainments and also in the field of medical. In principle the robot creation target is to assist to finish the difficult human being duty or unlikely even done by human being. As a mean to assist the climbing duty, which is generally very dangerous, and can result the happening of accident is hence made by this pillar climber robot. Pillar climber robot is robot that has owning ability to do climbing. To operate this robot can be done in manual and also automatically. At automatic mode of height climbing which wish reached to by giving input setting through keypad, choice menu and also value the setting that have been given will be displayed at LCD. At operation robot in manual controlled by user of through joystick. Microcontroller that represent the master controller controls all process that happened at this robot Keyword : Microcontroller, LCD, Keypad, operate mode

iii

Pengantar

Assalamu’alaikum Warohmatullahi Wabarakatuh, Dengan mengucapkan Puji Syukur kehadirat Allah SWT yang telah melimpahkan rahmat, hidayah serta karunia-Nya yang tiada henti sehingga penulis dapat menyelesaikan Tugas Akhir dengan judul : ALGORITMA ROBOT PEMANJAT TIANG Tugas akhir ini disusun sebagai syarat untuk menyelesaikan studi di jurusan Teknik Elektronika, Politeknik Elektronika Negeri Surabaya, Institut Teknologi Sepuluh Nopember Surabaya. Harapan kami semoga buku ini bermanfaat bagi mahasiswa Politeknik Elektronika Negeri Surabaya ITS khususnya, dan masyarakat pada umumnya. Ibarat peribahasa tak ada gading yang tak retak, begitujuga dengan buku ini. Penyusun sadar bahwa didalam penyusunan buku laporan tugas akhir ini masih jauh dari kesempurnaan, untuk itu dengan segala kerendahan hati apabila terdapat kekurangan mohon dimaafkan yang sebesar-besarnya, dan diharapkan saran maupun kritik dari para pembaca untuk perbaikan dikemudian hari.

Surabaya, Juli 2006

Penyusun

iv

UCAPAN TERIMA KASIH Alhamdullillah, atas segala limpahan rahmat, taufik, hidayah yang diberikan oleh 4JJI SWT sehingga Proyek Akhir ini dapat terselesaikan sesuai dengan jadwal yang telah ditentukan. Disamping itu juga penulis ingin mengucapkan terima kasih kepada semua pihak yang telah memberikan bantuan bimbingan dan dorongan serta fasilitas sarana dan prasarana, baik material maupun spiritual sehingga penulis dapat menyusun buku laporan Proyek Akhir ini tepat pada waktunya. Diantaranya adalah : 1. 4JJI SWT, yang atas izin dan kuasa-Nya kami dapat memnyelesaikan Proyek Akhir ini 2. Ayah dan Ibu tercinta yang telah memberi restu, nasehat, do’a dan dorongan semangat dalam setiap langkahku, semoga 4JJI selalu melindungi mereka. 3. Semua keluarga besarku, dimanapun kalian berada semoga 4JJI selalu memberikan rahmad-Nya pada qta smua 4. Bapak Ir. Titon Dutono, M.Eng, selaku direktur PENS-ITS. 5. Bapak Ir. Dedid. CH, selaku kepala jurusan elektronika. 6. Bapak Sigit Wasista, MKom, selaku dosen pembimbing yang telah banyak memberi pengarahan serta bimbingan kepada kami untuk menyelesaikan Proyek Akhir ini. 7. Seluruh Bapak dan Ibu Dosen EEPIS-ITS yang telah menularkan ilmu yang mereka miliki kepadaku, semoga aku dapat mengamalkannya. 8. Teman ” Crusty Crab Community” terikasih kebersamaannya selama ini dan semoga persahabatan kita tidak terputus oleh berjalannya waktu. 9. Teman-teman ELKA “2003” terutama kelas 3EA terima kasih atas semuanya, persahabatan dan kebersamaan semoga tetap utuh selamanya. 10. Teman-teman Angkatan “2003” terima kasih atas semuanya yang telah banyak memberikan saran, bantuan, dukungan, dan do’a. 11. Sobat satu kos-ku, Wan Abe, yang telah banyak membantuku, terima kasih untuk semuanya, semoga persaudaraan qta tetap utuh tuk selamanya... 12. My partner Indra (Kaconk), terima kasih atas kucuran dana, and semuanya, kalo udah sukses ojo lali koncomu iki....

v

13. Seluruh pihak yang tak dapat kami sebutkan satu persatu terima kasih atas bantuannya dalam penyelesaian Tugas Akhir ini.

vi

DAFTAR ISI Halaman judul ................................................................................... i Lembar pengesahan........................................................................... ii Abstrak ............................................................................................ iii Abstract ............................................................................................ iv Kata pengantar .................................................................................. v Ucapan terima kasih.......................................................................... vi Daftar isi........................................................................................... viii Daftar gambar ................................................................................... x Daftar tabel........................................................................................ xi BAB I PENDAHULUAN 1.1 Latar belakang............................................................................ 1.2 Tujuan umu ................................................................................ 1.3 Tujuan khusus ............................................................................ 1.4 Permasalahan ............................................................................. 1.5 Perumusan masalah .................................................................... 1.6 Batasan ....................................................................................... 1.7 Metodologi ................................................................................. 1.8 Sistematika penulisan................................................................. BAB II TEORI PENUNJANG 1.8 Sistematika penulisan................................................................. 2.1 Gambaran umum MCS-51 ......................................................... 2.1.1 Pin-pin Mikrokontroller AT89C51 .................................. 2.2 Organisasi Memori 89C51 ........................................................ 2.2.1 Pemisahan antara program memori dan data memori ...... 2.2.2 Program memori .............................................................. 2.2.3 Data memori.................................................................... 2.3 Set Instruksi dan Pemrograman Assembly MCS51 ................... 2.3.1 Program Status Word ...................................................... 2.3.2 Mode Pengalamatan (Addressing Modes)....................... 2.3.3 Instruksi-Instruksi Aritmatika ........................................ 2.3.4 Instruksi-Instruksi Logika .............................................. 2.3.5 Data Transfer................................................................... 2.3.6 Instruksi-Instruksi Boolean ............................................. 2.3.7 Instruksi lompatan bersyarat .......................................... 2.3.8 Instruksi Proses dan Test................................................. 2.3.9 Instruksi-Instruksi jump tanpa syarat ..............................

1 2 2 2 2 2 3 3

3 5 6 7 8 8 9 11 12 13 14 16 18 20 22 23 23

vii

2.3.10 Struktur Interupsi ............................................................ 25 2.4 Timer / Counter.......................................................................... 26 2.5 Keypad ....................................................................................... 31 2.6 LCD ......................................................................................... 32 BAB III PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK 3.1 Umum ........................................................................................ 3.2 Perencanaan Perangkat Lunak ................................................... 3.2.1 Sistem Kontroler ............................................................. 3.2.2 Perencanaan Memori....................................................... 3.2.3 Perencanaan Masukan Dan Keluaran.............................. 3.2.4 Program Utama ............................................................... 3.2.5 Subrutin-subrutin............................................................. 3.2.5.1 Inisialisasi ......................................................... 3.2.5.2 Subprogram scanning keypad ........................... 3.2.5.3 Subprogram perbandingan data......................... 3.2.5.4 Subprogram menampilkan pada LCD............... 3.3 Algoritma .......................................................................... 3.3.1 Algoritma pada pergerakan robot.................................... 3.4 Flowchart .......................................................................... 3.4.1 Flowchart saat robot naik (Up)........................................ 3.4.2 Flowchart saat robot turun (Down) ................................. 3.4.3 Flowchart gerakan robot secara keseluruhan................... BAB IV PENGUJIAN DAN ANALISA 4.1 Pengujian Minimum Sistem....................................................... 4.2 Pengujian Keypad ...................................................................... 4.3 Pengujian LCD........................................................................... 4.4 Pengujian Driver motor DC ....................................................... 4.5 Pengujian Sistem Keseluruhan...................................................

35 35 35 36 36 37 37 37 38 38 38 38 38 39 40 40 41

45 48 49 50 52

BAB V PENUTUP 5.1 Kesimpulan ................................................................................ 55 5.2 Saran – saran .............................................................................. 55 DAFTAR PUSTAKA ....................................................................... 57 Lampiran A Lampiran B Lampiran C

viii

Daftar Riwayat Hidup

DAFTAR GAMBAR Gambar 2.1 Blok Diagram Inti 8051 ............................................... 5 Gambar 2.2 Pin-pin Mikrokontroller 89C51 ................................... 6 Gambar 2.3 Struktur Memory 89C51.............................................. 7 Gambar 2.4 Program Memori 89C51 .............................................. 8 Gambar 2.5 Data Memori Internal .................................................. 9 Gambar 2.6 Lower 128 dari RAM. Internal .................................... 10 Gambar 2.7 Ruang Special Function Register................................. 11 Gambar 2.8 Gambar 2.8 Konfigurasi bit program status word........ 12 Gambar 2.9 konfigurasi bit pada register IE................................... 25 Gambar 2.10 Urutan poling dalam interrupt prioritas.................... 26 Gambar 2.11 Susunan bit TCON ................................................... 27 Gambar 2.12 Susunan bit TMOD .................................................. 28 Gambar 2.13 Timer/Counter 1 bekerja dalam mode 0, sebagai T/C 13-bit .................................................... 29 Gambar 2.14 Timer/Counter 1 bekerja pada mode 2, sebagai T/C 8bit auto- reload ......................................................... 29 Gambar 2.15 Timer/Counter 0 bekerja pada mode 3, sebagai 2 timer/counter 8 bit .................................................... 30 Gambar 2.16 Diagram Keypad 4x3.................................................. 31 Gambar 2.17 Rangkaian Interface ke LCD ...................................... 33 Gambar 2.18 M1632 Hitachi LCD................................................... 33 Gambar 3.1 Blok diagram sistem ..................................................... 35 Gambar 3.2 Flowchart robot UP...................................................... 40 Gambar 3.3 Fowchart robot Down.................................................... 41 Gambar 3.4 Flowchart robot pemanjat pemanjat tiang ................... 42 Gambar 4.1 ISP-Flash Programmer................................................. 46 Gambar 4.2 Listing pengujian minimum sistem.............................. 47 Gambar 4.3 Nyala LED pada nible atas port 1 ................................ 47 Gambar 4.4 Nyala LED pada nible bawah port 1............................ 47 Gambar 4.5 Listing program pengujian keypad ............................... 48 Gambar 4.6 Listing pengujian LCD ............................................... 49 Gambar 4.7 Hasil yang ditampilkan pada LCD............................... 50 Gambar 4.8 Listing program pengujian motor DC.......................... 51 Gambar 4.9 Gambar blok pengujian sistem secara keseluruhan ..... 52

ix

DAFTAR TABEL Tabel 2.1 Fungsi program status word .............................................. Tabel 2.2 Instruksi Aritmatika ......................................................... Tabel 2.3 Instruksi Logika ................................................................ Tabel 2.4 Instruksi Data Transfer yang mengakses Internal Data Memory............................................................................... Tabel 2.5 Instruksi Data Transfer Yang Mengakses External Data Memori ............................................................................... Tabel 2.6 Instruksi Pembacaan Tabel................................................ Tabel 2.7 Instruksi-Instruksi Boolean ............................................... Tabel 2.8 Jump Tanpa Syarat (Unconditional Jumps) ...................... Tabel 2.9 IE (Interrupt Enable) ......................................................... Tabel 2.10 IP (Interrupt Priority)...................................................... Tabel 2.11 TCON(TimerControl) ..................................................... Tabel 2.12 Mode Timer.................................................................... Tabel 2.13 Deskripsi pin-pin pada LCD .......................................... Tabel 4.1 Hasil Pengujian Scanning Keypad .................................... Tabel 4.2 Tabel hasil pengujian masing - masing driver motor ........ Tabel 4.3 Hasil pengukuran ketingian pemanjatan robot ............... Tabel 4.4 Hasil pengujian robot pada dua diameter tiang berbeda.. 12 14 17 18 19 20 21 23 25 26 27 28 34 49 51 53 54

x

1

BAB I PENDAHULUAN

1.1 LATAR BELAKANG Perkembangan teknologi dalam berbagai bidang kehidupan yang semakin pesat menuntut kita untuk mampu menyelesaikan permasalahan yang semakin kompleks, Untuk itu diperlukan penyelesaianpenyelesaian baru yang lebih efektif dan efisien untuk mengatasi permasalahan tersebut. Robot merupakan salah satu alternatif pilihan yang terbaik yang dapat digunakan untuk menyelesaikan permasalahan manusia yang rumit dan berbahaya bagi manusia. 1 Di negara-negara maju seperti Jepang, Amerika Serikat dan Cina pemakaian teknologi robot dalam bidang industri sudah bukan hal yang baru lagi, dan tiap tahun pemanfaatan teknologi robot ini terus meningkat. 2 Robot Adalah rekabentuk manpulasi multifungsi untuk memindahkan barang, bahagian, alat(tools), atau peralatan khusus melalui gerakan pengaturan pengubahan dan pelaksanaan tugas bervariasi. Dimana robot mempunyai kelebihan yaitu dapat melakukan pekerjaan yang sama terus-menerus dengan akurasi tinggi, dan kecepatan tinggi. 3 Pada dasarnya untuk bisa memanjat tiang dan melakukan aktivitas di ketinggian tertentu seseorang harus memiliki kemampuan, keberanian dan kesehatan yang mencukupi karena tanpa hal tersebut bisa saja seseorang tersebut terjatuh, tanpa terpenuhinya persyaratan tersebut maka kemungkinan terjadinya kecelakaan akan semakin besar dan hal ini dapat mengancam keselamatannya maupun orang lain. Selain itu orang yang mempunyai kemampuan dan persyaratan tersebut sangat terbatas jumlahnya. Dilain pihak tidak sedikit pekerjaan manusia yang harus dilakukan diketinggian Dan selama ini pekerjaan tersebut masih dilakukan oleh tenaga manusia, karena mengingat pentingnya pekerjaan ini untuk dilakukan meskipun mengandung resiko kecelakaan yang tidak
1 Takashi Yagi, Industrial Robot: An International Journal. Volume 29 Number 6 2002 pp. 495-499 2 http://www.utm.ac.my/sistemrobotic 3 Gde Brata Indrawan “Robot Pembersih kaca gedung dengan perangkat kamera”, PA PENS-ITS, Agustus 2004

2
kecil, maka dengan alasan tersebut dalam proyek akhir ini saya ingin mengaplikasikan teknologi robot guna membantu kepentingan manusia khususnya yang berhubungan dengan ketinggian yaitu dengan membuat robot pemanjat tiang. 1.2.1 Tujuan Umum Tujuan umum dari proyek akhir ini adalah untuk melengkapi kurikulum studi pada Politeknik Elektronika Negeri Surabaya Institut Teknologi Sepuluh Nopember Surabaya. 1.2.2 Tujuan Khusus Mengaplikasikan teknologi robot guna membantu kepentingan manusia khususnya yang berhubungan dengan ketinggian yaitu dengan membuat robot pemanjat tiang. Robot pemanjat tiang ini mampu memanjat tiang yang tinggi, Selain tidak membutuhkan media lain untuk memanjat seperti tali dan lainnya robot pemanjat tiang ini dapat memanjat tiang dengan diameter bervariasi dan bergerak secara otomatis sampai ketinggian tertentu sesuai keinginan kita dan dapat dikontrol dari bawah melalui joystick, aksi apa yang harus dilakukan robot ini. 1.3 Permasalahan Robot pemanjat tiang yang dibuat ini harus mampu melakukan tugas pemanjatan dengan baik. Selain itu robot dapat diopersikan dengan dua mode operasi yaitu secara otomatis dan secara manual. Dimana pemilihan mode operasi dapat dilakukan pada saat start maupun pada saat robot sudah berjalan. Guna menunjang kemudahan dan kelancaran robot saat melakukan pemanjatan, mekanik robot harus di desain dengan se- efektif mungkin. 1.4 Perumusan Masalah Mengacu pada permasalahan diatas maka perumusan masalah akan ditekankan pada: 1. Bagaimana merancang sebuah robot yang se-efektif mungkin untuk dapat melakukan pemanjatan tiang 2. Bagaimana membuat program Assembly pada microcontroller AT89S51 untuk mengendalikan seluruh gerakan robot 3. Bagaimana membuat interface antara microcontroller dengan device keypad, LCD dan joystic yang akan digunakan untuk mengendalikan robot. 1.5 Batasan

3
Pembahasan pada Proyek akhir ini difokuskan pada perancangan rangkaian sistem minimum mikrokontroller, interface dengan LCD, Keypad dan rangkaian kendali robot dengan menggunakan joystick.Permasalahan dibatasi hanya pada pembuatan perangkat keras dan perangkat lunak yang memberikan data masukan bagi proses pengontrolan robot. Dengan batasan masalah: 1. Membuat perangkat lunak yang dapat memberikan data masukan untuk proses pengontrolan robot. 2. Kondisi awal start robot sudah berada pada tiang 3. Robot hanya melakukan pemanjatan tiang 4. Kondisi tiang dalam keadaan berdiri tegak lurus dan dengan diameter antara 10 cm – 30cm 6. Tidak ada halangan (obstacle) yang menutupi obyek(tiang) dan permukaan tiang rata. 1.4 METODOLOGI Untuk mencapai penyelesaian proyek akhir, langkah yang akan dilakukan adalah: 1. Melakukan studi literatur yaitu mempelajari literatur yang berhubungan dengan perangkat lunak yang akan digunakan dan juga mikrokontroller. Software yang digunakan adalah bahasa Assembly 2. Melakukan perancangan perangkat lunak yaitu merancang software yang akan di terapkan didalam sistem robot. Dan interface dengan beberapa device, LCD, Keypad dan joystick 3. Melakukan integrasi dan pegujian sistem yaitu menghubungkan antara perangkat lunak yang telah dibuat dengan perangkat keras kemudian dilakukan pengujian pada keseluruhan system agar diketahui kinerjanya. 4. Melakukan evaluasi dan presentasi hasil yaitu melakukan evaluasi cara kerja dari sistem yang telah dibuat untuk mengetahui aspek-aspek yang mempengaruhinya, seperti : keberhasilan melakukan pemanjatan, pengujian data dan ketepatan dengan kontrol robot. 5. Melakukan penyusunan buku tugas akhir yaitu melakukan penulisan laporan lengkap dan detail tentang tugas akhir. 1.7 Sistematika Penulisan Sistematika penulisan dapat dijelaskan sebagai berikut:

4
BAB I. PENDAHULUAN Berisi latar belakang masalah, tujuan, permasalahan , perumusan masalah, batasan masalah, metodologi BAB II. TEORI PENUNJANG Menjelaskan mengenai teori-teori yang dijadikan landasan dan rujukan perhitungan dalam mengerjakan proyek akhir ini.

BAB III. PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK Berisi tentang perencanaan dan pembuatan perangkat lunak yang akan diterapkan pada robot. BAB IV. PENGUJIAN Berisi pembahasan tentang pengujian dari sistem yang telah dibuat beserta analisanya. BAB V. PENUTUP Berisi tentang kesimpulan dan saran yang didapat selama proses perencanaan dari sistem yang diterapkan. DAFTAR PUSTAKA Berisi tentang referensi-referensi yang digunakan dan dijadikan acuan selama pembuatan proyek akhir ini. LAMPIRAN Pada halaman lampiran ini berisi gambar, tabel, maupun data sheet komponen yang menunjang proses pembuatan proyek akhir ini.

5

BAB II TEORI PENUNJANG

2.1 GAMBARAN UMUM MCS-51 4 Mikrokontroler 89C51 adalah anggota dari keluarga MCS-51 yang memiliki fasilitas antara lain(1): CPU dengan kapasitas 8-bit Boolean processing (operasi Boolean) dalam bit (single bit logic) On-Chip 4 Kbyte Program Memori Program memori dapat diperbesar hingga 64 Kbyte On-Chip 128 byte Data Memori Data Memori dapat diperbesar hingga 64 Kbyte 4 buah port masing-masing 8 bit Dua buah Timer/ Counter 16 bit UART full duplex 5 interupsi vektor dengan 2 tingkatan prioritas Arsitektural MCS-51 adalah sbb:

4

Agvianto Eko Putra, BELAJAR MIKROKONTROLER AT89C51/52/55, Hal 2

6

Gambar 2.1. Blok Diagram Inti 8051

2.1.1 Pin-pin Mikrokontroller AT89C51 Susunan pin-pin mikrokontrollerAT89C51 diperlihatkan pada Gambar 2.14 berikut:

Gambar 2.2 Pin-pin Mikrokontroller 89C51 5 Penjelasan dari masing-masing pin adalah sebagai berikut:

5

http://www.issi.com

7
a. Pin 1-8 (Port 1) merupakan port paralel 8 bit dua arah (bidirectional) yang dapat digunakan untuk berbagai keperluan (general purpose). Pin 9 ( reset ) adalah masukan reset (active high). Pulsa transisi dari rendah ke tinggi akan mereset 8951. Pin ini dihubungkan dengan rangkaian power on reset. Pin 10-17 (Port3) adalah port paralel 8 bit dua arah yang memiliki fungsi pengganti. Fungsi pengganti meliputi TxD (Transmit Data), RxD (Receive Data), Int 0 (Interupt 0), Int 1 (Inteerup 1), T0 (Timer 0), T1 (Timer 1),WR (Write), dan RD (read). Bila fungsi pengganti tidak dipakai, pin-pin ini dapat digunakan sebagai port parallel 8 bit serba guna. Pin 18 (XTAL 1) adalah pin masukan ke rangkaian osilator internal. Sebuah isolator kristal atau sumber osilator luar dapat digunakan. Pin 19 (XTAL 2) adalah pin keluaran ke rangakaian osilator internal. Pin ini dipakai bila menggunakan osilator kristal. Pin 20 (Ground) dihubungkan ke Vcc atau ground. Pin 21 sampai 28 (Port 2) adalah port paralel 2 (P2) selebar 8 bit dua arah (bidirectional). Port 2 ini mengirimkan byte alamat bila dilakukan pengaksesan memori external. Pin 29 adalah pin PSEN (Program Store Enable) yang merupakan signal pengontrol yang membolehkan program memori external masuk kedalam bus selama proses pemberian/ pengambilan instruksi ( fetching ). Pin 30 adalah pin ALE (address latch Enable) yang digunakan untuk menahan alamat memori eksternal selama pelaksanaan instruksi. Pin 31 (EA). Bila pin ini diberi logika tinggi (H), mikrokontroler akan melaksanakan instruksi dari ROM/EPROM ketika isi program counter kurang dari 4096. Bila diberi logika low (L), mikrokontroller akan melaksanakan seluruh instruksi dari memori luar program. Pin 32-39 (Port 0) merupakan port parallel 8 bit open drain dua arah. Bila digunakan untuk mengakses memori luar, port ini akan memultipleks alamat memori dengan data. Pin 40 (Vcc) dihubungkan ke Vcc (+5 Volt).

b.

c.

d.

e. f. g.

h.

i.

j.

k.

l.

2.2 ORGANISASI MEMORI 89C51 2.2.1 Pemisahan antara Program Memori dan Data Memori

8
Semua perangkat MCS-51 memiliki ruang alamat tersendiri untuk Program Memori dan Data Memori, seperti terlihat pada gambar 2.2:
6

Gambar 2.3 Struktur Memory 89C51 3 Pemisahan Program dan Data Memori ini memungkinkan pengaksesan data Memori dengan pengalamatan 8 bit, sehingga dapat langsung disimpan dan dimanipulasi oleh mikrokontroler dengan kecepatan 8 bit. Namun demikian, untuk pengaksesan Data Memori dengan alamat 16 bit harus dilakukan dengan menggunakan register DPTR (Data Pointer). Program Memori hanya dapat dibaca saja (diletakkan pada ROM/ EPROM). Untuk membaca Program Memori eksternal, mikrokontroler akan mengirim sinyal PSEN (Program Store Enable). Sebagai Data Memori eksternal dapat digunakan RAM eksternal (maksimum 64 Kbyte). 2.2.2 Program Memori 4 Gambar 2.3 menunjukkan peta dari bagian bawah Program Memori. Setelah reset, CPU memulai eksekusi program dari lokasi alamat 0000H.

6

http://www.issi.com http://www.issi.com

4

9

Gambar 2.4 Program Memori 89C51 Seperti yang terlihat pada gambar 2.3, setiap interupsi diberi lokasi tersendiri pada Program Memori (ketentuan tersebut dikenal sebagai vektor interupsi). Interupsi yang dilakukan menyebabkan CPU melompat ke alamat interupsi yang berisi sebuah rutin khusus dan kemudian mengeksekusinya. Jika program interupsi cukup pendek, maka program tersebut dapat dimulai pada alamat vektor interupsi yang ditentukan. Bila program interupsi cukup panjang, maka instruksi ‘Jump’ dapat digunakan pada alamat vektor interupsi tersebut, untuk melompat menuju lokasi awal dimana program interupsi dibuat. Kapasitas 4K (atau 8K, atau 16K) dari Program Memori dapat difungsikan sebagai on-chip ROM (internal) atau sebagai ROM eksternal. Pemilihan ROM internal atau eksternal pada saat pembacaan oleh mikrokontroler, dilakukan dengan mengkondisikan pin EA (External Access) pada kondisi high/ low (EA = high, untuk ROM internal; EA = low, untuk ROM eksternal). 2.2.3 Data Memori Data memory internal dan external (lihat gambar 2.2) dapat langung digunakan oleh user. Jika dibutuhkan ukuran memory lebih besar dari 2 KB dapat menggunakan eksternal RAM. CPU mengeksekusi program dari ROM internal. Port 0 berfungsi sebagai bus alamat/ data (bersifat multiplexer) terhadap RAM dan 3 buah jalur dari Port 2 digunakan untuk pemilihan halaman dari RAM (RAM page). CPU mengaktifkan sinyal RD dan WR berdasarkan kebutuhannya selama pengaksesan RAM eksternal. Data Memori Eksternal dapat mencapai 64KB. Pengalamatan Data Memori Eksternal ini ada yang memerlukan lebar alamat cukup 1 byte saja atau dengan 2 byte. 5Pengalamatan dengan 1 byte sering digunakan asalkan satu atau lebih

10
dari jalur I/O digunakan untuk memilih RAM page. Sedangkan pengalamatan 2 byte digunakan dengan catatan Port 2 digunakan untuk mengirim high address byte (byte alamat atas).

Gambar 2.5 Data Memori Internal Data Memori Internal dipetakan seperti pada Gambar 2.4. Memori ini dibagi menjadi 3 blok, dimana secara umum dibedakan menjadi Lower 128, Upper 128 dan ruang Special Function Register (SFR). Lebar alamat dari Data Memori Internal selalu sebesar 1 byte, oleh karena itu kapasitas maksimum dari sebuah alamat data adalah 256 byte. Bagaimanapun, mode pengalamatan untuk internal RAM dapat diakomodasikan menjadi 384 byte dengan sedikit trik. Pengalamatan langsung yang lebih tinggi dari 7FH akan mengakses blok memori yang berbeda. Gambar 2.4 menunjukkan bagaimana Upper 128 dan ruang SFR menggunakan blok yang sama pada pengalamatan 80H sampai FFH, walaupun secara fisik keduanya adalah terpisah.

11

Gambar 2.6 Lower 128 dari RAM. Internal Blok Lower 128 selalu tersedia pada semua piranti MCS-51 seperti terlihat pada Gambar 2.5. Lokasi di bawah 32 byte dikelompokan menjadi 4 buah bank dari 8 register. Program instruksi mengenalnya sebagai R0 sampai R7. Dua bit dalam PSW (Program Status Word) dipakai untuk memilih bank-bank mana yang akan digunakan. Hal ini akan menyebabkan penggunaan yang lebih efisien dari pengkodean, sebab dengan menggunakan cara ini akan didapatkan instruksi yang lebih pendek dari pada dengan menggunakan direct addressing (pengalamatan langsung). 16 byte berikutnya di atas bank register adalah ruang memori yang bersifat bit-addressable (dapat dialamati per bit). Ada Instruction Set dari 89C51 terdapat instruksi-instruksi yang dapat mengolah bit tunggal dan sebanyak 128 bit pada area ini dapat diakses secara langsung dengan menggunakan Intruktion Set. Bit yang dapat diakses langsung ini adalah daerah dari 00H sampai 7FH. Semua daerah dalam Lower 128 dapat diakses secara direct maupun indirect addressing (pengalamatan langsung maupun tidak langsung). Sedangkan Upper 128 hanya dapat diakses menggunakan indirect addressing. Upper 128 dari RAM tidak digunakan pada 89C51 tapi menggunakan RAM lain dengan kapasitas 256 byte. Gambar 2.6 menunjukkan ruang SFR (Special Function Register). Dalam ruang SFR terdapat Port latch, timer, kontrol peripheral dan

12
lainlain. Register-register ini hanya dapat diakses dengan menggunakan direct addressing. Secara umum, seluruh keluarga MCS-51 memiliki ruang SFR yang sama dengan 8051 dan SFR tersebut diletakkan pada alamat yang sama.

Gambar 2.7 Ruang Special Function Register Sebanyak 16 alamat pada ruang SFR dapat dilakukan pengalamatan baik pengalamatan bit maupun byte. SFR yang bersifat bit addressable adalah alamat-alamat yang berakhir dengan 000BH. Bit yang dialamatkan pada area ini adalah mulai 80H sampai FFH. 2.3. SET INSTRUKSI dan PEMROGRAMAN ASSEMBLY MCS51 Instruksi set dari MCS-51 dioptimasi untuk aplikasi kontroler 8 bit. Instruksi set menghasilkan berbagai macam mode pengalamatan yang cepat saat mengakses internal RAM untuk melengkapi fasilitas byte Operasi pada data struktur yang kecil. Instruksi set menunjang operasioperasi bit seperti operasi Boolean. 2.3.1. Program Status Word Program Status Word (PSW) berisi beberapa status bit yang menunjukkan keadaan dari CPU. PSW, yang terlihat pada Gambar 2.7

13
berada pada SFR. PSW berisi Carry bit, Auxiliary Carry (untuk operasi BCD), dua buah bit select untuk bank register, Overflow flag, Parity bit dan dua buah flag yang dapat didefinisikan apa saja.

Gambar 2.8. Konfigurasi bit program status word Table 2.1 Fungsi program status word Posisi Fungsi/Arti PSW.7 Carry flag PSW.6 auxiliary carry flag (untuk opersi BCD) PSW.5 Flag 0 untuk kegunaan umum PSW.4 Bit untuk melihat bank register PSW.3 Bit untuk melihat bank register PSW.2 Overflow flag PSW.1 Flag didefinisikan oleh pemakai PSW.0 Parity flag. Set/clear oleh perangkat keras setiap siklus instruksi untuk menunjukkan jumlah bit 1 dalam akumulator, ganjil atau genap

Symbol CY AC F0 RS1 RS0 OV P

Selain untuk melayani fungsi sebagai Carry pada proses aritmatika, bit Carry pada PSW juga memiliki beberapa fungsi untuk membantu “Akumulator” pada operasi-operasi Boolean. Bit RS0 dan RS1 digunakan untuk memilih salah satu dari bank register. Bit Parity akan selalu mengacu pada isi dari “Akumulator”, apabila P=1 maka Akumulator sedang berisi bilangan ganjil, sedangkan apabila P=0 maka Akumulator sedang berisi bilangan genap. Isi Akumulator apabila

14
dijumlahkan dengan bit Parity akan selalu menghasilkan bilangan genap. Dua buah bit pada PSW yang tidak terdefinisi, dapat digunakan sebagai “general purpose status flag”. 2.3.2 Mode Pengalamatan (Addressing Modes) Pada MCS-51 terdapat beberapa Mode Pengalamatan, yaitu : Mode pengalamatan segera ( immediate addresing mode ) Cara ini menggunakan konstanta, misalnya : MOV A, #20h. Data konstan merupakan data yang menyatu dengan instruksi, contoh instruksi tersebut diatas mempunyai arti bahwa data konstantanya yaitu 20h, (sebagai data konstan harus diawali dengan ‘#’) disalin ke akumulator A. Yang perlu benar-benar diperhatikan dalam instruksi ini adalah bilangan 20h merupakan bagian dari instruksi (menjadi satu dengan op-kode instruksi). Mode pengalamatan langsung ( direct addresing mode ) Cara ini dipakai untuk menunjuk data yang berada di suatu lokasi memori dengan cara menyebut lokasi (alamat) memori tempat data tersebut berada, misalnya MOV A, 30h. Instruksi ini mempunyai arti bahwa data yang berada di dalam memori dengan lokasi 30h disalin ke akumulator. Sekilas instruksi ini sama dengan instruksi sebelumnya,namun terdapa perbedaan pada tanda ‘ # ‘, jika instruksi pertama menggunakan tanda ‘ # ‘ yang menandai 20h sebagai data konstan, sedangkan dalam instruksi kedua karena tidak menggunakannya, maka 30h diartikan sebagai suatu lokasi memori. Mode pengalamatan tidak langsung ( indirect addresing mode ) Cara ini dipakai untuk mengakses data yang berada d dalam memori, tapi lokasi memori tidak disebut secara langsung tapi di-titipkan ke register lain, misalnya MOV A, @R0. Dalam instruksi ini register serbaguna R0 dipakai untuk menyimpan lokasi memori, sehingga instruksi ini mempunyai arti memori yang alamat lokasinya tersimpan dalam R0 isinya disalin ke akumulator A. Tanda ‘ @ ’ dipakai untuk menandai lokasi memori yang tersimpan di dalam R0. Mode pengalamatan register ( register addresing mode ) Misalnya MOV A, R5. Instruki ini mempunyai arti bahwa data dalam register serbaguna R5 disalin ke akumulator A. Instruksi ini

15
menjadikan regiser serbaguna R0 sampai R7 sebagai tempat penyimpan data yang praktis dan kerjanya sangat cepat. Mode pangalamatan kode tidak langusng (code indirect addresing mode ) Misalnya MOVC A, @A+DPTR. Dalam instruksi ini instuksi MOVdiganti dengan MOVC, tambahan huruf C tersebut dimaksud untuk membedakan bahwa instruksi ini digunakan untuk memori program, (MOV tanpa huruf C artinya digunakan untuk memori data). Tanda ‘ @ ‘ digunakan untuk menandai A+DPTR yang berfungsi untuk menyatakan lokasi memori yang isinya disalin ke akumulator A. 2.3.3. Instruksi-Instruksi Aritmatika Tabel 2.1 menunjukkan daftar instruksi-instruksi aritmatika yang dapat digunakan dalam MCS-51. waktu eksekusi pada tabel diatas adalah dengan menggunakan asumsi frekwensi clock yang digunakan adalah 12 MHz. pada operasi MUL AB, yang terjadi adalah hasil dari perkalian akan dianggap sebagai 16 bit dimana 8 bit teratas diletakkan pada B, sedangkan 8 bit yang lain diletakkan pada ACC. Pada operasi DIV AB, data pada akumulator akan dibagi oleh bilangan pada B, kemudian hasil bagi akan ditulis pada A, sedangkan sisanya akan ditulis pada B. Contoh penulisan operasi aritmatika ADD adalah sebagai berikut: ADD A,7Fh(direct addressing) ADD A,@R0(indirect addressing) ADD A,R7(register addressing) ADD A,#127(immediate constant) Tabel 2.2 Instruksi Aritmatika Mnemonic Operasi Mode pengalamatan Waktu eksekusi(µs) ------------------ADD A<byte> ADC A,<byte> SUBB A,<byte> ---------------------A=A+<byte> A=A+<byte>+C A=A+<byte>-C Dir X X X Ind X X X Reg X X X Imm X X X -------------------1 1 1

16
INC C INC <byte> INC DPTR DEC C DEC <byte> MUL AB MOV AB DA A a. A=A+1 <byte>=<byte>+1 DPTR=DPTR+1 A=A-1 <byte>=<byte>-1 B:A=BxA A=Int[A/B] B=mode[A/B] Desimal adjust Hanya akumulator X X X X Hanya akumulator Hanya akumulator X X X X Hanya ACC dan B Hanya ACC dan B Hanya akumulator 1 1 2 1 1 4 4 1

b.

c.

d.

e.

Penambahan ( ADD dan ADDC ) Instruksi ADD kan menambahkan suatu data dengan isi akumulator tanpa carry, sedangkan ADDC akan menambahkan isi akumulator yang disertai dengan carry, kedua instruksi penjumlahan ini hasilnya disimpan kembali dalam akumulaor. ADD ; (A) ← (A) + data ADDC ; (A) ← (A) + (C) + data Pengurangan ( SUBB ) Instruksi ini akan mengurangkan isi akumulator dengan isi carry flag dan isi data, kemudian hasilnya dsimpan dalam akumlator. SUBB ; (A) ← (A) - (C) - data Perkalian ( MUL ) Instruksi ini akan mengalikan isi akumulator dengan register B dan byte bawah hasilnya disimpan dalam akumulator, sedangkan byte atas hasilnya disimpan ke dalam register B. MUL ; (AB) ← (A) * (B) Pembagian ( DIV ) Sama dengan instruksi perkalian, instruksi pembagian juga menggunakan register B untuk menyimpan sisa pembagian, sedangkan akumulator akan menyimpan hasil bagi. DIV ; (AB) ← (A) : (B) Penambahan dan pengurangan satu ( INC dan DEC )

17
Instruksi INC merupakan proses penambahan satu pada isi suatu register atau memori, sebaliknya instruksi DEC akan mengurangi satu isi regiter atau memori. INC A ; (A) ← (A) + 1 DEC R0 ; (R0) ← (R0) - 1 2.3.4 Instruksi-Instruksi Logika a. Logika AND ( ANL ) Operasi logika AND banyak dipakai untuk me-nol-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 asli. Bit yang ingin di-nolkan diwakili dengan ‘ 0 ‘ pada data konstan, sedangkan bit lainnya diberi nilai ‘ 1 ‘ , misalnya instruksi ANL P1, # 01111110B akan mengakibatkan bit 0 dan bit 7 dari port 1 dipaksa bernilai ‘ 0 ‘ sedangkan bit-bit lainnya tetap tidak berubah nilai. b. Logika OR ( ORL ) Operasi logika OR banyak dipakai untuk me-satu-kan beberpa bit tertentu dari sebuah bilangan biner 8 bit, caranya dengan membentuk sebuah bilangan biner 8 bit sebagai data konstan yang di-ORL-kan bilangan asal. Misalnya instruksi ORL A, # 01111110B akan mengakibatkan bit 1 sampai dengan bit 6 dari akumulator bernilai ‘ 1 ‘ sedangkan bit-bit lainnya tetap tidak berubah. c. Exclusive-OR ( EXOR ) Operasi logika ini dipakai untuk membalik nilai (complement) beberapa bit tertentu dari sebuah bilangan biner 8 bit, caranya dengan membentuk sebuah bilangan biner 8 bit sebagai data konstan yang XRL-kan bilangan asal. Misalnya instruksi XRL A, # 01111110B akan mengakibatkan bit 1 sampai bit 6 dari akumulator berbalik nilai, sedangkan bit-bit lainnya tetap tidak berubah. Untuk lebih jelasnya lihat table di bawah ini:

18
Tabel 2.3 Instruksi Logika Mnemoni c Operasi Mode pengalamatan Wakt u eksek usi(µs ) Im -----m ----------X 1 1 2

----------------------ANL A,<byte> ANL <byte>,A ANL <byte>,#d ata ORL A,<byte> ORL <byte>,A ORL <byte>,#d ata XRL A,<byte> XRL <byte>,A XRL <byte>,#d ata CRL A CPL A RL A RLC A RR A

---------------------------------------A=A.AND.<byte> <byte>=<byte>AND. A <byte>=<byte>AND. #data A=A.OR<byte> <byte>=<byte>.OR. A <byte>=<byte>.OR. A A=A.XOR<byte> <byte>=<byte>XOR. A <byte>=<byte>XOR. #data A=00H A=NOT A Rotate ACC ke kiri 1 bit Rotate ACC ke kiri lewat Carry Rotate ACC ke kanan 1 bit

Dir

In d X

X X X

R e g X

X X X

X

X

X

1 1 2

X X X

X

X

X

1 1 2

Hanya akumulator Hanya akumulator Hanya akumulator Hanya akumulator Hanya akumulator

1 1 1 1 1

19
RRC A SWAP A Rotate ACC ke kanan lewat Carry Tukar nibble pada ACC Hanya akumulator 1 1

Yang perlu diingat adalah operasi Boolean/logika yang dilakukan untuk memproses Lower 128 atau SFR yang secara direct addressing, tidak harus melalui akumulator. Sebagai contoh : XRL P1,#0FFH. Perintah tersebut akan menghasilkan P1=P1.XOR FFH.

2.3.5 Data Transfer a. Internal RAM Tabel di bawah menunjukkan perintah-perintah untuk memindahkan data di dalam internal memory. Transfer data di dalam SFR dan Internal RAM dapat dilakukan tanpa melalui Akumulator, untuk Upper 128 hanya dapat ditransfer melalui indirect addressing, sedangkan untuk transfer data melalui SFR hanya dapat dilakukan dengan direct addressing. Perhatikan bahwa pada semua piranti MCS51, stack yang berada di dalam memory bergerak dari bawah ke atas. Instruksi PUSH mula-mula akan menginkremen nilai dari SP (Stack Pointer), kemudian akan mengkopi isi data ke dalam stack. Instruksi PUSH dan POP hanya digunakan dengan direct addressing untuk mengidentifikasi byte yang disimpan ataupun dikeluarkan. Namun demikian stack itu sendiri dapat diakses menggunakan indirect addressing dengan perantaraan register SP. Hal ini berarti stack dapat sampai pada Upper 128 jika dibutuhkan, namun tidak dapat masuk ke dalam daerah SFR Tabel 2.4 Instruksi Data Transfer yang mengakses Internal Data Memory Menemoni Operasi Mode Waktu c pengalamatan eksekusi (µs) ------------- -------------------------- Di I R I ---------------------------------r n e m ----d g m MOV A=<scr> X X X X 1 A,<scr>

20
MOV <dest>,A MOV <dest>,<sc r> MOV DPTR,#da ta16 PUSH <scr> POP <dest> XCH A,<byte> XCHD A,@Ri <dest>=A <dest>=<scr> X X X X X X X 1 2

DPTR=konstanta 16 bit INC SP:MOV”@SP”,<scr > MOV <DEXT>,”SP”,DEC ACC dan <byte>bertukar data ACC dan @Ri bertukar low nibble X

X

2

2

X X X X X

2 1 1

Transfer data di dalam SFR dan Internal RAM dapat dilakukan tanpa melalui Akumulator, untuk Upper 128 hanya dapat ditransfer melalui indirect addressing, sedangkan untuk transfer data melalui SFR hanya dapat dilakukan dengan direct addressing. Perhatikan bahwa pada semua piranti MCS-51, stack yang berada di dalam memory bergerak dari bawah ke atas. Instruksi PUSH mula-mula akan menginkremen nilai dari SP (Stack Pointer), kemudian akan mengkopi isi data ke dalam stack. Instruksi PUSH dan POP hanya digunakan dengan direct addressing untuk mengidentifikasi byte yang disimpan ataupun dikeluarkan. Namun demikian stack itu sendiri dapat diakses menggunakan indirect addressing dengan perantaraan register SP. Hal ini berarti stack dapat sampai pada Upper 128 jika dibutuhkan, namun tidak dapat masuk ke dalam daerah SFR. Pada piranti yang tidak menggunakan Upper 128, bila SP menunjuk pada daerah Upper 128, maka data yang diberi operasi PUSH akan hilang begitu saja, sedangkan data yang dikenakan operasi POP akan tidak terdeteksi. Instruksi-instruksi Data Transfer meliputi sebuah perintah MOV 16 bit yang dapat digunakan untuk menginisialisasi Data

21
Pinter (DPTR) untuk memeriksa tabel-tabel pada Program Memori, atau untuk akses 16 bit pada external Data Memory.

b. External RAM Tabel di bawah akan menunjukkan daftar dari instruksi-instruksi Data Transfer untuk mengakses external Data Memory. Pada instruksiinstruksi ini hanya digunakan mode Indirect addressing : Tabel 2.5 Instruksi Data Transfer Yang Mengakses External Data Memory Lebar Menemonic Operasi Waktu alamat eksekusi(µs 8 bit 8 bit 16 bit 16 bit MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A Baca Ekternal @Ri Baca Ekternal @Ri Baca Ekternal @DPTR Baca Ekternal @DPTR RAM RAM RAM RAM 2 2 2 2

Pada mode pengalamatan indirect di atas, Ri dapat berupa R1 ataupun R0 dari bank register. Kerugian dari menggunakan alamat 16 bit ini adalah jika hanya beberapa Kilo byte dari external RAM yang terlibat, sedangkan seluruh Port 2 akan digunakan sebagai bus alamat (bukan sebagai I/O Port). Perlu diperhatikan pada akses external Data RAM selalu menggunakan Akumulator baik sebagai source ataupun tujuan dari data. Untuk membaca dan menulis pada external RAM, sinyal baca/tulis hanya aktif pada saat pengeksekusian instruksi MOVX. Biasanya sinyal-sinyal ini tidak aktif dan jika dalam suatu program pin ini tidak diaktifkan sama sekali, maka pin ini dapat digunakan sebagai pin I/O ekstra.

c. Look-up Tables Tabel di bawah menunjukkan dua buah instruksi yang dapat memeriksa tabel pada Program Memori. Instruksi ini hanya dapat

22
mengakses Program Memori. Jika tabel akan mengakses Program Memori eksternal, maka sinyal yang akan dikirim adalah PSEN. Tabel 2.6 Instruksi Pembacaan Tabel

Pada instruksi MOVC yang pertama pada tabel di atas dapat mengakomodasi tabel sampai dengan 256 entri, dengan nomor 0 sampai dengan 255. Nomor yang diinginkan sebagai entry akan dimasukkan ke dalam Akumulator dan Data Pointer akan diset untuk menunjung pada awal dari tabel. MOVC A,@A+DPTR Perintah di atas akan mengkopi tabel entri yang diinginkan ke dalam akumulator.Perintah MOVC yang lain bekerja dengan cara yang sama, kecuali PC (Program Counter) yang digunakan sebagai basis dari tabel dan tabel akan diakses melalui sebuah subrutin. 2.3.6 Instruksi-Instruksi Boolean Piranti-piranti MCS-51 berisi instruksi-instruksi Boolean yang cukup lengkap. Tabel 2.7 Instruksi-Instruksi Boolean Operasi Waktu (µs) C=C.ANL.bit 2 C=C.ANL.NOT.bit 2 C=C.OR.bit 2 C=C.OR.NOT.bit C = bit Bit=C 2 1 2

Mnemonic ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit MOV C,bit MOV bit,C

eksekusi

23
CRL C CLR bit SETB C SETB bit CPL C CPL bit JC rel JNC rel JB bit,rel JNB bit,rel JBC bit,rel C=0 Bit=0 C=1 Bit=1 C=.NOT.C Bit=NOT.bit Jump if C=1 Jump if C=0 Jump if bit=1 Jump if bit=0 Jump if bit=1;CLR bit 1 1 1 1 1 1 2 2 2 2 2

Instruksi-instruksi untuk prosesor Boolean yang diperlihatkan pada tabel di atas, seluruh pengaksesan bit adalah dengan direct addressing. Alamat-alamat bit 00H sampai dengan 7FH adalah di dalam Lower 128 dan alamat-alamat bit dari 80H sampai dengan FFH ada dalam SFR. MOV C,FLAG MOV P1.0,C Dalam contoh di atas FLAG adalah nama sembarang bit yang dapat dialamatkan dalam Lower 128 atau dalam SFR. Sebuah jalur I/O (dalam hal ini LSB dari Port1) diset atau di-clear bergantung pada harga flag bit 1 atau 0. Bit Carry dalam PSW digunakan sebagai akumulator bit tunggal dari prosesor Boolean. Perlu diingat bahwa instruksi Boolean menyertakan operasi ANL dan ORL, tapi tidak XRL. Sebuah operasi XRL dapat dengan mudah diimplementasikan ke dalam software, sebagai contoh untuk membentuk Exclusive OR 2 bit : C= Bit1. XRL . Bit2

24
Secara software dapat dilakukan sbb: MOV C, Bit1 JNB Bit2,OVER CPL C OVER: ………… Mula-mula, bit1 akan dipindahkan ke Carry. Jika bit2=0 maka C sekarang berisi dari hasil akhir. Sebaliknya apabila bit2=1 maka C akan berisi hasil akhir. Semua bit pada PSW pengaksesannya adalah hanya dengan direct addressing, jadi Parity bit, atau flag-flag yang lain juga dapat digunakan untuk instruksi-instruksi bit test seperti di atas. 2.3.5 Instruksi lompatan bersyarat a. Instruksi JZ / JNZ Instruksi JZ (Jump if Zero) dan Instruksi JNZ (Jump if not Zero) adalah instruksi JUMP bersyarat yang memantau nilai Akumulator A, dalam contoh MOV A, # 0 menjadikan akumulator A berisi nol, hal ini mengakibatkan instruksi JNZ Bukan NOL tidak akan pernah dikerjakan (JNZ artinya Jump kalau nilai A <> 0, sedangkan saat instruksi ini dijalankan nilai A = 0), jadi instruksi JZ NOL selalu dikerjakan karena syaratnya selalu dipenuhi. b. Instruksi JC / JNC Instruksi JC (Jump on Carry) dan instruksi JNC (jump on no Carry) adalah instruksi jump bersyarat yang memantau nilai bit Carry di dalam Program Status Word (PSW). c. 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. 2.3.6 Instruksi Proses dan Test a. Instruksi DJNZ Instruksi DJNZ (Decrement and Jump if not Zero) merupakan instruksi yang akan mengurangi 1 nilai register serbaguna (R0…R7) atau memori data dan akan lompat ke memori program yang dituju jika ternyata setelah pengurangan 1 tersebut hasilnya tidak nol. b. Instruksi CJNE

25
Instruksi CJNE (Compare and Jump if not Equal) membandingkan dua nilai yang disebut dan MCS akan lompat ke memori program yang dituju kalau kedeua nilai tersebut tidak sama. 2.3.8 Instruksi-Instruksi jump tanpa syarat Tabel di bawah menunjukkan daftar dari perintah-perintah Jump tak bersyarat Tabel 2.8 Jump Tanpa Syarat (Unconditional Jumps) Mnemonic JMP addr JMP @A+DPTR CALL addr operasi Lompat ke addr Lompat ke A+addr Panggil subrutin dengan alamat addr Kembali dari subrutin Kembali dari interrupsi Tidak ada operasi Waktu (µs) 2 2 2 eksekusi

RET RETI NOP

2 2 1

Pada tabel hanya terdapat perintah “JMP addr”, padahal secara fakta terdapat tiga buah perintah lain, yakni : SJMP, LJMP dan AJMP, dimana memiliki perbedaan pada format dan alamat tujuan. JMP adalah mnemonic umum yang biasa digunakan pada program, user biasanya tidak peduli lagi dengan bagaimana suatu perintah Jump itu dikodekan. Perintah SJMP mengkodekan alamat tujuan sebagai relative offset, seperti yang telah dijelaskan di atas. Instruksi ini memiliki lebar 2 byte, berisi opcode dan byte relative offset. Perintah ini memiliki batas range dari -128 sampai 128 byte dihitung dari perintah SJMP itu dieksekusi. Perintah LJMP mengkodekan alamat tujuan sebagai sebuah konstanta 16 bit. Instruksi ini terdiri atas 3 byte,

26
berisi opcode dari instruksi serta dua byte alamat. Alamat tujuan dapat diletakkan di mana saja di dalam Program Memori yang 64 KB tersebut. Perintah AJMP mengkodekan alamat tujuan sebagai konstanta 11 bit. Instruksi ini terdiri atas 2 byte, yang berisi opcode, dimana opcode itu sendiri berisi 3 bit yang merupakan bagian dari konstanta yang 11 bit itu, serta 1 byte alamat. Saat instruksi ini dieksekusi, 11 bit ini akan menggantikan 11 bit terendah dari PC, sedangkan 5 bit Teratas dari PC tetap pada tempatnya. Sehingga alamat tujuan paling tidak adalah masuk dalam range 2K dari instruksi AJMP. Pada semua kasus Jump, programmer mendefinisikan alamat tujuan dengan cara yang sama yaitu dengan label atau dengan konstanta 16 bit. Jika format yang diberikan oleh instruksi tidak mensupport jarak dari alamat tujuan, maka pesan “Destination out of Range” akan muncul di dalam file List pada saat kita mengkompilasi. Perintah ‘JMP @ A+DPTR’ juga menunjang instruksi-instruksi jump bersyarat. Alamat tujuan diproses pada saat penjumlahan antara DPTR 16 bit dengan Akumulator. Biasanya, DPTR diset dengan diisi alamat basis (acuan) , sedangkan akumulator diisi dengan index dari tabel. Pada pencabangan 5 jalur, sebagai contoh, sebuah integer 0 sampai 4 dapat dieksekusi seperti berikut: MOV DPTR,#JUMP_TABLE MOV A,INDEX_NUMBER RL A JMP @A+DPTR CALL adalah mnemonic umum yang dapat digunakan oleh programmer tanpa mempedulikan bagaimana alamat tersebut dikodekan. Instruksi LCALL menggunakan format alamat 16 bit dan subrutin yang dipanggil dapat terletak di mana saja di dalam Program Memori yang 64 KB. 2.3.9 Struktur Interupsi Inti dari 89C51 menyediakan 5 buah interupsi, yakni : 2 adalah interupsi eksternal, 2 adalah interupsi timer dan sebuah serial port interupsi. Di bawah akan dijelaskan lebih mendalam bagaimana memanfaatkan interupsi-interupsi ini.

27
Tiap interupsi dapat secara individu dimatikan ataupun diaktifkan dengan menset bit yang sesuai pada SFR yang disebut IE (Interrupt Enable). Perlu diingat juga bahwa apabila bit EA pada IE diberi nilai 0, maka seluruh interupsi yang ada tak dapat digunakan. Enable bit =1 , enable semua interupsi Enable bit =0 , semua interupsi tak dapat digunakan (disable)

Gambar 2.9. konfigurasi bit pada register IE. Tabel 2.9 IE (Interrupt Enable)

Tiap interupsi juga dapat secara individu diprogram untuk satu atau dua prioritas level dengan menset bit pada SFR yang bernama IP (Interrupt Priority). Sebuah Interupsi yang memiliki level Interupsi Prioritas yang rendah (low priority interrupt) dapat diganggu / diinterupsi oleh interupsi yang Memiliki prioritas yang tinggi (high priority interrupt), tapi tidak dapat diganggu oleh interupsi lain yang juga merupakan low priority interrupt. Sebuah high priority interrupt tidak dapat diganggu/diinterupsi oleh interupsi manapun. Jika dua buah interupsi diterima oleh kontroler secara bersamaan maka interupsi yang memiliki level prioritas yang lebih tinggilah yang akan dilaksanakan, namun apabila kedua interupsi tersebut Memiliki level interupsi yang sama, maka urutan internal polling yang akan menentukan interupsi manakah yang akan dilayani.

28
Jadi di dalam tiap level prioritas terdapat struktur prioritas kedua yang ditentukan oleh urutan polling.

Priority bit = 1 dianggap high priority Priority bit = 0 dianggap low priority Gambar 2.10 Urutan poling dalam interrupt prioritas Tabel 2.10 IP (Interrupt Priority)

2.4 TIMER / COUNTER Mikrokontroler 8051 mempunyai dua buah register Timer/Counter 16 bit , Timer 0 dan Timer 1. Pada saat sebagai Timer, register naik satu (increment) setiap satu cycle. Jika digunakan osilator 12 Mhz, maka satu cycle sama dengan 1/12 frekuensi osilator = 1_s. Pada saat sebagai counter, register naik satu (increment) pada saat transisi 1 ke 0 dari input eksternal , T0 atau T1. Apabila periode tertentu telah dilampaui, Timer/Counter segera menginterupsi mikrokontroler untuk memberitahukan bahwa perhitungan periode waktu telah selesai dilaksanakan. Periode waktu Timer/Counter secara umum ditentukan oleh persamaan berikut: a. Sebagai T/C 8 bit T = (255 – TLx) * 1_s

29
Dimana TLx adalah isi register TL0 atau TL1. b. Sebagai T/C 16 bit T = (65535 – THx TLx) * 1_s THx = isi register TH0 atau TH1 TLx = isi register TL0 atau TL1 Pengontrol kerja Timer/Counter ada pada register timer control (TCON). Adapun definisi dari bit-bit pada timer control adalah sebagai berikut:

Gambar 2.11 Susunan bit TCON Tabel 2.11 TCON (TimerControl)

Pengontrol pemilihan mode operasi Timer/Counter ada pada register timer mode (TMOD) . Definisi bit-bitnya adalah sebagai berikut:

Gambar 2.12 Susunan bit TMOD Keterangan:

30
GATE Gate control set. Timer/Counter “x” akan aktif jika pin “INTx” high dan kondisi pin “TRx” sedang set. Gate control clear. Timer”x” akan aktif jika “TRx” set C / T Timer/Counter Selector. Clear untuk mode Timer ( input dari internal clock ) dan set untuk mode Counter (input dari pin “Tx” ) M1 Bit untuk memilih mode timer/counter M0 Bit untuk memilih mode timer/counter x = 0 atau 1. Tabel 2.12 Mode Timer

Mode 0 Pada mode ini timer bekerja sebagai timer 13 bit yang terdiri dari counter 8-bit dengan pembagi 32 (pembagi 5 bit). Gambar menunjukkan diagram timer yang bekerja pada mode 0. Setelah perhitungan selesai, mikrokontroler akan mengeset Timer Interrupt Flag (TF1). Dengan membuat GATE = 1, timer dapat dikontrol oleh input dari luar (INT1), untuk fasilitas pengukuran lebar pulsa. Register 13 bit yang digunakan terdiri dari 8 bit dari TH1 dan 5 bit bawah dari TL1 ( bit 6,7,8 tidak digunakan ).Mengeset TR1 tidak akan menghapus isi register. Operasi pada mode 0 untuk Timer 0 dan Timer 1 adalah sama.

31

Gambar 2.13 Timer/Counter 1 bekerja dalam mode 0, sebagai T/C 13-bit Mode 1 Mode 1 sama dengan mode 0 kecuali register timer akan bekerja dalam mode 16 bit. Mode 2 Mode 2 menyusun register timer sebagai 8 bit counter (TL1) dengan kemampuan reload otomatis seperti yang ditunjukkan pada gambar 14. Overflow dari TL1 tidak hanya menset TF1 tetapi juga mengisi TL1 dengan isi TH1 yang diisi sebelumnya oleh software. Pengisian ulang ini tidak mengubah nilai TH1.

Gambar 2.14 Timer/Counter 1 bekerja pada mode 2, sebagai T/C 8-bit auto- reload Mode 3 Dalam operasi mode 3 Timer 1 akan berhenti, hitungan yang sedang berjalan dipegang. Efeknya sama seperti mengatur TR1 = 0. Timer 0 dalam mode 3 membuat TL0 dan TH0 sebagai dua counter terpisah. TL0 menggunakan kontrol bit timer 0 yaitu C/T, GATE, TR0,

32
INT 0, dan TF0. TH0 berfungsi hanya sebagai timer dan mengambil alih penggunaan TR1 dan TF1 dari Timer1 dan sekarang TH0 mengontrol interupsi Timer 1. Mode 3 diperlukan untuk aplikasi yang membutuhkan ekstra Timer/Counter 8 bit. Dengan timer 0 dalam mode 3, mikrokontroler 8051 seperti memiliki 3 T/C. Saat Timer 0 dalam mode 3, Timer 1 dapat dihidupkan atau dimatikan, atau dapat digunakan oleh port serial sebagai pembangkit baud rate dalam aplikasi komunikasi serial

Gambar 2.15 Timer/Counter 0 bekerja pada mode 3, sebagai 2 timer/counter 8bit Menset Timer/Counter 0 atau Timer/Counter 1 Sebagai contoh untuk menjalankan Timer/Counter 0 dalam mode 8-bit timer auto reload dengan kontrol internal maka nilai yang harus dimasukkan ke register TMOD adalah 02H. Untuk menjalankan Timer/Counter 0 dalam mode 16 bit counter dengan kontrol eksternal maka nilai yang harus dimasukkan ke register TMOD adalah 0DH. Nilai yang dimasukkan ke register TMOD diatas hanya akan beroperasi pada satu timer bila diinginkan untuk menjalankan timer1 dan timer 0 secara bersamaan, maka nilai diatas di OR kan dengan nilai yang diperlukan untuk mengoperasikan Timer/Counter 1.

33
Sebagai contoh T/C 1 pada mode timer 13-bit kontrol internal dan T/C 0 pada mode 8-bit auto-reload dengan kontrol internal maka nilai yang harus dimasukkan ke TMOD adalah 02H. Dalam mode kontrol internal, operasi Timer/Counter dihidup-matikan dengan mengeset bit “TRx” (kontrol software). Pada kontrol eksternal, timer dihidup-matikan dengan memberikan logika 0 pada pin INT 0 (kontrol hardware). 2.9 KEYPAD Keypad merupakan piranti untuk meng-input-kan data kepada mikrokontroler yang terdiri dari rangkaian beberapa push button. Pada proyek akhir ini memanfaatkan key pad yang terdiri dari 5 push button. Meskipun jumlah tombolnya hanya 5 tetapi key pad ini dapat diatur melalui program sehingga dapat berfungsi dengan baik. Dalam hal ini memerlukan abjad sebanyak 23, angka sebanyak 10, dan beberapa instruksi untuk input data. Oleh karena itu diperlukan pengaturan fungsi melalui scaning program. .

Gambar 2.16 Diagram Keypad 4x3 Keypad 4x3 di sini adalah sebuah keypad matrix dengan susunan empat baris dan tiga kolom dengan sebuah common Seperti terlihat dalam gambar di atas, apabila saklar ‘1’ ditekan, maka baris 1 dan kolom 1 akan terhubung ke common. Apabila saklar ‘2’ ditekan, maka baris 1 dan kolom 2 akan terhubung ke common dan seterusnya. Ada dua metode scanning yang digunakan dalam pemrograman key pad secara umum yaitu:

34
1. Metode polling Metode polling adalah metode scanning terus menerus terhadap key pad sampai didapat data dari penekanan tombol. 2. Metode interupt driven Metode ini memanfaatkan interupt sebagai pemmicu saat adanya penekanan tombol. Cara ini lebih dalam hal penhematan waktu akses CPU dalam program secara keseluruhan. Jika tidak ada penekanan maka CPU dapat digunakan untuk mengakses program yang lain. Dari kedua metode di atas penulis menggunakan metode yang pertama yaitu metode polling karena dari segi perangkat keras relatif lebih sederhana dan secara perangkat lunak lebih mudah direalisasikan. 2.10 LCD Lcd merupakan perangkat elektronik yang terbuat dari crystal cair, yang digunakan untuk menampilkan karakter atau bilangan sebagai informasi dari kerja dari suatu sistem berbasis mikrokontroller. Setiap lcd sudah dilengkapi IC driver yang berfungsi sebagai kontrollnya. Salah satu tipe lcd yang banyak digunakan adalah LCD tipe M1632. yaitu LCD yang mempunyai 2 baris tampilan dan setiap baris dapat menampilkan hingga 16 kolom karakter.Setiap baris dan kolom mempunyai alamat sendiri-sendiri. LCD tipe M1632mempunyai alamat 80h sampai 8fh untuk baris pertama dan untuk baris kedua C0h sampai Cfh. Pengiriman data ke LCD ini ada dua macam yaitu data sebagai instruksi dan data sebagai karakter yang akan ditampilkan dilayar. Keduanya dibedakan oleh sebuah kaki yang diberi nama RS (Register Select) dimana jika berlogika 1 (high), maka data yang diterima oleh LCD adalah data untuk menampilkan karaker sedangkan jika berligika 0 (low), maka data yang diterima oleh LCD adalah data instruksi bagi LCD tersebut. Instruksi diperlukan yaitu untuk inisialisasi LCD, meletakkan cursor pada garis, menghapus layer dan sebagainya sesuai dengan data sheet LCD tersebut

35

Gambar 2.17 Rangkaian Interface ke LCD

Gambar 2.18 M1632 Hitachi LCD 1632 adalah merupakan modul LCD dengan tampilan 16 x 2 baris dengan konsumsi daya yang rendah. Modul ini dilengkapi dengan mikrokontroler yang didisain khusus untuk mengendalikan LCD. Mikrokontroler HD44780 buatan Hitachi yang berfungsi sebagai pengendali. LCD ini mempunyai CGROM (Character Generator Read Only Memory), CGRAM (Character Generator Random Access Memory) dan DDRAM (Display Data Random Access Memory). LCD M1632 merupakan LCD 8 bit yang terdiri dari DB0DB7, pin CE (chip enable) berfungsi untuk meng-enable-kan LCD, pin R/W (read / write) untuk memilih apakah membaca atau menuliskan data pada LCD, pin RS (command / data) yaitu untuk mengaktifkan instruksi atau data, pin VLCD untuk mengatur kekontrasan display LCD.

36
Tabel 2.13 Deskripsi pin-pin pada LCD

37

BAB III PERENCANAAN DAN PEMBUATAN PERANGKAT LUNAK Pembahasan materi dalam bab ketiga ini meliputi perencanaan perangkat lunak secara keseluruhan yang merupakan bahasan utama dalam proyek akhir. 3.1. UMUM Perancangan sistem ini merupakan tahap awal dari pembuatan sebuah software. Sebelum merancang perangkat lunak, yang perlu diketahui adalah susunan dari sistem itu sendiri (blok diagram sistem). Seperti yang tampak pada gambar 3.1 dapat diketahui bahwa keseluruhan dari sistem menggunakan sebuah sistem kontrol / mikrokontroller, penampil LCD, input keypad, switch, push button, dan joystick serta output pada motor dc serta motor stepper. Sistem dirancang dengan menentukan terlebih dahulu sistem kontroller yang dipakai, perencanaan port yang digunakan sebagai masukan dan keluaran, selanjutnya dilakukan pembuatan program utama dan subrutin-subrutinnya.

Gambar 3.1 Blok diagram sistem 3.2 PERENCANAAN PERANGKAT LUNAK 3.2.1 Sistem Kontroler Sistem Mikrokontroler yang direncanakan adalah menggunakan salah satu keluarga MCS-51 yaitu 89s51 dengan memori program internal 4 Kbyte sehingga tidak memerlukan memori program eksternal. Mikrokontroller 89s51 dipilih karena diperkirakan memiliki memori ,

38
jumlah timer / counter, serta jumlah port yang cukup untuk digunakan dalam proyek akhir ini. Mikrokontroler dipergunakan untuk mengontrol semua peralatan yang ada dalam sistem dan menerima data dari keypad , joystick, switch dan push button. Keypad digunakan untuk memasukkan pemilihan mode opersi maupun untuk memasukkan jumlah step pemanjatan yang akan dilakukan oleh robot, keypad dihubungkan pada port 0. Yang mana akan ditampilkan pada LCD yang terhubung pada port 1. Joystick digunakan untuk menjalankan robot secara manual. Dimana gerakan robot diatur melalui tombol yang ada pada joystick. Sedangkan Push button yang dipasang pada masing-masing kaki robot dan bodi robot akan aktif saat kaki robot mencengkeram tiang. 3.2.2 Perencanaan Memori Dalam sistem ini memori terbagi menjadi dua yaitu memori program dan memori data. Karena tipe Mikrokontroler yang digunakan adalah 89S51 dimana baik memori program maupun memori data terdapat dalam satu chip, maka tidak diperlukan memori eksternal dan pin EA diberi logika ‘1’ dengan menghubungkannya dengan Vcc sehingga alamat memori program yang diproses setelah reset adalah 0000h. 3.2.3 Perencanaan Masukan Dan Keluaran Pada Mikrokontroler 89S51 terdapat 4 buah port 8 bit. Port 0 digunakan sebagai databus untuk LCD. Port 1 digunakan sebagai databus untuk keypad. Port 2 digunakan sebagai output untuk kontrol driver motor dan Input Push Button maupun Switch. Dan Port 3 digunkan sebagai jalur input data dari joystick 3.2.4 Program Utama Program yang dirancang untuk mengendalikan proses kerja dari robot ini terdiri atas beberapa sub program yang menyusun program yang terintegrasi. Eksekusi terhadap program utama dilakukan setelah alat diaktifkan atau direset secara hardware. Pengaktifan tombol reset menyebabkan Program Counter (PC) menuju alamat 0030H lokasi awal dari program. Yang perlu diperhatikan sebelum membuat program adalah sebagai berikut: 1. Persiapan

39
Pendefinisian variabel-variabel, inisialisasiLCD, dan penentuan register - register yang akan digunakan. Serta menentekuan port-port yang akan digunakan untuk mengontrol device yang digunakan Proses pengambilan data masukan Proses pengambilan data masukan melalui pembacaan keypad, joystick, pushbutton maupun limit switch. Data dari pembacaan keypad kemudian diolah menjadi masukan set poin untuk mengendalikan proses kerja pengaturan jumlah pemanjatan yang akan dilakukan oleh robot. Sedangkan joystick digunakan untuk melakukan pemindahan mode dari otomatis ke manual. Maupun untuk menjalankan robot secara manual. Pushbutton dan switch digunakan untuk indikator pergerakan robot dimana pushbutton dipasang pada masing masing kaki robot dan limit swicth dipasang pada bodi robot Proses kerja sistem Eksekusi program yang berjalan pada sistem ini terjadi secara terintegrasi.dimana sitiap bagian dari mekanisme gerakan yang terjadi pada saat robot berjalan terjadi secara teratur dan berurutan. Robot akan terus melakukan pemanjatan sampai tercapai ketinggian terentu sesuai dengan setting point yang dimasukkan melalui keypad. Dan pada saat robot berjalan dapat dilakukan interrupt berupa pemindahan mode dari otomatis ke mode manual. Jika tidak ada interupt setelah mencapai ketinggian sesuai setting point robot akan kembali turun ke posisi semula. LCD digunakan sebagai display yang akan menampilkan pemilihan mode operasi yang digunakan dan data input setting step pemanjatan.

2.

3.

3.2.5 Subrutin-subrutin. Diantara subrutin-subrutin yang ada yang perlu menjadi perhatian adalah subrutin inisialisasi, subrutin pengambilan data keypad, subruttin untuk menampilkan data di LCD, subrutin untuk mengatur driver masing – masing motor. Dan dari semua sub rutin tadi di integrasikan dalam suatu sitem yang terpadu. 3.2.5.1 Inisialisasi. Pada inisialisasi ini, program akan menginisialisasikan register yang digunakan, termasuk inisialisasi LCD.

40
Huruf atau angka yang akan ditampilkan dikirim ke LCD dalam bentuk kode ASCII, kode ini diterima dan diolah oleh mikrokontroler didalam LCD menjadi ‘titik-titik’ LCD yang terbaca sebagai huruf atau angka. Dengan demikian tugas mikrokontroler pemakai tampilan LCD hanyalah mengirimkan kode-kode ASCII untuk ditampilkan. Pada subroutine inisialisasi ini dilakukan inisialisasi terhadap kontrol-kontrol peripheral-peripheral penunjang yaitu LCD. Karena keypad masuk pada P1 yang telah disatukan menurut hardware maka tidak diperlukan lagi inisialisasi terhadap keypad 3.2.5.2 Subprogram scanning keypad Sub program ini bertujuan untuk mendeteksi penekanan tombol keypad, yaitu dengan menggunakan metode scanning. Dalam sistem ini keypad digunakan untuk melakukan pemilihan mode operasi dan memasukkan data setting point pemanjatan. 3.2.5.3 Subprogram perbandingan data Data dari keypad setelah diterima dimasukkan ke RAM internal, data tersebut akan dibandingkan dengan jumlah step pemajatan yang telah dilakukan. Hal ini berlaku pada saat robot dioperasikan pada mode otomatis. Jika belum sesuai maka akan looping namun jika telah terpenuhi robot akan berhenti dan turun ke posisi awal. Dalam proses pemanjatan ini juga dilakukan pengecekan adanya interupt dari luar untuk melakukan pemindahan mode operasi ke manual 3.2.5.4 Subprogram menampilkan pada LCD Menu-menu dari proses kerja sistem yang diinginkan oleh user ditampilkan di LCD. Selain itu data setting point yang telah dimasukkan dari keypad juga di tampilkan di LCD. 3.3 ALGORITMA Berikut adalah algoritma dan flowcart dari sistem secara keseluruhan 3.3.1 Algoritma pada pergerakan robot 1. Pada kondisi awal robot sudah pada posisi mencengkeram tiang pada ke-enam kakinya. 2. Setelah dilakukan start maka akan tampil menu pilihan pada LCD, yaitu berupa mode operasi yang diinginkan (manual atau otomatis).

41
3. Jika user memilih mode otomatis maka selanjutnya akan tampil perintah untuk memasukkan nilai setting pint step pemanjatan. Data setting point ini akan disimpan di register tertentu. 4. Jika user memilih mode manual maka, hal selanjutnya yang harus dilakukan user adalah mengendalikan pergerakan robot untuk naik atau turun secara manual melalui push button yang ada pada joystick. 5. Ketika robot bergerak ketas, hal pertama yang dilakukan robot adalah membuka sepasang kaki atas kemudian bodi akan meenjulur dan setelah mengenai limit switch bodi berhenti menjulur. Sepasang kaki atas akan menutup kembali sampai push button yang terpasang pada kaki ON. Hal ini untuk memastikan bahwa sepasang kaki telah benar-benar mencengkeram tiang dengan kuat untuk menghindari robot terjatuh. 6. Sepasang kaki bawah akan membuka dan kemudian bodi bagian bawah akan terangkat keatas setelah limit swtch pada bodi ON berhenti. Dan sepasang kaki bawah akan menutup kembali sampai push button yang terpasang pasa kedua kaki bawah ON. 7. Point 5 dan point 6 merupakan gerakan satu step robot saat melakukan pemanjatan tiang. Rutin ini akan looping terus sampai tecapai kondisi yang sesuai denga setting point. 8. Pada saat robot malakukan pemanjatan atau turun akan terus dilakukan pengecekan terhadap kemungkinan terjadinya interupt dari jostick untuk melakukan pemindahan mode ke mode manual. 9. setiap kali tercapai satu step pemanjatan maka akan dilakukan perbandingan dengan setting point yang telah dimasukkan melalui keypad jika jumlah pemanjatan yang dilakukan telah sesuai dengan setting point maka robot akan berhenti. Dan kemudian robot akan turun kembali ke posisi awal. 10. Gerakan untuk robot saat turun pada prinsipnya sama denganm pada saat melakukan pemanjatan hanya saja urutan step yang dibalik. Yang itu step pada point 6 baru mengerjakan step pada point 5. 3.4 Flowchart Didalam penyusunan program, untuk memudahkan didalam pembuatannya, maka perlu untuk membuat Flowchart sebagai acuan

42
penyusunan program yang ada. Berikut flowchart untuk perangkat lunak sistem ini. Pada gambar flowchart dibawah adalah flowchart dari gerakan robot saat melakukan pemanjatan (Up), saat robot kembali turun (Down) dan flowchart dari gerakan robot secara keseluruhan. 3.4.1 Flowchart saat robot naik (Up)
START

KK BAW AH CLO SE

NO KK BAW AH CLO SE

YES KK ATAS OPEN BODY 1 UP KK ATAS C LO SE KK BAW AH OPEN KK ATAS CLO SE BODY 2 UP KK BAW AH CLO SE

C E K IN T E R U P T

Gambar 3.2 Flowchart robot UP Secara keseluruhan gerakan robot terdiri atas dua bagian yaitu gerakan saat pemanjatan dangerakan saat robot kembali turun. Pada gambar 3.2 diatas merupakan gerakan dari satu step untuk melakukan pemanjatan. Setiap kali selesai dilakukan pemanjatan sebanyak satu step maka akan dilakukan pengecekan terhadap terhadap interupt. Jika robot bekerja dalam mode otomatis maka jumlah looping yang terjadi adalah sesuai dengan setting point pada saat start. 3.4.2 Flowchart saat robot turun (Down) Secara algoritma gerakan yang terjadi pada saat robot turun tidak jauh berbeda dengan gerkan yang terjadi pada saat pemanjatan. Berikut merupakan flowchart dari robot saat turun.

43
START

KK ATAS CLO SE

NO KK ATAS CLO SE ?

YES KK BAW AH OPEN BODY 1 UP KK BAW AH CLO SE KK ATAS OPEN KK BAW AH CLO SE BODY 2 UP KK ATAS C LO SE

C E K IN T E R U P T

Gambar 3.3 Flowchart robot Down Yang membedakan antara gerakan robot pada saat naik dan gerakan robot pada saat turun hanya pada urutannya saja. Yaitu kaki mana yang harus membuka atau menutup terlebih dahulu. Hal ini dapat terjadi karena secara mekanik motor penggerak bodi robot telah dibuat untuk dapat burputar bolak-balik dengan pengaruhyang berbeda. Berikut arah putar dari motor pada bodi robot dan pengaruhnya terhadap gerakan robot: o Motor bodi berputar searah jarum jam (CW). Jika kaki atas membuka dan kaki bawah menutup maka bodi atas akan turun (robot memendek). Tapi jika kaki atas menutup dan kaki bawah membuka maka bodi robot bawah akan terangkat (bodi memendek). o Motor bodi berputar berlawanan arah jarum jam (CCW). Jika kaki atas membuka dan kaki bawah menutup maka bodi akan menjulur ke atas (bodi memanjang). Tapi jika kaki atas menutup dan kaki bawah membuka maka bodi robot bawah yang akan menjulur kebawah .

44
Pada kedua flowchart diatas peletakan cek interrupt adalah diakhir dari satu siklus gerakan naik atau turun. Hal ini bertujuan agar pada saat terjadi interrupt yang dilakukan melalui joystick robot sudah dalam keadaan siap untuk melakukan instruksi dari joystick, sehingga robot tidak terjatuh jika instruksi itu terjadi sewaktu -waktu. 3.4.2 Flowchart gerakan robot secara keseluruhan
START

P IL IH M O D E

A U TO = T R U E?
YES

NO

IN P U T S E T P O IN T

A = S E T P O IN T ( S IM P A N S E T P O IN T DI REG A )

YES

S E T P O IN T = 0 ?
NO S E T P O IN T = A ? YES

BACA IN S T R U K S I J O Y S T IC K

ROBOT UP D E C S E T P O IN T ( S E T P IO N T - 1)

NO

ROBOT DOW N
IN C S E T P O IN T

C E K IN T
YES Gambar T = T R U E ? pemanjat IN 3.4 Flowchart robotP E R IN T A H pemanjat tiang IN E R U P Algoritma yang digunakan padaT robot Tpemanjat tiang ini secara NO keseluruhan adalah seperti ditunjukkan pada flowchart diatas. Kita END harus menentukan dulu mode operasi yang akan kita lakukan pada saat awal menjalankan robot. Dimana mode opersi yang dapat dilakukan adalah mode otomatis dan mode manual. Setelah kita memberikan pilihanmode yang dapat kita inputkan melalui keypad maka robot sudah dapat kita jalankan dengan control joystick jika mode yang kita pilih

JA LA N K A N

44
adalah manual. Atau kita akan memasukkan setting ketinggian yang akan dicapai dan robot akan bekerja secara otomatis jika mode yang kita pilih adalh mode otomatis.

BAB IV PENGUJIAN DAN ANALISA Pada bab ini akan dilakukan pengujian untuk mengetahui tingkat keberhasilan proyek akhir yang telah direncanakan seperti pada Bab III.

45
Dengan adanya pengujian akan diketahui kekurangan - kekurangan yang ada, sehingga dapat dilakukan perbaikan. Pengujian yang dilakukan meliputi pengujian perangkat lunak dan perangkat keras. Tujuan dari pengujian ini adalah untuk mengetahui kinerja dari sistem yang berupa kehandalan dan ketepatan eksekusi antara program dengan modul yang dibuat untuk mengontrol sistem yang ada. Tanpa menutup kemungkinan adanya kekurangan-kekurangan dalam sistem yang telah dibuat. Untuk memudahkan dalam menganalisa dan menghindari adanya error, maka sebelum semua program digabungakan menjadi program yang terintergrasi, maka sebaiknya dilakukan pengujian program dari masing – masiang bagian secara terpisah. Pengujian yang dilakukan pada bab ini meliputi: 1. 2. 3. 4. 5. Pengujian minimum sistem. Pengujian keypad. Pengujian LCD. Pengujian driver motor Pengujian sistem keseluruhan

4. 1 Pengujian Minimum Sistem Untuk memgetahui apakah module mikrokontroller 89s51 bekerja dengan baik, maka diadakan pengujian pada jalur port – port yang dimiliki oleh mikrokontroller 89s51. Cara pengujiannya yaitu terlebih dahulu rogram diuji dengan software ASM51 untuk mengetahui apakah program masih terdapat error atau tidak. Dan setelah diuji didapatkan program tersebut tidak terdapat error. Untuk running program, caranya hubungkan langsung antara PC dan mikrokontroller melalui kabel serial Pc dan lakukan Download program, lalu amati hasilnya pada modul tampilan led.

46

Gambar 4.1 ISP-Flash programmer Pada Gambar 4.1 merupakan downloader ISP-Flash Programmer yang dapat dengan mudah digunakan untuk mendownload file yang sudah berekstensi .hex. Untuk editornya dapat menggunakan berbagai macam editor, misalnya ultraEdit-32. Setelah program diCompile dan tidak ada error atau kesalahan maka file yang sudah berekstensi Hex, dipanggil oleh program ISP-Flash Programmer untuk didownload kemikrokontroller yang sudah terpasang pada sistem minimum. Caranya klik command Open File, selanjutnya klik Write sampai ada indikator dibawah form “Programming and Verifying Ok”. Programnya dapat diikuti seperti gambar di bawah ini, dimana modul yang dikontrol berupa 8 buah LED dihubungkan dengan port 1 dari mikrokontroller.

47
org 00h sjmp start start: Mov P1,#00001111B ; LED P1.4 s/d P1.7 ;nyala call Delay ; panggil sub routine Delay Mov P1,#11110000B ; LED P1.0 s/d P1.3 ;nyala call Delay ; panggil sub routine Delay Jmp start ; Lompat ke alamat dg label start ;------------------; sub routine delay ;------------------Delay: Mov R0,#6 ; Isi Register R0 dengan 6 Delay1: Mov R1,#00h ; Isi Register R1 dengan FF (hex) Delay2: Mov R3,#00h djnz R3, $ ; kurangi sampai R3 = 0 djnz R1, delay2 ;Kurangi R1 dengan 1, bila tidak ;sama dengan 0 maka ke Dealay2 djnz R0, delay1; Kurangi R0 dengan 1, bila tidak ;sama dengan 0 maka ke Delay1 ret Gambar 4.2 alamat setelah perintah 'call Delay' ; Kembali ke Listing pengujian minimum system

Berdasarkan program diatas, dapat dilihat bahwa program tersebut End bertujuan untuk menyalakan LED pada port 1 sebagai flip-flop yang terbagi menjadi dua yaitu nibble tinggi dan nibble rendah. Dan setelah dilakukan pengujian pada sistem mikrokontroller 89S51, maka pada LED akan menyala bergantian seperti flip-flop, mula-mula LED pada p1.0 s/d p1.3 akan menyala beberapa saat kemudian mati diikuti dengan LED yang menyala pada p1.4 s/d p1.7 untuk beberapa saat dan kembali lagi (loop) seperti langkah awal unuk seterusnya, penggantian nyala LED tersebut terus terjadi sebelum power di off kan atau di reset dan dimasukan program yang lain. Hasil dari pengujian program diatas pada minimum sistem ditunjukkan pada gambar dibawah ini:

Gambar 4.3 Nyala LED pada nible atas port 1

Gambar 4.4 Nyala LED pada nible bwah port 1 LED akan menyala jika bit – bit pada minimum sistem tersebut mendapat logika ’0’ (low), hal ini dikarenakan pada port 1 minimum sistem tersebut aktif low. Anoda LED dihubungkan dengan sumber

48
tegangan 5V dan katodanya dihubungkan dengan bit pada port 1 mikrokontroller. 4. 2 Pengujian Keypad Dalam pengujian keypad ini, dicoba menjalankan program dengan melalui software pada macro assembler mcs – 51, dan ternyata program tersebut tidak terdapat error. Adapun programnya seperti pada gambar 4.2

Gambar 4.5 listing pengujian keypad Setelah dicoba di-run melalui macro assembler MCS–51 dan ternyata program tersebut tidak ada error. Dan dicoba dengan mendownload program tersebut ke mikrokontroller akan menghasilkan nyala LED pada port 1 sesuai dengan penekanan tombol keypad. Tabel 4.1 Hasil Pengujian Scanning Keypad

49
Tombol yang ditekan Key 1 Key 2 Key 3 Key 4 Key 5 Output pada Port 1 1111 1110 1111 1101 1111 1011 1111 0111 1110 1111

4. 3 Pengujian LCD LCD yang digunakan sebagai monitor harus mampu mengirimkan pesan – pesan tertentu kepada user. LCD yang dipakai bertipe M1632 yang mempu menampilkan 16 kolom dan 2 baris karakter. Untuk melakukan pengujian LCD program harus didownload ke mikrokontroller. Setelah program pengujian LCD di Download ke mikrokontroller 89s51, mula - mula program akan mengeksekusi program sub routine inisialisasi LCD agar dapat menampilkan data. Setelah proses pembacaan inisialisasi LCD, barulah LCD tersebut menampilkan data pesan sesuai dengan yang diinputkan, selain itu eksekusi program sub routine yang lain yang terpanggil dalam program tetap dilakukan untuk penyempurnaan tampilan. ORG 0H Start: mov R1,#030h ;==INISIALISASI LCD----------call write_inst call write_inst call write_inst mov r1,#38h acall write_inst mov R1,#0Ch call write_inst mov R1,#06h acall write_inst mov R1,#01h acall write_inst mov dptr,#pesan1 acall write_data sjmp $

write_inst: clr RS ;untuk memuliskan mov P0,R1 ;intruksi ke LCD setb EN ;module clr EN acall delay ret

50

Gambar 4.6 Listing pengujian lcd Setelah program tersebut didownload dan dijalankan pada minimum sistem maka tampilan pada LCD adalah:

FINAL PROJECT ELKA TAHUN ‘06
Gambar 4.7 Hasil yang ditampilkan pada LCD 4. 4 Pengujian Driver motor DC Pada bagian ini akan dilakukan pengujian driver motor DC yang digunakan. Pada robot ini menggunakan tiga buah motor DC yang masing masing digunakan untuk menggerakkan sepasang kaki atas, bodi robot dan sepasang kaki bawah. Berikut ini merupakan potongan program untuk mengontroll driver motor DC dimana driver motor dihubungkan pada P2 dari microcontroller.

swc1 bit p1.0 mtrpin1 bit p2.0 mtrpin2 bit p2.1 org 00h sjmp start start: jb swc1,kanan ; switch "0" putar kiri clr mtrpin1 ;switch "1" putar kanan

51

Gambar 4. 7 Listing program pengujian driver motor Gambar 4.8 Listing program pengujian motor DC Setelah program yang digunakan untuk mengontroll driver motor ini di download dan diuji cobakan pada masing masing driver motor maka didapatkan hasil seperti ditunjukkan pada tabel berikut: Tabel 4.2 Tabel hasil pengujian masing - masing driver motor logika switch1 Motor atas Motor bodi Motor bawah ”1” Putar kanan Putar atas Putar kanan ”0” Putar kiri Putar bawah Putar kiri Jika arah putaran motor sudah dapat bekerja sesuai dengan tabel diatas maka suda dapat dikatakan bahwa driver bekerja dengan baik dan sudah siap untuk mendukung sistem dari robot pemanjat tiang ini. 4. 5 Pengujian Sistem Keseluruhan Setelah didapatkan bahwa pengujian per bagian sesuai yang diinginkan, maka selanjutnya dilakukan pengujian sistem secara

52
keseluruhan, susunan dari sistem secara keseluruhan adalah seperti blok diagram berikut

Gambar 4.9 Gambar blok pengujian sistem secara keseluruhan Pengujian secara keseluruhan disini merupakan pengujian yang dilakukan dengan cara menggabungkan seluruh sistem rangkaian (hardware), mekanik dan perangkat lunak (software). Setelah semua sudah disiapkan maka robot siap di running test. Pertama saklar di hidupkan, maka sistem akan berjalan. Kedua kita diminta memilih untuk menggunakan mode manual atau mode otomatis. Apabila menggunakan mode manual, maka robot digerakkan dengan menggunakan joystick. Di joystick telah dilengkapi tombol untuk naik, turun, berhenti dam berjalan. Apabila kita menggunakan mode otomatis maka kita harus memasukkan berapa step robot akan naik, setelah itu robot akan dengan sendirinya menaiki tiang. Saat kita menggunakan mode otomatis, saat robot berada diatas tiang dan telah mencapai step yang dikehendaki, maka robot akan dengan sendirinya turun kembali kebawah. Selain itu apabila kita menggunakan mode otomatis kemudian kita ingin kembali ke mode manual, kita bisa langsung melakukan interrupt pada robot agar bisa menggunakan mode manual. Dan dari hasil pengujian sistem secara keseluruhan didapatkan data sebagai berikut:

53
Tabel 4.3 Hasil pengukuran ketinggian pemanjatan robot BANYAK STEP 1 2 3 4 5 TINGGI 13.5 cm 27 cm 40.5 cm 54 cm 67.5 cm

Setelah dilakukan pengujian secara keseluruhan dapat diketahui bahwa robot dapat bergerak naik step per step. Hasil yang didapatkan berupa ketinggian yang dihasilkan per stepnya seperti tabel 2.2. diatas. Dari data tabel diatas dapat diketahui bahwa setiap step menghasilkan perubahan ketinggian sebesar 13.5 cm, jadi untuk tiang dengan ketinggian 1 meter dibutuhkan 8 step. Sedangkan tiangkat keberhasilan robot memanjat tiang dapat dilihat pada tebel 4.4, dimana pada tiang dengan diameter 10 cm mempunyai tingkat keberhasilan sebesar 50% atau 5 step pemanjatan, sedangkan pada tiang dengan diameter 15 cm mempunyai tingkat keberhasilan sampai 80% atau 8 step. Waktu yang diperlukan untuk sekali step pemanjatan adalah sebesar 30 detik pada tiang dengan diameter 15 cm dan 35 detik untuk tiang dengan diameter 10 cm. Sedangkan ketika robot turun, pada tiang dengan diameter 10 cm mempunyai tingkat keberhasilan 4 step (40 %) dan pada diameter 15 cm tingkat keberhasilannya 60% atau sebanyak 6 step. Waktu yang dibutuhkan untuk turun satu step adalah 15 detik untuk tiang diameter 15 cm, dan 20 detik pada tiang dengan diameter 10 cm.

Tabel 4.4 Hasil pengujian robot pada dua diameter tiang berbeda Memanjat Turun

54
Step 1 2 3 4 5 6 7 8 9 10 Diameter 10 cm O O O O O X X X X X Diameter 15 cm O O O O O O O O X X Diameter 10 cm O O O O X X X X X X Diameter 15 cm O O O O O O X X X X

Ket : X = Gagal O = Berhasil Sesuai hasil pengujian diatas robot dapat bekerja dengan baik pada tiang dengan diameter 15 cm, karena pada diameter ini jangkauan lengan robot dapat tepat mencengkeram ditengah-tengah sehingga mengurangi kemungkinan robot terjatuh. Pada saat turun robot lebih cepat dibanding pada saat naik hal ini dikarenakan adanya gaya grafitasi yang akan membantu mengurangi beban putar motor penggerak bodi. Pemasangan roll pada boda yang kurang tepan mempengaruhi gerak robot sehingga akan menimbulkan selip pada poros motor.

BAB V PENUTUP

55
Pada bab ini akan dibahas mengenai hasil dan kelemahan dari robot yang telah dibuat. Setelah melakuakan perencanaan, pembuatan dan simulasi hingga pengujian sistem secara keseluruhan maka dapat diambil kesimpulan dan saran-saran sebagai berikut. 5.1 KESIMPULAN Setelah melakukan perencanaan dan pembuatan sistem kemudian dilakukan pengujian dan analisanya, maka dapat diambil beberapa kesimpulan sebagai berikut : 1. Tingkat keberhasilan pemanjatan robot pada tiang dengan diameter 10cm adalah 50% sedangkan pada tiang dengan diameter 15cm sebesar 80% Sedangkan tingkat keberhasilan saat robot turun adalah 40% pada tiang dengan diameter 10cm, dan 60% pada tiang dengan diameter 15cm Waktu yang diperlukan untuk sekali step pemanjatan adalah sebesar 30 detik pada tiang dengan diameter 15 cm dan 35 detik untuk tiang dengan diameter 10 cm 40 secon. Waktu yang dibutuhkan robot untuk turun satu step pada tiang dengan diameter 15 cm adalah 15 detik untuk , dan pada tiang dengan diameter 10cm adalah 20 detik Pada saat robot melakukan pemanjatan waktu yang diperlukan lebih lama dari pada saat robot turun. Hal ini dikarenakan efek pembebanan dari bodi robot sehingga motor akan bekerja lebih berat. Sedangkan pada saat turun pengaruh grafitasi akan membantu meringankan kerja motor penggerak robot.

2.

3.

4.

5.

5.2 SARAN – SARAN Dari kekurangan-kekurangan yang kami peroleh pada saat engujian program, kami memberikan beberapa saran, antara lain: 1. Perlu ditambahkan suatu program aplikasi dimana saat kaki tidak tepat mencengkeram tiang kaki akan membuka dan menutup sampai ditemukan kondisi pencengkeraman yang tepat untuk itu perlu ditambahkan sensor tambahan pad bodi untuk mendeteksi posisi robot selalu tegak. 2. Untuk mendapatkan performa yang lebih baik dari sistem robot ini maka dapat digunakan motor yang lebih cepat dengan torsi yang besar dan dengan bentuk fisik yang kecil sehingga akan

56
mengurangi efek pembebanan pada saat robot melakukan pemanjatan. Untuk pengembangan lebih lanjut robot ini tidak hanya melakukan pemanjatan tetapi bisa melakukan aktifitas tertentu setelah mencapai posisi ketinggian yang diinginkan

3.

DAFTAR PUSTAKA

57
1. D. Sharon dan J.harstein,“Robot dan otomasi industri”, PT. Elex Media Komputindo, Jakarta, 2003 2. 3. 4. 5. Gde Brata Indrawan,” robot pembersih kaca gedung dengan perangkat kamera”, PA PENS-ITS, Agustus 2004 http:// www.ibis.com http:// www.utm .ac.my/sistemrobotik Rezia Molfino, “Roboclimber the 3 ton spider”, Research paper, Automatic control Department at the Instituto de Automatica Industrial (IAI-CSIC) of Madrid, Spain,2004 6. Suhata,ST. “pengontrollan peralatan elektronik melalui Komputer”, Elex Media Komputindo, Jakarta, 2005 7. Takashi Yagi, Industrial Robot: An International Journal. Volume 29 Number 6 2002 pp. 495-499

Gambar Robot Pemanjat Tiang

58

Gambar Robot pada saat start untuk mulai melakukan pemanjatan (kaki atas membuka)

Gambar Robot memulai melakukan pemajatan satu step (bodi atas menjulur)

59

Pengoperasian robot secara manual

Gambar robot tampak depan

60

Listing Program Keseluruhan ;ALHAMDULILLAH.................. ;DENGAN RAHMAT 4JJI AKHIRNYA TERSELESAIKAN JUGA ;PROGRAM DARI ROBOT PEMANJAT TIANG INI. ;TERDIRI ATAS : - PROGRAM UTAMA ; - SCANING KEYPAD & DISPLAY LCD ; - MENGONTROL 3 BUAH DRIVER MOTOR PENGGERAK ROBOT ; - PERINTAH JOYSTICK ; - SETTING KETINGGIAN ;ROBOT PEMANJAT TIANG INI DAPAT DIOPERASIKAN DALAM 2 MODE: ;#1. MODE AUTOMATIS = harus melakukan setting point mel. keypad ;#2. MODE MANUAL = Robot dicontroll mel. joystick ; "pada saat robot berjalan dalam ;mode OTOMATIS dapat dinterupt melljoystic u/ diubah ke mode MANUAL ; dan dapat dikembalikan ke mode OTOMARIS lagi" ; CREATED BY ION ; EEPIS - ITS , 24-07-2006 ;********************************************* ORG 00H SJMP mulai ;============< PENGALAMATAN >================= NAIK BIT P3.7 ; DIHUBUNGKAN JOYSTICK TURUN BIT P3.6 MNLKAN BIT P3.5 OTOKAN BIT P3.4 SWC_BA BIT P3.0 ; SWITCH PADA BODY ATAS SWC_BB BIT P3.1 ; SWITCH PADA BODY BAWAH PUSH_KA BIT P2.0 ; PUSH BUTTON PADA KAKI ATAS PUSH_KB BIT P3.3 ; PUSH BUTTON PADA KAKI BAWAH

61
MTRB BIT P2.7 ; MOTOR BAWAH AGR AKTIF HARUS SELALU CLEAR MTRBP BIT P2.6 ;SETB = TUTUP, CLR= OPEN MTRT BIT P2.5 ; MOTOR TENGAH AGR AKTIF HARUS SELALU CLEAR MTRTPBIT P2.4 ; SET = BODY1, CLR = BODY 2 MTRA BIT P2.3 ; MOTOR ATAS AGR AKTIF HARUS SELALU CLEAR MTRAP BIT P2.2 ;SETB = TUTUP, CLR= OPEN ;----------------------------------------buffkey equ 30h ; ram internal u/ menyimpan hasil scankey lcd_rs bit p3.2 ;4 lcd_en bit p2.1 datatinggi equ 31h ; penyimpan hasil setting point puluhan equ 23h ; Digit Pertama sbg puluhan satuan equ 27h ;Digit kedua sbg satuan baris1 bit p1.1 baris2 bit p1.6 baris3 bit p1.5 baris4 bit p1.3 kolom1 bit p1.2 kolom2 bit p1.0 kolom3 bit p1.4 keyport equ p1 keydata equ 77h ;===========< START ROBOT >================= STARTROB: CLR MTRBP ; SET POWER RELAY CLR MTRAP CALL DELMOT ; DISESUAIKAN CLR MTRA CLR MTRB CALL DELMOT CALL DELMOT CALL DELMOT CALL DELMOT MOV P0,#0FFH ;STOP OPEN CALL DELMOT

62
;"SEMUA KAKI MENUTUP, ROBOT SIAP" ROBOTSIAP: CLR MTRBP CLR MTRAP SETB MTRA SETB MTRB CALL DELMOT JNB PUSH_KB,OFF1 ;p3.3 SJMP ROBOTSIAP OFF1: SETB MTRAP SETB MTRBP CALL DELMOT ;=========================================== ;"SUB PROGRAM PROSES PEMILIHAN MODE OPERASI" ;=========================================== ;=====< INIT. LCD 4 BIT MODE >=============== mulai: mov r6,#25 ;on delay on_del: lcall ldelay djnz r6,on_del ;=========================================== call delay mov a,#33h call tulis_inst mov a,#32h call tulis_inst mov a,#2fh call tulis_inst mov a,#0ch call tulis_inst mov a,#06h call tulis_inst mov a,#06h call tulis_inst ;======< MAIN PROGRAM LCD & KEYPAD >====== ;----------------------------------------mov r0,#32h ;alamat 32 - 46 diisi 00, u/data step loop: mov @r0,#00h inc r0 cjne r0,#4ah,loop awal:

63
mov dptr,#judul1 lcall tampilan_judul call ldelay call ldelay call ldelay mov dptr,#judul2 lcall tampilan_judul call ldelay call ldelay call ldelay mov dptr,#judul3 lcall tampilan_judul tunggu: lcall scankey mov a,buffkey cjne a,#0fh,tunggu ;tekan enter (#) untuk melakukan pemilihan mode operasi ;=========< PILIH MODE OPERASI >=============== keylagi: menu1: lcall menu_1 ;menampilkan pilihanmode operasi lcall scankey ;mendeteksi penekanan keypad (buffkey) mov a,buffkey ;----------------------------------------------proses: ;==========< MODE OTOMATIS >==================== PROSESOTO: cjne a,#1,JALANMNL lcall menu_0 ;tampil AUTOMATIS lcall scankey ;mendeteksi penekanan keypad (buffkey) mov a,buffkey cjne a,#0fh,cancl ;stlh penekanan enter lcall TINGGI ;menentukan tampilan yg sesuai berikutnya JALANOTO: call menu_3 ;tampilan jalankan robot lcall scankey ;mendeteksi penekanan keypad (buffkey) mov a,buffkey CJNE A,#0FH,CANCL CALL OTOMATIS ;==== OTOMATIS ====== ; pertama adalah tampilan judul ;

64
; ROBOT UP---------------OTOMATIS: MOV R5,DATATINGGI OTO:CALL NAIK1STEP CALL JOYS DJNZ R5,OTO CALL JOYS ; SJMP OTO ; ROBOT DOWN--------------OTOMAT2: MOV R5,DATATINGGI MANU: CALL TURUN1STEP CALL JOYS DJNZ R5,MANU SJMP PROSES ;---------------------------------------------cancl: cjne a,#0ch,proses ;mendeteksi penekanan tombol cancel(=0ch) sjmp keylagi stop: ljmp robotsiap ;============< MODE MANUAL >========================== JALANMNL: cjne a,#2,proses call menu_2 ;tampil manual mode lcall scankey ;mendeteksi penekanan keypad (buffkey) mov a,buffkey cjne a,#0fh,cancl ;mendeteksi penekanan tombol enter(=0fh) MANUAL: CALL JOYS SJMP MANUAL ;----------------------------------------------------;=== < PROSES JALAN ROBOT > =========== ;---------------------------------JOYS: JNB MNLKAN,MANUALMD SJMP KEMBL_OTO MANUALMD:

65
JB NAIK,MUDUN CALL NAIK1STEP JMP JOYS MUDUN: JB TURUN,KEMBL_OTO CALL TURUN1STEP JMP JOYS KEMBL_OTO: JB OTOKAN,STPMNL RET STPMNL: SJMP JOYS ;===== SUB PROGRAM NAIK 1 STEP ======== NAIK1STEP: CALL KKA_OPEN CALL BODY1 CALL KKA_CLOSE CALL KKB_OPEN CALL BODY2 CALL KKB_CLOSE RET ;---------------------------------------;========SUB PROGRAM TURUN 1 STEP ======= TURUN1STEP: CALL KKB_OPEN CALL BODY1 CALL KKB_CLOSE CALL KKA_OPEN CALL BODY2 CALL KKA_CLOSE RET ;.....KAKI ATAS MEMBUKA............. KKA_OPEN: CLR MTRAP ; SET POWER RELAY......... CLR MTRA CALL DELMOT ;.....delay motor CALL DELMOT SETB MTRAP ; KAKI ATAS STOP

66
CALL DELMOT RET BODY1: CLR MTRTP ; SET POWER RELAY SETB MTRT ;........ MOTOR BODY2 UP ... CALL DELMOT JB SWC_BA,BODY1 ;..........PUS 1 SETB MTRTP ; MOTOR STOP CALL DELMOT RET ;.........KAKI ATAS CLOSE..... KKA_CLOSE: CLR MTRAP SETB MTRA CALL DELMOT JNB PUSH_KA,OFF2 SJMP KKA_CLOSE ;........PUS 2 OFF2: SETB MTRAP; ..... STOP CLOSE......... CALL DELMOT RET ;.........KAKI BAWAH OPEN............... KKB_OPEN: CLR MTRBP CLR MTRB CALL DELMOT ;......DELMOT DISESUAIKAN.... CALL DELMOT CALL DELMOT SETB MTRBP ; KAKI BAWAH STOP CALL DELMOT RET BODY2: CLR MTRTP CLR MTRT ;........ MOTOR BODY2 UP CALL DELMOT JB SWC_BB,BODY2 ;.....PUS 0 SETB MTRTP ; MOTOR STOP CALL DELMOT CALL DELMOT RET

67
;..........KAKI BAWAH CLOSE..... KKB_CLOSE: CLR MTRBP SETB MTRB CALL DELMOT JB PUSH_KB,KKB_CLOSE ; PUS 4Ö SETB MTRBP; ..... STOP CLOSE...... CALL DELMOT RET ;..........AKHIR....... DELMOT: MOV R0,#8H DELMOT1 : MOV R1,#00H DELMOT2 : MOV R2,#00H DJNZ R2,$ DJNZ R1,DELMOT2 DJNZ R0,DELMOT1 RET ;-----------------------------------------------------;====< SUB PROGRAM TAMPILAN DI LCD >============ tampilan_judul: tampilxx: mov r3,#16 mov a,#80h ; alamat baris 1 call tulis_inst tulis: clr a movc a,@a+dptr inc dptr call tulis_data call ldelay djnz r3,tulis ; mov r3,#16 mov a,#0c0h call tulis_inst tulis1: clr a movc a,@a+dptr inc dptr call tulis_data

68
call ldelay djnz r3,tulis1 ret ; ;------------------------------------------;===< SUB PROGRAM TULIS INST/DATA KE LCD >=== ;------------------------------------------tulis_inst: clr lcd_rs wrdt: mov p0,a setb lcd_en clr lcd_en call delay swap a mov p0,a ;data lcd p0 setb lcd_en clr lcd_en call delay ret tulis_data: setb lcd_rs jmp wrdt ;------------------------------------------------;====< SUB PROGRAM TAMPILAN AWAL & MENU LCD >=== ;------------------------------------------------menu_1: mov dptr,#pilih lcall tampilxx ret menu_0: mov dptr,#modeno1 lcall tampilxx ret menu_2: mov dptr,#modeno2 lcall tampilxx ret menu_3: mov dptr,#modeno3

69
lcall tampilxx ret menu_4: mov dptr,#MENUPROSS lcall tampilxx ret ;----------------------------------------------;==========< SCANNING KEYPAD 4X3 >============== ;----------------------------------------------scankey: mov keyport,#0ffh ;keyport = p2 ULANGSCAN: mov keyport,#0ffh ;SCAN KOLOM 1============ clr kolom1 KOLM1: jb baris1,key1 mov keydata,#1 ;keydata = 77h, tombol 1 ljmp rec_key key1: jb baris2,key2 mov keydata,#4 ; tombol 4 ljmp rec_key key2: jb baris3,key3 mov keydata,#7 ; tombol7 ljmp rec_key key3: jb baris4,KOLM2 mov keydata,#0ch ;tombol * ljmp rec_key ; SCAN KOLOM 2========== KOLM2: setb kolom1 clr kolom2 jb baris1,key5 mov keydata,#2 ; tombol 2 ljmp rec_key key5: jb baris2,key6 mov keydata,#5 ; tombol 5

70
ljmp rec_key jb baris3,key7 mov keydata,#8 ; tombol 8 ljmp rec_key key7: jb baris4,KOLM3 mov keydata,#0 ; tombol 0 ljmp rec_key ;SCAN KOLOM 3=========== KOLM3: setb kolom2 clr kolom3 jb baris1,key9 mov keydata,#3 ; tombol 3 ljmp rec_key key9: jb baris2,key10 mov keydata,#6 ; tombol 6 ljmp rec_key key10: jb baris3,key11 mov keydata,#9 ; tombol 9 ljmp rec_key key11: jb baris4,ULANG mov keydata,#0fh ; tombol # ; sbg enter ljmp rec_key ULANG: ljmp ULANGSCAN ; mov keydata,#0ffh rec_key: mov a,keydata mov buffkey,a ret ;--------------------------------------;======< sub program delay >============ ;--------------------------------------delay: mov r4,#80h djnz r4,$ ret ldelay: mov r2,#90h dl1: acall delay key6:

71
djnz r2,dl1 ret ;---------------------------------------------;====< " SUB PROGRAM SETTING KETINGGIAN" >===== ;---------------------------------------------TINGGI: ulang32h: ;setelah menu 1 selanjutnya memasukkan mov r0,#32h ;data awal/lokasi memori data ketinggian mov r7,#8bh ;posisi data setting digit 1 lcall tampilan_setting mov r0,#32h ; data awal lokasi memorry step TESKEY0: lcall scankey mov a,buffkey cjne a,#0ch,teskey1 ;0c = deteksi cancel Ret teskey1: cjne a,#0fh,inputdata ;0f = deteksi enter DATASETTING: mov a,puluhan add a,satuan mov datatinggi,a ljmp JALANOTO inputdata: mov @r0,buffkey ; data scan sbagai address r0 mov a,r7 cjne r7,#8bh,digit2 ;digit1 mov a,buffkey ;puluhan mov b,#10d mul ab mov puluhan,a digit2: cjne r7,#8ch,digit3 mov a,buffkey mov satuan,a

72
digit3: cjne r7,#8dh,bisa_lanjut ; digit2 mov r7,#8bh ; 8c = posisi input step digit1 bisa_lanjut: call tampiltgg1 ;tampil setting digit 1. inc r7 inc r0 cjne r7,#8dh,loncat2 mov r7,#8bh ;all 8b= 8c loncat2: call ldelay call ldelay call ldelay call ldelay call ldelay call ldelay jmp teskey0 ;============================================== jalankan_alat: lcall menu_3 detekkey: lcall scankey mov a,buffkey cjne a,#0fh,tdk_jalankan ljmp jalankanalat tdk_jalankan: cjne a,#0ch,detekkey ljmp selesai_jalankanalat ; jalankanalat: mov dptr,#MENUPROSS mov r3,#16 mov a,#80h call tulis_inst selesai_jalankanalat: ret ;=======< TAMPIL SETTING >============ tampilan_setting: mov dptr,#setstep tampilsdt_2:

73
mov r3,#16 mov a,#80h ; line 1 lcd call tulis_inst tulis12: clr a movc a,@a+dptr inc dptr call tulis_data call ldelay djnz r3,tulis12 ; mov r3,#16 mov a,#0c0h call tulis_inst tulis13: clr a movc a,@a+dptr inc dptr call tulis_data call ldelay djnz r3,tulis13 ret tampiltgg1: mov a,r7 ;r7=8eh atw 8ch call tulis_inst clr a mov a,buffkey call keytoascii call tulis_data call ldelay ret ;--------------------------------------;=========< UBAH KE ASCII >============= ;--------------------------------------keytoascii: anl a,#00001111b mov dptr,#keyascii movc a,@a+dptr mov datatinggi,a mov @r0,datatinggi

74
ret konversi_keydata: anl a,#00001111b mov dptr,#keyascii movc a,@a+dptr mov datatinggi,a ret ;-------------------------------;=========< TAMPIL DI LCD >====== ;-------------------------------keyascii: db '0123456789abcdef' PILIH: DB 'PILIH MODE: ' db '1 AUTO; 2 MANUAL' db ' *(can) #(enter)' setstep: db 'SETT STEP= STP' db ' *(can) #(enter)' modeno1: db ' AUTO MODE ' db ' *(can) #(enter)' modeno2: db ' MANUAL MODE ' db ' *(can) #(enter)' modeno3: db ' JALANKAN ROBOT ' db ' *(can) #(enter)' MENUPROSS: db '****PROSES******' db '================' judul1: db ' BISMILLAH... ' db ' TA ELKA 2006 ' judul2: DB 'ROBOT PEMANJAT ' DB ' TIANG ' judul3: DB ' BY: '

75
DB 'PUJI W & INDRA A' END

76
RIWAYAT HIDUP PENULIS Puji Wahyono atau biasa dipanggil Ion oleh teman-temannya, dilahirkan di Pacitan pada 06 Februari 1983. Memperoleh gelar Ahli Madya (A.Md) di Politeknik Elektronika Negeri SurabayaInstitut Teknologi Sepuluh Nopember (2006). Penulis pernah mengikuti beberapa seminar diantaranya Seminar Robot Vision (2005), Seminar memperoleh kesuksessan dengan memaksimalkan ESQ (2004). Selain itu penulis juga pernah mengikuti beberapa Training/Workshop diantaranya Network Windows NT & Linux (2003) di PIKTIITS, Workshop in Basic Robot (2004), Elementary of SCADA (Supervisory Control And Data Acquisition) (2005), Workshop Graphics Design (2003), Workshop Image Processing/Pengolahan Citra Digital (2005) di PENS-ITS. Data Pribadi Alamat HP Email Motto

: Ds Pucangombo RT 08 RW XII, Tegalombo, Pacitan 63582. : +62 856 481 888 12 : ion.only@yahoo.com : ION “Imtech Optimize Number one” Insya4JJI

Riwayat pendidikan 2003-2006 : Politeknik Elektronika Negeri Surabaya-ITS(PENS-ITS), Jurusan teknik Elektronika. 2002-2003 : Pendidikan Informatika dan Komputer Terapan – ITS (PIKTI-ITS). 1999-2002 : SMUN 2 Ponorogo 1996-1999 : SLTPN 1 Tegalombo, Pacitan. 1990-1996 : SD Pucangombo IV, Pacitan.