Anda di halaman 1dari 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
1.2 Tujuan umu ................................................................................ 2
1.3 Tujuan khusus ............................................................................ 2
1.4 Permasalahan ............................................................................. 2
1.5 Perumusan masalah .................................................................... 2
1.6 Batasan ....................................................................................... 2
1.7 Metodologi ................................................................................. 3
1.8 Sistematika penulisan................................................................. 3

BAB II TEORI PENUNJANG


1.8 Sistematika penulisan................................................................. 3
2.1 Gambaran umum MCS-51 ......................................................... 5
2.1.1 Pin-pin Mikrokontroller AT89C51 .................................. 6
2.2 Organisasi Memori 89C51 ........................................................ 7
2.2.1 Pemisahan antara program memori dan data memori ...... 8
2.2.2 Program memori .............................................................. 8
2.2.3 Data memori.................................................................... 9
2.3 Set Instruksi dan Pemrograman Assembly MCS51 ................... 11
2.3.1 Program Status Word ...................................................... 12
2.3.2 Mode Pengalamatan (Addressing Modes)....................... 13
2.3.3 Instruksi-Instruksi Aritmatika ........................................ 14
2.3.4 Instruksi-Instruksi Logika .............................................. 16
2.3.5 Data Transfer................................................................... 18
2.3.6 Instruksi-Instruksi Boolean ............................................. 20
2.3.7 Instruksi lompatan bersyarat .......................................... 22
2.3.8 Instruksi Proses dan Test................................................. 23
2.3.9 Instruksi-Instruksi jump tanpa syarat .............................. 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 ........................................................................................ 35
3.2 Perencanaan Perangkat Lunak ................................................... 35
3.2.1 Sistem Kontroler ............................................................. 35
3.2.2 Perencanaan Memori....................................................... 36
3.2.3 Perencanaan Masukan Dan Keluaran.............................. 36
3.2.4 Program Utama ............................................................... 37
3.2.5 Subrutin-subrutin............................................................. 37
3.2.5.1 Inisialisasi ......................................................... 37
3.2.5.2 Subprogram scanning keypad ........................... 38
3.2.5.3 Subprogram perbandingan data......................... 38
3.2.5.4 Subprogram menampilkan pada LCD............... 38
3.3 Algoritma .......................................................................... 38
3.3.1 Algoritma pada pergerakan robot.................................... 38
3.4 Flowchart .......................................................................... 39
3.4.1 Flowchart saat robot naik (Up)........................................ 40
3.4.2 Flowchart saat robot turun (Down) ................................. 40
3.4.3 Flowchart gerakan robot secara keseluruhan................... 41

BAB IV PENGUJIAN DAN ANALISA


4.1 Pengujian Minimum Sistem....................................................... 45
4.2 Pengujian Keypad ...................................................................... 48
4.3 Pengujian LCD........................................................................... 49
4.4 Pengujian Driver motor DC ....................................................... 50
4.5 Pengujian Sistem Keseluruhan................................................... 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 8-
bit 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 .............................................. 12


Tabel 2.2 Instruksi Aritmatika ......................................................... 14
Tabel 2.3 Instruksi Logika ................................................................ 17
Tabel 2.4 Instruksi Data Transfer yang mengakses Internal Data
Memory............................................................................... 18
Tabel 2.5 Instruksi Data Transfer Yang Mengakses External Data
Memori ............................................................................... 19
Tabel 2.6 Instruksi Pembacaan Tabel................................................ 20
Tabel 2.7 Instruksi-Instruksi Boolean ............................................... 21
Tabel 2.8 Jump Tanpa Syarat (Unconditional Jumps) ...................... 23
Tabel 2.9 IE (Interrupt Enable) ......................................................... 25
Tabel 2.10 IP (Interrupt Priority)...................................................... 26
Tabel 2.11 TCON(TimerControl) ..................................................... 27
Tabel 2.12 Mode Timer.................................................................... 28
Tabel 2.13 Deskripsi pin-pin pada LCD .......................................... 34
Tabel 4.1 Hasil Pengujian Scanning Keypad .................................... 49
Tabel 4.2 Tabel hasil pengujian masing - masing driver motor ........ 51
Tabel 4.3 Hasil pengukuran ketingian pemanjatan robot ............... 53
Tabel 4.4 Hasil pengujian robot pada dua diameter tiang berbeda.. 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 penyelesaian-
penyelesaian 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 (bi-
directional) yang dapat digunakan untuk berbagai keperluan
(general purpose).
b. 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.
c. 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.
d. Pin 18 (XTAL 1) adalah pin masukan ke rangkaian osilator
internal. Sebuah isolator kristal atau sumber osilator luar dapat
digunakan.
e. Pin 19 (XTAL 2) adalah pin keluaran ke rangakaian osilator
internal. Pin ini dipakai bila menggunakan osilator kristal.
f. Pin 20 (Ground) dihubungkan ke Vcc atau ground.
g. 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.
h. 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 ).
i. Pin 30 adalah pin ALE (address latch Enable) yang digunakan
untuk menahan alamat memori eksternal selama pelaksanaan
instruksi.
j. 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.
k. 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.
l. Pin 40 (Vcc) dihubungkan ke Vcc (+5 Volt).

