MODUL ROBOTIK Disusun Oleh : SUYATNO BUDIHARJO
Modul 1
Hardware dan Perakitan Robot Tujuan Pembelajaran : Menjadi familiar dengan hardware Robot Mekanik : Motor Roda Sistem Gear Elektronik : Sensor Power Supply –
Kabel Serial
–
Deskripsi : Sebuah Robot dapat dibangun baik secara utuh maupun sebagian yang menyerupai makhluk seperti manusia atau binatang, baik dari bentuk maupun perilaku atau cara berjalan / bergerak. Berbeda dengan makhluk, baru dikatakan manusia jika mempunyai sebagian besar organ tubuh, namun robot dapat hanya berupa lengan sehingga disebut Robot Lengan. Semakin lengkap sebuah Robot, maka semakin banyak komponen yang diperlukan sehingga diperlukan untuk menginventarisasi kebutuhan untuk membangun sebuah Robot. Dalam hal ini, tentu berbeda kebutuhan untuk membangun sebuah robot yang satu dengan yang lainnya. Sehingga perlu mengenal komponen utama sebuah Robot yang dibagi dalam dua kelompok yaitu komponen Mekanik dan komponen Elektronik. Keduanya dapat digabungkan menjadi sebuah istilah Mekatronik. Komponen Mekanik diperlukan sebuah Robot untuk berperilaku yaitu bergerak atau berjalan, menggerakkan lengan, sedangkan komponen elektronika diperlukan sebuah Robot untuk berpikir (Logika) dalam hal ini sebagai otaknya Robot atau CPUnya Robot dapat menggunakan Mikroprocessor atau Mikrokontroler seperti keluarga ATMEL AT89Sxx , AT89Cxx atau keluarga PIC16Fxx yang masingmasing mempunyai kelebihan dan
kekurangan, merespon rangsangan atau membangkitkan sinyal (Power Supply) atau mengirim menerima sinyal (TxRx Sensor), komponen untuk driver Motor sebagai tenaga penggerak Lengan / Kaki. Motor yang dapat digunakan untuk tenaga penggerak Robot antara lain : Motor DC, Motor DC dengan Gear, Motor Stepper, Motor Stepper dengan Gear. Motor merupakan komponen yang berotasi dan membangkitkan gerakan. Motor dirancang untuk mengkonversi energi listrik mwnjadi energi mekanik untuk membentuk beberapa pekerjaan fisik. Motor Stepper merupakan perangkat elektromekanik yang mengkonversi daya listrik kw dalam torque dengan posisi untuk kontrol. Putaran motor stepper dilakukan sesuai namanya, dalam satu putaran atau revolution dilakukan dalam beberapa step. Sebagai contoh Untuk motor 1.8 derajat mempunyai 200 step/putaran, motor 7.5 derajat memerlukan 48 step/putaran. Motor DC Motor DC mempunyai karakteristik yang berbeda dengan motor stepper, dimana putaran yang dihasilkan oleh motor DC dapat beberapa kali putaran dengan catuan power DC, biasanya 10 s/d 24 Vdc sesuai dengan tenaga yang dihasilkan. Biasanya motor DC digunakan sebagai penggerak Robot untuk sistem Roda (Mobil). Sedangkan Motor Stepper digunakan untuk penggerak Robot yang tidak memerlukan putaran penuh, seperti untuk kontrol Robot Lengan atau Robot kaki. Namun dapat diprogram untuk melakukan revolusi sesuai dengan kebutuhan sehingga akan lebih fleksibel dibandingkan dengan Motor DC. Dalam prakteknya diperlukan mekanisme untuk mengendalikan putaran motor, baik ke depan atau ke belakang, cepat atau lambat, lama atau sebentar. Tabel Kebenaran dari komponen L293D adalah sebagai berikut :
INPUT ENABL E(*)
OUTPU T
H
H
H
L
H
L
H
L
Z
L
L
z
Dimana : Z = impedansi keluaran tinggi * = relatif masingmasing kanal. EN12 berhubungan dengan OUT1 dan OUT2 EN34 berhubungan dengan OUT3 dan OUT4 Rangkaian yang digunakan untuk driver motor adalah sebagai berikut :
Rangkain Driver Motor
Sensor : Sensor merupakan bagian yang cukup penting didalam kontrol Robot terutama untuk Robot Autonomous. Berbeda dengan kontrol Robot Manual yang digerakkan dengan campur tangan manusia melalui PC atau Keypad atau juga Remote Control. Sensor berfungsi sebagai pengindera Robot. Robot dapat berjalan mengikuti Jalur dengan dibimbing oleh Sensor. Robot dapat berjalan mendekati sumber api jika menggunakan sensor suhu untuk bergerak.
Sebagai contoh untuk rangkaian sensor IR adalah sebagai berikut :
Gambar Sensor Infrared (IR)
Sensor yang dapat digunakan untuk mengendalikan Robot antara lain adalah : Sensor Infra Merah (IR) merupakan sensor cahaya tak tampak (Invisible), Sensor Cahaya (Visible) yang mendeteksi ada tidaknya cahaya tampak, tentunya terbatas akan dipengaruhi oleh cahaya dilingkungan sekitar, Sensor Ultrasonik yang bekerja dengan mengirimkan sinyal suara ultra, seperti yang digunakan dalam perangkat navigasi kelelawar, sehingga kelelawar dapat terhindar dari tabrakan walaupun bergerak didalam gelap. Dengan demikian dalam prakteknya sensor ultrasonik dapat digunakan oleh Robot untuk mendeteksi halangan, atau bahkan kamera sebagai mata Robot untuk melihat. Power Supply Sebagai sumber tenaga penggerak atau power supply bagi Robot dapat menggunakan sumber dari batterai atau adaptor. Dan biasanya power supply tersebut memer rangkaian Regulator untuk mengatur voltase atau tegangan keluaran sesuai kebutuhan. Pada dasarnya setiap komponen atau rangkaian memerlukan catuan daya, yang terkadang besarannya berbeda, seperti untuk Mikrokontroler memerlukan catuan sebesar 5 9 Volt, sedangkan untuk Motor memerlukan 10 – 24 Volt. Sehingga dalam prakteknya sumber catuannya dibedakan untuk kedua komponen diatas. Rangkaian untuk Regulator power supply adalah sebagai berikut :
Regulator Power Supply Aktifitas : 1. Inventarisasi mengidentifikasi dan menginventarisasi bagianbagian robot sesuai fungsi dan penggunaannya.
2. Perakitan merakit robot dari bagianbagiannya menjadi sebuah robot yang siap beraksi 3. Verifikasi Perakitan Inspeksi secara visual rangkaian mekanik sesuai fungsinya Inspeksi koneksi elektronik secara visual 4. Melakukan pengukuran setiap bagianbagian dari Robot 5. Menganalisa Data hasil Pengukuran
Modul 2 Pemrograman dan Testing Mikrokontroler Tujuan Pembelajaran 1. Mengerti dan memahami pemrograman Hardware Mik 2. Mengenal dan dapat menggunakan perangkat Downloader 3. Dapat membuat program Assembler 4. Dapat mengkompilasi program Assembler 5. Menjadi familiar dengan pembangunan dan downloading program
Dasar Mikrokontroler Mikrokontroler adalah Central Processing Unit (CPU) yang disertai dengan memori serta sarana input/outout dan dibuat dalam bentuk chip tunggal. Central Processing Unit (CPU) CPU terdiri dari dua bagian, yaitu unit pengendali (control unit) serta unit aritmatika dan logika (ALU). Fungsi utama unit kendali adalah mengambil, mengkodekan, dan melaksanakan urutan instruksi sebuah program yang tersimpan dalam memori. Unit pengendali menghasilkan dan mengatur sinyal pengendali yang diperlukan untuk menyerempakkan operasi, aliran dan instruksi program. Unit Aritmatika dan Logika berfungsi untuk melakukan proses perhitungan yang diperlukan selama program dijalankan serta mempertimbangkan suatu kondisi dan mengambil keputusan yang diperlukan untuk instruksiinstruksi berikutnya. Mikrokontroler AT89C51 Single Chip Mikrokontroler AT89C51 merupakan salah satu keluarga dari MCS51 keluaran Atmel. Jenis mikrokontroler ini pada prinsipnya dapat digunakan untuk mengolah data per bit ataupun data 8 bit secara bersamaan. Sebuah mikrokontroler dapat bekerja bila didalam mikrokontroler tersebut terdapat sebuah program yang berisi instruksiinstruksi yang akan digunakan untuk menjalankan sistem mikrokontroler tersebut. Instruksiinstruksi dari sebuah program
pada tiap jenis mikrokontroler mempunyai beberapa perbedaan : Instruksi pada mikrokontroler Atmel berbeda dengan instruksi pada mikrokontroler Motorola. Beberapa fasilitas yang dimiliki oleh mikrokontroler AT89C51 sebagai berikut : ➔
Sebuah Central Processing Unit (CPU) 8 bit
➔
Osilator Internal dan Rangkaian Pewaktu
➔
RAM Internal 128 byte
➔
Flash Memori 4 Kbyte
➔
Lima buah jalur interupsi (dua buah interupsi eksternal dan tiga buah interupsi internal)
➔
Empat buah programable port I/O masingmasing terdiri dari 8 buah jalur I/O (8 bit)
➔
Sebuah port serial dengan kontrol serial full duplex UART
➔
Kemampuan untuk melakukan operasi aritmatika dan logika
➔
Kecepatan dalam melaksanakan instruksi per siklus 1 mikrodetik pada frekuensi 12 Mhz.
Instruksi pada Mikrokontroler AT89C51 ADD Instruksi untuk melakukan operasi penjumlahan pada dua buah data yang terdapat pada alamat register yang ditunjuk oleh instruksi. Terdapat beberapa mode penjumlahan seperti contoh berikut : ADD A, Rn Siklus Jumlah Byte 1
Instruksi
1 Flag
ADD A, Rn C
AC
X
X
F0
RS1
RS0
OV
P
X
X
Tambahkan Akumulator A dengan Rn dimana n = 0,1,2,...7 dan simpan hasilnya di Akumulator A. Contoh : Add A,R7 Isi dari R7 akan ditambahkan dengan Akumulator A dan hasilnya disimpan di Akumulator A.
ADD A, direct Siklus Jumlah Byte 1
Instruksi
2 Flag
ADD A, direct C
AC
X
X
F0
RS1
RS0
OV
P
X
X
Tambahkan Akumulator A dengan data di alamat memori tertentu secara langsung. Contoh : Add A,00H Isi dari Akumulator A akan ditambahkan dengan isi dari memori RAM Internal di alamat 00H. ADD A, @Ri Siklus Jumlah Byte 1
Instruksi
1 Flag
ADD A, @Ri C
AC
X
X
F0
RS1
RS0
OV
P
X
X
Tambahkan Akumulator A dengan data yang berada di alamat Ri (ditunjuk oleh Ri) dan simpan hasilnya di Akumulator A. Ri adalah Register Index dimana pada MCS51 adalah berupa R0 dan R1. Contoh : Add A,@R0 Isi dari Akumulator A akan ditambahkan dengan isi dari memori RAM Internal yang ditunjuk oleh R0. Apabila R0 berisi 05H maka, isi dari alamat 05H akan dijumlahkan dengan Akumulator A dan hasilnya disimpan di Akumulator A. ADD A, #data Siklus Jumlah Byte 1
Instruksi
2 Flag
ADD A, #data C
AC
X
X
F0
RS1
RS0
OV
P
X
X
Tambahkan Akumulator A dengan sebuah konstanta dan hasilnya disimpan dalam akumulator A. Contoh:
Add A,#05H Isi Akumulator A ditambah dengan data 05H dan hasilnya disimpan dalam Akumulator A. ADDC ADDC A, Rn Tambahkan Akumulator A dengan Rn dimana n = 0,1,2,...7 dan simpan hasilnya di Akumulator A. Contoh: Addc A,R7 Isi dari R7 akan ditambahkan dengan akumulator A beserta carry flag dan hasilnya disimpan di Akumulator A. Apabila carry flag set maka hasil yang tersimpan di Akumulator A adalah A + R7 + 1. ADDC A, direct Tambahkan Akumulator A dan carry flag dengan data di alamat memori tertentu secara langsung. Contoh: Addc A,00H Isi dari Akumulator A akan ditambahkan dengan isi dari memori RAM Internal di alamat 00H beserta carry flag dan hasilnya disimpan di Akumulator A, Apabila carry flag set maka hasil yang tersimpan di Akumulator A adalah A + isi alamat 00H + 1 ADDC A, @Ri Tambahkan Akumulator A beserta carry flag dengan data yang berada di alamat Ri (ditunjuk oleh Ri) dan hasilnya disimpan di Akumulator A. Ri adalah Register Index di mana pada MCS51 adalah berupa R0 atau R1 Contoh: Add A,@R0 Isi dari Akumulator A beserta carry flag akan ditambahkan dengan isi dari memori RAM Internal yang ditunjuk oleh R0. Apabila R0 berisi 05H maka, isi dari alamat 05H akan dijumlahkan dengan Akumulator A beserta carry flag dan hasilnya disimpan di
Akumulator A. ADDC A, #data Tambahkan Akumulator A beserta carry flag dengan sebuah konstanta dan hasilnya disimpan dalam akumulator A. Contoh : Addc A,#05H Isi Akumulator A beserta carry flag ditambah dengan data 05H dan hasilnya disimpan dalam Akumulator A. Apabila carry flag set maka hasil di Akumulator A adalah A + 5H + 1. SUBB SUBB A, Rn Lakukan pengurangan data di Akumulator A dengan Rn (n = 0&7) dan simpan hasilnya di Akumulator A Contoh: Subb A,R0 Data di akumulator A beserta carry flagnya dikurangi dengan isi R0 dan hasilnya disimpan di Akumulator A SUBB A, direct Lakukan pengurangan data di Akumulator A dengan data di memori tertentu yang ditunjuk secara langsung. Contoh: Subb A,00H Data di Akumulator A beserta carry flagnya dikurangi dengan data di alamat 00H dari RAM Internal dan hasilnya disimpan di Akumulator A. SUBB A, @Ri Lakukan pengurangan data di Akumulator A beserta carry flag dengan data yang ditunjuk oleh Ri (Register Index) di mana Ri dapat berupa R0 atau R1 Contoh:
Subb A,@R0 Data di Akumulator A beserta carry flagnya dikurangi dengan data yang ditunjuk oleh R0 dan hasilnya disimpan di Akumulator A. SUBB A, #data Lakukan pengurangan data di Akumulator A beserta carry flag dengan sebuah konstanta dan hasilnya disimpan di Akumulator A Contoh: Subb A,#05H Data di Akumulator A beserta carry flag dikurangi dengan data 05H dan hasilnya disimpan di Akumulator A INC INC A Tambahkan nilai Akumulator A dengan 1 dan hasilnya disimpan di Akumulator A.
INC Rn Tambahkan nilai Rn (n= 0,..,7) dengan 1 dan hasilnya disimpan di Rn tersebut. INC direct Tambahkan data yang di RAM Internal yang alamatnya ditunjuk secara langsung dengan 1 dan hasilnya disimpan di alamat tersebut. Contoh: Inc 00H Data di alamat 00H ditambah dengan 1 dan hasilnya disimpan di alamat 00H.
INC @Ri Tambahkan data yang alamatnya ditunjuk oleh Ri (Register Index) dengan 1 dan simpan hasilnya di alamat tersebut. Contoh: Inc @R1 Data di alamat yang ditunjuk oleh R1 dan hasilnya disimpan di alamat tersebut,
apabila R1 berisi 10H maka data di alamat 10H ditambah dengan 1 dan simpan kembali di alamat 10H. INC DPTR Tambahkan nilai DPTR dengan 1 dan simpan hasilnya di DPTR.
Kebalikan dari proses increment atau penambahan dengan 1 adalah decrement atau pengurangan dengan 1 menggunakan perintah DEC. Dengan format dan aturan perintah seperti perintah INC.
MUL AB Lakukan perkalian antara Akumulator A dan Register B, hasil dari perkalian disimpan di Akumulator A, untuk byte rendah dan di Register B untuk byte tinggi. Bila hasil perkalian lebih dari 255 (0FFH) maka flag overflow akan set, sedangkan carry akan selalu clear. Contoh: Mov A,#50H Mov B,#0A0H Mul AB Hasil perkalian dari 50H atau 80 desimal dengan 0A0H atau 160 desimal adalah 3200H atau 12800, maka nilai yang disimpan di Akumulator A adalah 00H dan di Register B adalah 32H. Sedangkan Flag Overflow akan set karena hasil dari perkalian lebih besar daripada 255 atau (0FFH) DIV AB Lakukan pembagian antara Akumulator A dan Register B, hasil dari pembagian akan disimpan di akumulator A dan sisa pembagian disimpan di Register B. Flag Overflow dan Carry akan selalu clear Flag Overflow akan set apabila isi dari Register B adalah 00 di mana hal ini menandakan bahwa proses pembagian tidak mungkin dilakukan karena hasil pembagian antara suatu bilangan dengan 0 adalah tidak berhingga. Contoh: Mov A,#0FB
Mov B,#12H Div AB Hasil dari pembagian ini adalah 0DH dengan sisa 11H, maka 0DH akan tersimpan di Akumulator A sebagai hasil bagi dan 11H tersimpan di Register B sebagai sisa bagi. DA A Mengubah data di Akumulator A menjadi bentuk BCD. Instruksi ini akan mengubah sebuah 8 bit data pada Akumulator A dalam bentuk hexa menjadi 2 digit di mana digit pertama pada nibble atas berupa bit 7&4 dari Akumulator A dan digit kedua adalah nibble bawah berupa bit 3&0 dari Akumulator A. Pada dasarnya instruksi ini akan menambahkan 6 apabila nibble rendah berada di atas 9 atau bit AC set dan menambahkan 6 apabila nibble tinggi berada di atas 9 atau bit Carry Set. Instruksi ini biasa digunakan sesudah instruksi ADD. Contoh 1: Add A,#88H DA A Nilai akumulator A sebelumnya adalah 99H, hasil penjumlahan 99H dan 88H adalah 21H dengan bit AC set dan Carry set karena hasil penjumlahan 9 dan 8 baik di nibble tinggi maupun nibble rendah adalah lebih besar dari 9. Karena bit AC set dan bit carry set maka hasil penjumlahan kedua nibble tersebut masingmasing ditambah 6 dan menghasilkan 87H dengan carry flag set. Contoh 2: Add A,#02H DA A Nilai Akumulator A sebelumnya adalah 79H, hasil penjumlahan dengan 02H adalah 7BH dengan bit AC set karena hasil penjumlahan pada nibble rendah lebih besar dari 9 dan setelah melewati instruksi DA A, maka 7BH akan ditambah dengan 6H sehingga menjadi 81H. Intinya, apabila kondisi: –
Bit AC set, Bit Carry clear = Akumulator A ditambah 06H
–
Bit AC clear, Bit Carry clear = Akumulator A ditambah 00H
–
Bit AC clear, Bit Carry set = Akumulator A ditambah 60H
–
Bit AC set, Bit Carry set = Akumulator A ditambah 66H I Instruksi DA A memang bukan sebuah instruksi yang mengubah bilangan heksa menjadi bentuk desimal dengan mudah, namun instruksi ini berfungsi untuk membuat operasi penjumlahan secara BCD sehingga hasil penjumlahan dari 79H dan 02H bukan menjadi 7BH melainkan menjadi 81H.
Operasi Logika ANL Melakukan operasi AND antara dua buah variabel dan menyimpannya di variabel tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat menggunakan register (Rn), alamat langsung, tak langsung atau immediate data, apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat menggunakan akumulator atau immediate data. ANL A, Rn Melakukan operasi AND antara akumulator A dan Rn (R0,...,R7) dan hasilnya disimpan di akumulator A. ANL A, direct Melakukan operasi AND antara akumulator A dan alamat langsung dan hasilnya disimpan di akumulator A. Contoh: ANL A,05H Akumulator A di AND dengan data di alamat 05H dan hasilnya disimpan di akumulator A. ANL A, @Ri Melakukan operasi AND antara akumulator A dan data yang ditunjuk oleh Register Index (R0 atau R1) serta hasilnya disimpan di akumulator A. Contoh: ANL A,@R0 Akumulator A di AND dengan data yang ditunjuk oleh R0, misalkan R0 berisi 50H,
maka akumulator A di AND dengan data yang tersimpan di alamat 50H dan hasilnya disimpan di akumulator A. ANL A, #data Melakukan operasi AND antara akumulator A dan immediate data serta hasilnya disimpan di akumulator A. ANL direct,A Melakukan operasi AND antara alamat langsung dengan akumulator A serta hasilnya disimpan di alamat langsung tersebut. Contoh: ANL 07H,A Data di alamat 07H di AND dengan akumulator A dan hasilnya kembali disimpan di alamat 07H. ANL direct, #data Melakukan operasi AND antara alamat langsung dengan immediate data serta hasilnya disimpan di alamat langsung tersebut. ORL Melakukan operasi OR antara dua buah variabel dan menyimpannya di variabel tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat menggunakan register (Rn), alamat langsung, tak langsung atau immediate data, apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat menggunakan akumulator atau immediate data. ORL A,Rn Melakukan operasi OR antara akumulator A dan Rn (R0,...,R7) dan hasilnya disimpan di akumulator A. ORL A,direct Melakukan operasi OR antara akumulator A dan alamat langsung dan hasilnya
disimpan di akumulator A. Contoh: ORL A,05H Akumulator A di OR dengan data di alamat 05H dan hasilnya disimpan di akumulator A. ORL A,@Ri Melakukan operasi OR antara akumulator A dan data yang ditunjuk oleh Register Index (R0 atau R1) serta hasilnya disimpan di akumulator A. Contoh: ORL A,@R0 Akumulator A di OR dengan data yang ditunjuk oleh R0, misalkan R0 berisi 50H, maka akumulator A di OR dengan data yang tersimpan di alamat 50H dan hasilnya disimpan di akumulator A. ORL A,#data Melakukan operasi OR antara akumulator A dan immediate data serta hasilnya disimpan di akumulator A. ORL direct,A Melakukan operasi OR antara alamat langsung dengan akumulator A serta hasilnya disimpan di alamat langsung tersebut. Contoh: ORL 07H,A Data di alamat 07H di OR dengan akumulator A dan hasilnya kembali disimpan di alamat 07H. ORL direct,#data Melakukan operasi OR antara akumulator A dan immediate data serta hasilnya disimpan di akumulator A
XRL Melakukan operasi EXOR antara dua buah variabel dan menyimpannya di variabel tujuan. Apabila variabel tujuan adalah akumulator, maka variabel yang lain dapat menggunakan register (Rn), alamat langsung, tak langsung atau immediate data, apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat menggunakan akumulator atau immediate data. XRL A,Rn Melakukan operasi EXOR antara akumulator A dan Rn (R0,...,R7) dan hasilnya disimpan di akumulator A. XRL A,direct Melakukan operasi EXOR antara akumulator A dan alamat langsung dan hasilnya disimpan di akumulator A. Contoh: XRL A,05H Akumulator A di EXOR dengan data di alamat 05H dan hasilnya disimpan di akumulator A. CJNE @Ri,#data,rel Melakukan perbandingan antara data yang terletak pada alamat yang ditunjuk oleh Register Index (R0 atau R1) dan data immediate serta melakukan lompatan ke alamat yang ditentukan apabila hasil perbandingan tidak sama. Contoh: CJNE @R1,#00H,lompat1 Program akan menuju ke alamat lompat 1 apabila data di alamat yang ditunjuk oleh R1 tidak sama dengan data 00H. DJNZ Rn, rel Melakukan pengurangan pada Rn (R0,...,R7) dengan 1 dan lompat ke alamat yang ditentukan apabila hasilnya bukan 00. Apabila hasilnya telah mencapai 00, maka program akan terus menjalankan instruksi di bawahnya.
Contoh: Tunggu: DJNZ R7,Tunggu RET Selalu melakukan lompatan ke alamat tunggu dan mengurangi R7 dengan 1 selama nilai R7 belum mencapai 00. DJNZ direct, rel Melakukan pengurangan pada data di alamat yang ditunjuk secara langsung dengan 1 dan lompat ke alamat yang ditentukan apabila hasilnya bukan 00. Apabila hasilnya telah mencapai 00, maka program akan terus menjalankan instruksi di bawahnya. Contoh: Tunggu: DJNZ 07H,Tunggu RET Selalu melakukan lompatan ke alamat tunggu dan mengurangi data pada alamat 07H dengan 1 selama nilai pada data yang berada pada alamat 07H belum mencapai 00.
NOP Instruksi ini berfungsi untuk melakukan tundaan pada program sebesar 1 cycle tanpa mempengaruhi registerregister maupun flag. Pengenalan Lingkungan Pembuatan Program Dalam pembuatan program untuk Mikrokontroler dapat dilakukan dengan menggunakan beberapa tool yang menyediakan fasilitas untuk itu. Lingkungan Pembuatan Program atau sering disebut dengan Integrated Development Environment atau disingkat IDE dalam hal ini terdapat banyak pilihan seperti MikroBasic dengan bahasa dasar Basic, MikroPascal dengan bahasa dasar Pascal. Diluar itu masih terdapat lingkungan pembuatan Program yang berbasis teks dimana dapat dilakukan dengan menggunakan Editor teks seperti Notepad, WordPad, Kwrite atau Kate.
Program Downloader Program Downloader adalah program yang dapat digunakan untuk mendownload program obyek ke memori yang terdapat pada Mikrokontroler. Salah satu alat yang sering digunakan untuk Downloader adalah Easy Downloader. Sesuai namanya Easy Downloader adalah rangkaian Hardware yang dilengkapi dengan Software yang digunakan untuk mengisi memori Mikrokontroler dengan mudah. Berikut ini adalah gambar dari Easy Downloader :
Rangkaian Easy Downloader Pada gambar tersebut terdapat dua buah Chip Mikrokontroler. Chip Mikrokontroler yang pertama adalah IC Master dari Mikrokontroler yang sudah diisi dengan program EZ52.hex, sedangkan IC yang kedua adalah IC Slave dari Mikrokontroler yang akan diisi oleh program Obyek. Pengisian IC Mikrokontroler Master dapat dilakukan di toko yang menyediakan fasilitas pengisian Mikrokontroler. Langkahlangkah pengisian program obyek ke dalam IC Mikrokontroler adalah sebagai berikut : 1. Sebelum menyalakan power supply, letakkan IC Mikrokontroler Slave AT89C51/52/55 ke dalam socket slave.
2. Hidupkan power supply Easy Downloader. 3. Hubungkan kabel serial dar Komputer COM1 atau COM2 ke Easy Downloader. IC master harus sudah terisi dengan program EZ52.hex 4. Jalankan software program EZ3.exe. Hasil tampilan dari EZ3.exe adalah seperti berikut :
Tampilan program EZ3.exe 5. Lakukan scan port terlebih dahulu jika Comnya belum terdeteksi. Jika sudah terdeteksi, tekan COM yang terdeteksi, misalnya COM1. Setelah itu tunggu sampai muncul tulisan pesan ...identify your chip. Selanjutnya, tekan Send Hexfile dari layar program EZ3.exe, lalu pilih file .hex yang akan dimasukkan ke IC Slave Mikrokontroler. 6. Program EZ.exe akan melakukan proses penghapusan, penulisan dan verifikasi data. Jika tulisan Complete sudah muncul, berarti program .hex sudah masuk ke dalam IC slave. 7. Sebelum mengambil IC Slave dari socket, matikan terlebih dahulu power supply untuk mrnghindari kerusakan IC Slave. 8. IC Slave mikrokontroler siap digunakan. Pembuatan Program Assembler Program Assembler dapat dibuat dengan menggunakan beberapa Editor teks yang ada seperti program MsDOS Editor yang dapat dijalankan melalui menu Start | Run dan ketik edit, selanjutnya klik OK. Sebelum melakukan langkahlangkah pembuatan
program Assembler, terdapat beberapa hal yang perlu diperhatikan, yaitu pindahkan filefile (51.exe, asm51.exe, h.exe, oh.exe, tppatch.exe dan tvdemo.exe) ke dalam direktori yang akan digunakan untuk menyimpan program. Filefile program tersebut diatas dapat dikopi dari CD yang terdapat dalam paket Easy Downloader. Berikut ini adalah langkahlangkah untuk membuat program Assembler :
Jalankan program Editor Teks : Notepad, Wordpad, atau MsDOS Editor
Ketik listing program pada MsDOS Editor, lalu simpan sebagai (Save As) dan simpan file tersebut di lokasi folder yang telah ditunjuk misalkan pada folder c:\asm. Ketik nama file dari program misalkan led.asm.
Jalankan MsDOS Prompt. MsDOS Prompt dapat dijalankan dari menu Start | Programs | MsDOS Prompt atau dapat juga melalui menu Start | Run, lalu ketik cmd, kemudian klik OK.
Tunjuk nama folder dari file led.asm, yaitu c:\asm. Saat menjalankan program MsDOS Prompt, awalnya akan menunjuk ke default direktori tertentu. Oleh sebab itu pindahkan lokasi cursor ke folder c:\asm, dengan cara ketik cd (spasi) c:\asm [Enter]
Kompilasi program *.asm
Kompilasi file program *.asm dengan mengetikkan asm51 namafile.asm pada MsDOS Prompt, misalkan c:\asm>asm51 led.asm. Proses kompilasi file *.asm ini akan menghasilkan file dengan ekstensi *.lst dan *.obj
Jika terjadi kesalahan dalam kompilasi program tersebut, maka perbaiki kesalahan pada program dengan membuka dokumen namafile.lst. Pada file
.lst ini terdapat penjelasan tentang kesalahan program Assembler yang telah dibuat. Setelah diperbaiki, kompilasi ulang file *.asm seperti pada contoh diatas.
Untuk membuat file dengan ekstensi .hex, ketik oh namafile.obj, misalkan : c:\asm>oh led.obj
Jika tidak terjadi kesalahan maka anda telah berhasil dalam proses pembuatan program Assembler ke bentuk Heksa.
Simulator 8051 dengan PeQUI Program Pequi merupakan salahsatu program simulator untuk mikrokontroler 8051. Dengan program ini, jalannya program yang telah dibuat dapat diketahui dan dimonitor, jadi anda dapat mengetahui alamat dari tiaptiap instruksi program, isi dari register Accumulator, SP, C, DPTR, R0R7 dan lainlain. Berikut ini adalah gambar dari pequi.exe :
Program pequi.exe Langkahlangkah dalam menjalankan program pequi adalah sebagai berikut : ●
Install program pequi.exe dari CD atau Dokumen yang disertakan dalam Modul ini.
●
Jalankan program pequi.exe
●
Klik Load pada taskbar Pequi, lalu klik namafile.hex, lalu klik Open.
●
Untuk menjalankan program pequi secara manual atau step demi step, klik tombol Step. Setiap kali anda mengklik Step, akan terlihat jalannya instruksi program yang telah dibuat.
●
Langkah lain untuk menjalankan program pequi secara otomatis adalah dengan mengklik tombol Run. Untuk mengubah kecepatan jalannya program, Anda dapat membuka menu Setting dari menu Options | Speed, lalu klik High atau Medium atau Low.
Konfigurasi Speed ●
Bila ingin menghentikan jalannya program, klik tombol Stop. Bila ingin mengulangi jalannyaprogram dari awal, klik Reset.
Proses perancangan software tahap demi tahap perlu dilakukan, termasuk membuat diagram alir yang merupakan alur atau langkahlangkah dari program yang akan dibuat, dengan demikian akan lebih jelas dan mudah untuk melihat cara kerja dari program. Sebagai contoh pembuatan Program LED untuk menyalakan dan mematikan led. Dalam contoh ini dimisalkan bahwa Led1 terhubung dengan alamat register P1.4 dan led 2 tersambung dengan alamat port P1.6. Fungsi led digunakan untuk mengecek program apakah sudah berjalan sesuai dengan yang diinginkan, sebelum port tersebut disambung dengan rangkaian elektronik yang lainnya yang merupakan bagian dari robot. Contoh Program *.asm :
;===================================================== ; Listing program led ; menyalakan dan mematikan led dengan delai 1 detik ;===================================================== Org 00H ;===================================================== ; led pada P1.4 dan P1.6 nyala dan mati secara ; ber samaan ;===================================================== Led_sama: Clr P1.4 ; led1 nyala Clr P1.6 ; led2 nyala Acall delai_1s Setb P1.4 ; led1 mati Setb P1.6 ; led2 mati Acall delai_1s ;===================================================== ; led pada P1.4 dan P1.6 nyala dan mati secara ; bergantian ;===================================================== Led_ganti: Clr P1.4 ; led1 nyala Setb P1.6 ; led2 mati Acall delai_1s Setb P1.4 ; led1 mati Clr P1.6 ; led2 nyala Ajmp selesai Delai_1s: Mov r1,#8 ; pindahkan data 8 ke alamat r1 Loop1: Mov r2,#250 ; pindahkan data 250 ke alamat r2 Loop2: Mov r3,#250 ; pindahkan data 250 ke alamat r3 Loop3: Djnz r3,loop3 Djnz r2,loop2 Djnz r1,loop1 ret Selesai: End Langkah Pembuatan Program : 1. Ketik list program Assembler diatas. 2. Kompilasi Program Assembler anda dengan program asm51.exe dan oh.exe untuk mendapatkan file obyek (*.obj) dan format heksa (*.HEX)
3. Jalankan Program Pequi.exe 4. Lakukan download program *.HEX ke Mikrokontroler dengan Easy Downloader. 5. Pasang uC pada board Robot 6. Perhatikan hasilnya.