Professional Documents
Culture Documents
2012
BAB I PENDAHULUAN
A. LATAR BELAKANG Bahasa pemrograman assembly adalah bahasa pemrograman dasar yang pertama dikenal untuk menghubungkan programmer dengan mesin. Sifatnya yang mendekati bahasa mesin memberikan keistimewaan tersendiri, yaitu kecepatan akses. secara umum, semakin dekat bahasa pemrograman dengan mesin, semakin tinggi pula kecepatannya. Pemrograman bahasa assembly menawarkan kelebihan ini. Walaupun saat ini sudah banyak bahasa pemrograman tingkat tinggi (high level language), bahasa pemrograman assembly masih tetap banyak digunakan terutama pada pemrograman perangkat mikrokontroler clan robotik. Makalah ini membahas secara rinci bahasa pemrograman assembly dari mulai konsep dasar, instruksi, hingga aplikasinya.
B. RUMUSAN MASALAH Adapun beberapa pokok permasalahan yang melatarbelakangi disusunnya makalah implemetasi bahasa assembly pada hhh: 1. Bagaimanakah implemetasi bahasa assembly pada mikrokontroler ?
C. TUJUAN Berdasarkan rumusan masalah di atas, maka tujuannya adalah sebagai berikut : 1. Mengetahui dan memahami tentang implemetasi bahasa assembly pada mikrokontroler.
BAB II PEMBAHASAN
A. Mikrokontroler Mikrokontroler adalah sebuah system computer sederhana yang dimuat dalam satu chip, biasanya disebut computer on chip. Kata mikro menunjukkan bahwa perangkatnya berukuran kecil dan kata kontroler menunjukkan bahwa perangkat kecil tersebut dapat digunakan untuk mengontrol/ mengendalikan perangkat lain. Sering juga diistilahkan sebagai embedded microcontroller, bersifat sebagai perangkat pendukung dan biasanya ditanamkan ke dalam perangkat yang dikontrolnya. Pada mikrokontroler terdapat bagian hardware dan software. Programmer dapat memasukkan program ke dalam mikrokontroller sehingga berfungsi sesuai dengan yang diinginkan oleh pengguna. Salah satu kelebihan mikrokontroler adalah kesederhanaan dan ukurannya yang relative kecil. Disamping kelebihan tersebut, terdapat kekurangan yaitu daya muat memori yang relative rendah sehingga programmer dituntut untuk lebih hemat dalam membuat program. Komponen yang terdapat dalam mikrokontroler adalah prosesor ROM, RAM, dan I/O. Prosesor berperan sebagai otak dari system. ROM adalah memori hardware yang menyimpan rangkaian program inti. RAM adalah memori untuk menyimpan program yang disisipkan oleh programmer. RAM adalah bagian yang dapat diubah oleh pengguna sesuai dengan program yang dibuat. I/O adalah bagian yang menghubungkan mikrokontroler dengan dunia luar.
Perangkat Input/Output
Komponen Pendukung
Komponen Mikrokontroler
Pemrograman bahasa assembly adalah salah satu program dengan ukuran yang relative kecil. Bahasa assembly adalah bahasa yang mendekati bahasa mesin, satu tingkat diatas bahasa mesin, memiliki keuntungan karena dapat mengakses bagian-bagian hardware dengan efisien. Pada saat ini telah banyak chip mikrokontroler yang digunakan untuk berbagai aplikasi baik untuk penelitian maupun untuk keperluan. Beberapa contoh aplikasi yang banyak menggunakan mikrokontroler seperti tampilan seven segmen, robot line follower, servo kontroler dan jam digital sederhana. Penggunaan mikrokontroler pada perangkat sederhana yang sering kita temui seharihari banyak digunakan. Secara sederhana kita bisa memperhatikan perangkat-perangkat yang memiliki tombol untuk memasukkan data dan tampilan layar digital seperti handphone, mesin facsimile, atau jam digital. Perangkat-perangkat sejenis tersebut kemungkinan besar menggunakan mikrokontroler sebagai komponen kendalinya. Pada saat ini dalam pembuatan robot sederhana juga hamper dapat dipastikan menggunakan komponen mikrokontroler. Mikrokontroler terdiri dari beberapa tipe dan lebar bit, sesuai kebutuhan dengan kemampuan komunikasi serial, penanganan keyboard, pemroses sinyal, dan pemroses radio. Beberapa produsen perangkat mikrokontroler yang banyak digunakan adalah Motorola, NEC, microchip, texas instruments, dan Siemens. Arsitektur dasar suatu mikrokontroler secara umum terdiri dari dua jenis yaitu VonNeuman dan Harvard. Pada arsitektur, Von-Neuman terdapat sebuah bus data yang digunakan
4
untuk mengambil instruksi dan data. Program dan data disimpan dalam memori utama secara bersama-sama. Biasanya program disimpan pada alamat awal memori, sementara data disimpan pada alamat yang lebih tinggi di dalam segmen data. Secara sekuensial, prosesor akan mengeksekusi instruksi pada alamat awal memori kemudian menggunakan operand data pada alamat segmen data. Pada arsitektur Harvard, bus data dan instruksi dipisah sehingga proses eksekusiinstruksi dan data dapat dilakukan secara bersamaan. Hal ini akan mempercepat proses eksekusi instruksi. Kecepatan proses ini harus dibayar dengan tingkat kompleksitas yang lebih tinggi dibandingkan dengan arsitektur Van-Neuman. Berdasarkan kompleksitas instruksi, suatu mikrokontroler dikategorikan ke dalam dua jenis, yaitu CISC (Complex Instruction Set Computer) dan RISC (Reduced Instruction Set Computer). Masing-masing memiliki kelebihan dan kekurangan. Tipe CISC secara konsep bisa lebih hemat waktu eksekusi instruksi. Setiap instruksi memiliki panjang waktu eksekusi yang berbeda-beda sehingga waktu yang diperlukan untuk satu eksekusi satu instruksi dengan instruksi yang lainnya berbeda disesuaikan dengan keperluannya. Hal ini tidak akan membuang waktu instruksi,terutama untuk intruksi yang memerlukan silkus instruksi yang pendek. Sementara itu,pada RISC, semua instruksi dieksekusi dengan waktu eksekusi yang sama. Bagi instruksi-instruksi yang hanya memerlukan waktu silkus yang pendek , akan ada proses menunggu, yang sering diistilahkan sebagai bubble/no operasi. Waktu ini terbuang percuma. CISC karena harus bisa mengakomodasi berbagi kemungkinan panjang silkus instruksi, sementara RISC tidak.
Pada bagian ini akan dibahas contoh robot sederhana yang bayak dibuat yaitu robot line follower. Prinsipnya, robot jenis ini adalah sebuah robot yang dapat melakukan penelusuran.
jalur dengan sekitarnya. Berbeda komponen utama yang diperlukan pada robot ini adalah sensor,motor servo dan mikrokontroler. Sensor robot mikrokontroler berperan dalam
pengendalian gerak berdasarkan masukan dari sensor. Sementara itu,motor servo berperan dalam menghubungkan dengan alat mekanik dengan robot. Motor DC Motor adalah perangkat utama penggerak sebuah robot. Sebagian besar system robot menggunakan motor untuk penggerak. Beberapa jenis motor yang banyak digunakan sebagai penggerak adalah Motor DC, Motor stepper, dan Motor servo. Motor DC biasanya digunakan untuk menggerakan robot dengan kekuatan yang cukup besar. Sementara itu, motor stepper memiliki torsi yang tidak sebesar motor DC, tetapi memiliki ketelitian yang lebih tinggi. Motor servo adalah motor dengan system closed feedback.
Motor servo terdiri dari motor, gear, potensiometer dan control. Posisi terakhir motor akan diinformasikan kepada bagiab control. Itulah mengapa disebut system closed feedback. Potensiometer berfungsi untuk menentukan batas sudut putaran.
Rata-rata kecepatan 60 rpm Berat 45,0 gram Torque 3,40 kg-cm/47 oz-in Ukuran mm (LxWxH) 40,5x20,0x38,0 Sensor
Sensor adalah perangkat input yang menerima masukan berupa sinyal yang diolah dan diteruskan ke dalam mikrokontroler. Untuk proses sensing kondisi lingkungan, terdapat beberapa jenis sensor yang dapat digunakan pada system robot. Berdasar keluarannya, sensor dapat dibedakan sebagai berikut : Biner : berupa 0 (0 V) atau 1 (5 V) Analog : misal 0 V hingga 5 V Pewaktu : misal PWM dan waktu RC Serial : misal UART (RS232), I2C dan SPI
Salah satu sensor yang banyak digunakan adalah sensor cahaya. Pada system robot bergerak, sensor cahaya banyak diguakan untuk keperluan mengikuti garis atau mendeteksi adanya penghalang. Pada robot line follower sensor cahaya yang digunakan untuk membedakan warna garis dengan warna diluar garis. Misalnya, warna garisnya hitam dan diluarnya putih. Sensor ini akan mendeteksi garis tersebut dan hasil sensornya akan dikirim ke mikrokontroler. Informasi hasil sensor ini digunakan oleh mikrokotroler untuk mengarahkan laju gerak roda robot. Sensor inframerah adalah sensor yang menggunakan inframerah untuk mendeteksi lingkungan. Sinar inframerah adalah gelombang elektromagnetik yang mempunyai frekuensi rendah. Pada system robot, sensor inframerah dapat digunakan untuk mendeteksi jalur dan mengukur jarak antara robot dengan jarak penghalang terdekat. Perangkat yang diperlukan untuk mengukur jarak antara robot dan dinding adalah LED dan penerima inframerah. Sinyal inframerah diancarkan kemudian dideteksi oleh bagian penerima.
Di samping mengukur jarak, sensor cahaya juga berfungsi untuk menentukan jalur garis yang akan dilalui robot. Sensor cahaya/warna ini dapat membedakan warna jalur dan luar jalur sehingga robot dapat mengikuti jalur yang telah dibuat.
Mikrokontroler Pada saat ini mikrokontroler adalah perangkat yang umum digunakan dalam
pengembangan kendali robot bergerak. Beberapa jenis perangkat mikrokontroler yang banyak digunakan adalah AT89S51/52, MikroAVR8535, Mikro PIC 16F84/A dan MikroAVR 128. Kita bisa menggunakan salah satu mikrokontroler tersebut untuk keperluan pembuatan robot bergerak. Secara fungsi, pada dasarnya sama sebagai tempat penyimpanan logika proses. Blok diagram robot line follower terdiri dari 3 bagian utama, yaitu sensor, mikrokontroler dan penggerak roda. Berikut ini blok diagram robot line follower secara umum :
Kendali Motor Mikrokontroler
Sensor cahaya akan mengirimkan data kepada mikrokontroler berupa informasi jalur. Informasi jalur diperoleh berdasarkan pantulan. Jalur berwarna hitam akan menyerap cahaya sehingga pantulannya kecil, sementara warna putih memantulkan cahaya dengan intensitas yang lebih tinggi. Sensor akan memberikan informasi jalur yang tidak memantulkan cahaya (warna hitam) sebagai jalur yang harus diikuti. Mikrokontroler akan bereaksi sesuai dengan arah alur tersebut. Langkah selanjutnya, mikrokontoler akan memerintahkan kendali motoruntuk menggerakkan motor kanan atau kiri sesuai dengan arah jalur hitam.
Bahasa assembly untuk setiap mikrokontroler berbeda-beda kecuali pada satu keluarga mikrokontroler. Setiap vendor memiliki bahasa assembly sendiri untuk memprogram perangkatnya. Mikrokontroler juga bisa deprogram dengan menggunakan bahasa tingkat tinggi seperti menggunakan C, C++, VB atau Delphi. Berikut ini contoh program assembly untuk mikrokontroler keluarga PIC : : TITLE Robot Line Follower
RADIX processor
dec p16C73
_CONFIG h3ffa
include
p16c73a.inc
equ
4000000
; 4 mhz
; timer 0 preset
BANK0
BANK1 bsf
macro STATUS,PR0
9
endm
;---------------------------------------------------------------------------------------------------; Kontrol ADC (Analog to Digital converter) untuk setiap channel ;----------------------------------------------------------------------------------------------------
;nilai W pada saat interrupt ;nilai STATUS pada saat interrupt ;nilai PCLATH ;nilai FSR
0x28 0x29
10
equ 0x2b
0x2a
0x2c
R0 dir index
equ equ
equ 0x33
0x32
reserve0 equ
7
11
6 5 equ equ 3 2
equ 6 equ 4
;BANK1
w_temp1
equ
0xa0
Org
; Macro
12
spdControl MACRO
speed,pulse,dirbit,Fwd,Rev,stop
local
p0,p0rev,p0b,p0xz,p0exit
p0
bcf bcf
workB,fwd workB,rev
13
speed,7 dir,dirbit p0
Local pos,iexit Movf SPEED,W addlw 0x80 movwf work movf MFB,w addlw 0x80 subwf work,f
14
movlw 0x7f xorwf accum,f btfsc incf goto pos incf accum,f STATUS,Z accum,f iexit
movlw 0x80 xorwf accum,w btfsc decf iexit ENDM STATUS,Z accum,f
Addsat MACRO
arga
Bcf
STATUS,C
M_exit ENDM
_IRQ
Clrf
PCLATH
Isr_poll
BANK0
Isr_02
movlw -11 Movwf pulsewidth Spdcontrol SPEED_LEFT,pulseleft,reserve0,fwdleft,refleft,stop0 Movlw -11 Movwf pulsewidth
18
Isr_ret Movf fsr_temp,w Movwf FSR Movf pclath_temp,w Movwf PCLATH Swapf status_temp,w Movwf STATUS Swapf w_temp,f Swapf w_temp,w Retfie
100h
INTCON STATUS
Movlw 0ffh Movwf TRISA Movlw b10000001 Movwf OPTION_REG Clrf ADCON1
BANK0 Movlw 0 Movwf SPEED_LEFT Movwf SPEED_RIGHT Movwf dir Movwf workb Movlw 255 Movwf pulseleft Movwf pulseright
Clrf Bcf
TMR0 INTCON,T0IF
INTCON,T0IE INTCON,GIE
21
Movf D_SPEED,w Addsat work2 Movwf L_SPEED Movlw AD_RMFB Call ad_convert
Movwf D_RMFB
Movwf D_LMFB
Integrate Integrate
L_SPEED,D_LMFB,L_integrate R_SPEED,D_RMFB,R_integrate
PORTC,0 main_loop
Btfss work,7 Goto_plus Movlw 255 Xorwf work,w Addlw 128 Iorlw 80h Return _plus Movlw 128 Addwf work,w Return
MovwfADCON0 Movlw 7 Movwf R0 ADC_0 Goto Bsf Bsf ADC_1 decfsz R0,f ADC_0 ADCON0,GO_DONE INTCON,GIE ;enable interrupts nop Btfsc ADCON0;NOT_DONE Goto Movlw 128 Addwf ADRES,W Return ADC_1
END
D. Aplikasi Robot Robot line follower adalah jenis aplikasi sederhana yang banyak dirancang oleh para programmer bahasa assembly dan mikrokontroler. Peralatan yang dibutuhkan banyak tersedia di pasaran dengan harga yang relative murah.
Atlanta Hobby Robot Club Robot line follower ini dikembangkan oleh Dale Heatherington yang tergabung dalam
beberapa grup pengembang robot. Salah satu klub tempatnya bergabung adalah Atlanta Hobby
25
Robot Club. Selain line follower, beberapa aplikasi robotic yang dikembangkan adalah poluathlon, balancing, cube quest, dan trisector combat robot. Digital Mechanic Salah satu robot line follower yang dikembangkan di Indonesia. Robot ini mempunyai empat buah roda sehingga memiliki tingkat kestabilan yang lebih tinggi dibandingkan robot roda dua.
Javabot Robot line follower yang kecil ini dirancang untuk dapat mengikuti jalur yang relative
kecil. Kelebihan robot ini adalah dapat mengikuti jalur dengan tingkat ketipisan tertentu.
26
Kesimpulan : Robot line follower terdiri dari 3 bagian utama, yaitu sensor, mikrokontroler dan penggerak roda. 1. Sensor akan mendeteksi garis tersebut dan hasil sensornya akan dikirim ke mikrokontroler. Informasi hasil sensor ini digunakan oleh mikrokotroler untuk mengarahkan laju gerak roda robot.
2. Mikrokontroler adalah sebuah system computer sederhana yang dimuat dalam
satu chip. Komponen yang terdapat dalam mikrokontroler adalah prosesor ROM, RAM, dan I/O. 3. Motor adalah perangkat utama penggerak sebuah robot. Sebagian besar system robot menggunakan motor untuk penggerak. Beberapa jenis motor yang banyak digunakan sebagai penggerak adalah Motor DC, Motor stepper, dan Motor servo. Bahasa assembly untuk setiap mikrokontroler berbeda-beda kecuali pada satu keluarga mikrokontroler. Setiap vendor memiliki bahasa assembly sendiri untuk memprogram perangkatnya. Robot line follower adalah jenis aplikasi sederhana yang banyak dirancang oleh para programmer bahasa assembly dan mikrokontroler.
27
28