2.2 ORGANISASI MEMORI 89C51


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

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
4
http://www.issi.com
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


Symbol Posisi Fungsi/Arti
CY PSW.7 Carry flag
AC PSW.6 auxiliary carry flag (untuk opersi BCD)
F0 PSW.5 Flag 0 untuk kegunaan umum
RS1 PSW.4 Bit untuk melihat bank register
RS0 PSW.3 Bit untuk melihat bank register
OV PSW.2 Overflow flag
- PSW.1 Flag didefinisikan oleh pemakai
P PSW.0 Parity flag. Set/clear oleh perangkat keras
setiap siklus instruksi untuk menunjukkan
jumlah bit 1 dalam akumulator, ganjil atau
genap

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-titip-
kan 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)
------------- ---------------------- Dir Ind Reg Imm ---------------
------- ------
ADD A=A+<byte> X X X X 1
A<byte>
ADC A=A+<byte>+C X X X X 1
A,<byte>
SUBB A=A+<byte>-C X X X X 1
A,<byte>
16
INC C A=A+1 Hanya akumulator 1
INC <byte>=<byte>+1 X X X X 1
<byte>
INC DPTR=DPTR+1 Hanya akumulator 2
DPTR
DEC C A=A-1 Hanya akumulator 1
DEC <byte>=<byte>-1 X X X X 1
<byte>
MUL AB B:A=BxA Hanya ACC dan B 4
MOV AB A=Int[A/B] Hanya ACC dan B 4
B=mode[A/B]
DA A Desimal adjust Hanya akumulator 1

a. 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
b. 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
c. 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)
d. 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)
e. 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-nol-
kan 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 Operasi Mode Wakt


c pengalamatan u
eksek
usi(µs
)
------------ -------------------------- Dir In R Im ------
------------ --------------- d e m ------
g ------
ANL A=A.AND.<byte> X X X X 1
A,<byte>
ANL <byte>=<byte>AND. X 1
<byte>,A A
ANL <byte>=<byte>AND. X 2
<byte>,#d #data
ata
ORL A=A.OR<byte> X X X X 1
A,<byte>
ORL <byte>=<byte>.OR. X 1
<byte>,A A
ORL <byte>=<byte>.OR. X 2
<byte>,#d A
ata
XRL A=A.XOR<byte> X X X X 1
A,<byte>
XRL <byte>=<byte>XOR. X 1
<byte>,A A
XRL <byte>=<byte>XOR. X 2
<byte>,#d #data
ata
CRL A A=00H Hanya akumulator 1
CPL A A=NOT A Hanya akumulator 1
RL A Rotate ACC ke kiri 1 Hanya akumulator 1
bit
RLC A Rotate ACC ke kiri Hanya akumulator 1
lewat Carry
RR A Rotate ACC ke kanan Hanya akumulator 1
1 bit
19
RRC A Rotate ACC ke kanan Hanya akumulator 1
lewat Carry
SWAP A Tukar nibble pada 1
ACC

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 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
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 X X X 1
<dest>,A
MOV <dest>=<scr> X X X X 2
<dest>,<sc
r>
MOV DPTR=konstanta 16 X 2
DPTR,#da bit
ta16
PUSH INC X 2
<scr> SP:MOV”@SP”,<scr
>
POP MOV X 2
<dest> <DEXT>,”SP”,DEC
XCH ACC dan X X X 1
A,<byte> <byte>bertukar data
XCHD ACC dan @Ri X 1
A,@Ri bertukar low nibble

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 MOVX A,@Ri Baca Ekternal RAM 2


@Ri
8 bit MOVX @Ri,A Baca Ekternal RAM 2
@Ri
16 bit MOVX Baca Ekternal RAM 2
A,@DPTR @DPTR
16 bit MOVX Baca Ekternal RAM 2
@DPTR,A @DPTR

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


Mnemonic Operasi Waktu eksekusi
(µs)
ANL C,bit C=C.ANL.bit 2
ANL C,/bit C=C.ANL.NOT.bit 2
ORL C,bit C=C.OR.bit 2

ORL C,/bit C=C.OR.NOT.bit 2

MOV C,bit C = bit 1

MOV bit,C Bit=C 2


23
CRL C C=0 1

CLR bit Bit=0 1

SETB C C=1 1

SETB bit Bit=1 1

CPL C C=.NOT.C 1

CPL bit Bit=NOT.bit 1

JC rel Jump if C=1 2

JNC rel Jump if C=0 2

JB bit,rel Jump if bit=1 2

JNB bit,rel Jump if bit=0 2

JBC bit,rel Jump if bit=1;CLR bit 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 operasi Waktu eksekusi


(µs)
JMP addr Lompat ke addr 2

JMP @A+DPTR Lompat ke A+addr 2

CALL addr Panggil subrutin 2


dengan alamat addr

RET Kembali dari subrutin 2

RETI Kembali dari 2


interrupsi
NOP Tidak ada operasi 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 DB0-
DB7, 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
2. 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
3. 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.

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 KK ATAS CLO SE


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

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 KK BAW AH CLO SE


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

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

NO
A U TO = T R U E?

YES

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 )

BACA
YES IN S T R U K S I
S E T P O IN T = 0 ? J O Y S T IC K

NO
YES
S E T P O IN T = A ?
ROBOT
UP
NO

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

C E K IN T

YES
JA LA N K A N
Gambar IN T3.4 Flowchart
= TR UE ? robotPpemanjat
E R IN T A H pemanjat tiang
IN T E R U P T
Algoritma yang digunakan pada robot pemanjat 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
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. Pengujian minimum sistem.


2. Pengujian keypad.
3. Pengujian LCD.
4. Pengujian driver motor
5. 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
; Kembali4.2 Listingsetelah
ke alamat pengujian minimum
perintah system
'call Delay'
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 Output pada Port 1
Key 1 1111 1110
Key 2 1111 1101
Key 3 1111 1011
Key 4 1111 0111
Key 5 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 TINGGI

1 13.5 cm
2 27 cm
3 40.5 cm
4 54 cm
5 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
Diameter Diameter Diameter Diameter
Step 10 cm 15 cm 10 cm 15 cm
1 O O O O
2 O O O O
3 O O O O
4 O O O O
5 O O X O
6 X O X O
7 X O X X
8 X O X X
9 X X X X
10 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%
2. Sedangkan tingkat keberhasilan saat robot turun adalah 40% pada
tiang dengan diameter 10cm, dan 60% pada tiang dengan diameter
15cm
3. 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.
4. 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
5. 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.

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.
3. Untuk pengembangan lebih lanjut robot ini tidak hanya
melakukan pemanjatan tetapi bisa melakukan aktifitas tertentu
setelah mencapai posisi ketinggian yang diinginkan

DAFTAR PUSTAKA
57
1. D. Sharon dan J.harstein,“Robot dan otomasi industri”, PT.
Elex Media Komputindo, Jakarta, 2003
2. Gde Brata Indrawan,” robot pembersih kaca gedung dengan
perangkat kamera”, PA PENS-ITS, Agustus 2004
3. http:// www.ibis.com
4. http:// www.utm .ac.my/sistemrobotik
5. 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 ; pertama adalah tampilan judul
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 ======
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
key6: 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
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 Surabaya-
Institut 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 PIKTI-
ITS, 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 : Ds Pucangombo RT 08 RW XII,
Tegalombo, Pacitan 63582.
HP : +62 856 481 888 12
Email : ion.only@yahoo.com
Motto : 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.

Anda mungkin juga menyukai