You are on page 1of 28

MAKALAH IMPLEMENTASI BAHASA ASSEMBLY PADA MIKROKONTROLER

Oleh : Abdur Rouf (2008.69.04.0076)

Misbahul Munir (2010.69.04.0044)

FAKULTAS TEKNIK PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS YUDHARTA PASURUAN

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.

Prosesor ROM (Read Only Memory) RAM (Read access Memory)

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.

B. Arsitektur Perangkat Robot Sederhana

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.

Spesifikasi dari servo continuous parallax sebagai berikut : Power 6v DC max


6

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 Deteksi Jalur Motor Kiri Motor Kana n

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.

C. Bahasa Assembly Mikrokontroler


8

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

FOSC Xtal TMR0DIV equ

equ

4000000

; 4 mhz

256 (FOSC / (8000*16))

; timer 0 preset

untuk 8000 hz interrupts

BANK0

macro bcf endm STATUS,RP0

BANK1 bsf

macro STATUS,PR0
9

endm

;---------------------------------------------------------------------------------------------------; Kontrol ADC (Analog to Digital converter) untuk setiap channel ;----------------------------------------------------------------------------------------------------

AD_LMFB equ AD_RFMB equ AD_SPEED AD_TRACK

b10011001 b0010001 equ equ b10000001 b10001001

w_temp equ status_temp equ pclath_temp equ fsr_temp equ

0x20 0x21 0x22 0x23

;nilai W pada saat interrupt ;nilai STATUS pada saat interrupt ;nilai PCLATH ;nilai FSR

D_SPEED equ D_TRACK equ D_RMFB equ D_LMFB equ

0X24 0x25 0x26 0x27

pulseleft equ pulseright equ

0x28 0x29
10

counter work equ

equ 0x2b

0x2a

SPEED_LEFT SPEED_RIGHT work2 equ equ

equ 0x2d 0x2e

0x2c

R0 dir index

equ equ

0x2f 0x30 equ 0x31

;digunakan oleh subrutin ADC

;indeks untuk melihat

nilai pada tabel kecepatan

workB pulsewidth equ R_integrate equ L_integrate R_SPEED equ L_SPEED

equ 0x33

0x32

0x34 equ 0x35 0x36 equ 0x37

_temp16H equ _temp16L

0x38 equ 0x39

reserve0 equ

7
11

reserve0 equ reserve0 equ stop0 stop0

6 5 equ equ 3 2

FwdLeft RevLeft FwdRight RevRight equ equ

equ 6 equ 4

;BANK1

w_temp1

equ

0xa0

;nilai sementara w_temp

;-------------------------------------------------------------------------------------------------;Mulai ;-------------------------------------------------------------------------------------------------Org Goto 0 start ;RESET vector

Org

; Macro
12

spdControl MACRO

speed,pulse,dirbit,Fwd,Rev,stop

local

p0,p0rev,p0b,p0xz,p0exit

p0

movf pulsewidth,W addwf pulse,w btfsc goto STATUS,C p0b

bcf bcf btfsc goto bsf goto p0rev

workB,Fwd workB,Rev dir,dirbit p0rev workB,Fwd p0b bsf workB,rev

p0b decfsz pulse,f goto p0exit

bcf bcf

workB,fwd workB,rev
13

movf speed,w movwf index call speedlookup

movwf pulse movlw 10 addwf pulse,f bcf dir,dirbit

btfsc bsf goto

speed,7 dir,dirbit p0

p0exit ENDM Integrate MACRO SPEED,MFB,accum

Local pos,iexit Movf SPEED,W addlw 0x80 movwf work movf MFB,w addlw 0x80 subwf work,f
14

btfsc goto decf

STATUS,C pos accum,f

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

mulates the behavior of OP-AMPS.

Addsat MACRO

arga

Local A_minus,B_minus,A_B_minus,A_B_diff,m_exit Movwf work


15

Btfsc arga,7 Goto A_minus

Btfsc work,7 Goto A_B_diff

Movf arga,w Bcf STATUS,C

Addwf work,f Movf work,7 Movlw 0x7f Goto m_exit

A_minus Btfsc work,7 Goto A_B_minus

A_B_diff Movf arga,w Bcf STATUS,C

Addwf work,w Goto m_exit

A_B_minus Movf arga,w


16

Bcf

STATUS,C

Addwf work,f Movf work,w Btfss work,7 Movlw 0x80

M_exit ENDM

;---------------------------------------------------------------------------------------------------;Penanganan Interrupt ;------------------------------------------------------------------------------------------------------

_IRQ

movwf w_temp Swapf STATUS,W Clrf STATUS

;simpan W dalam ram

Movwf status_temp Movf PCLATH,W Movwf pclath_temp


17

Clrf

PCLATH

Movf FSR,W Movwf fsr_temp

Isr_poll

btfss Goto Bcf

INTCON,T0IF isr_ret INTCON,T0IF

Movlw TMR0DIV Movwf TMR0

Movf workB,w Movwf PORTB Bsf PORTB,1

BANK0

Isr_02

movlw -11 Movwf pulsewidth Spdcontrol SPEED_LEFT,pulseleft,reserve0,fwdleft,refleft,stop0 Movlw -11 Movwf pulsewidth
18

Spdcontrol SPEED_RIGHT,pulseright,reverse1,fwdright,revright,stop1 Bcf PORTB,1

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

Org Start Clrf Clrf

100h

INTCON STATUS

Clrf Clrf Clrf

PORTA PORTB PORTC


19

BANK1 Clrf Clrf TRISB TRISC

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

Movlw TMR0DIV Movwf TMR0


20

Bsf Bsf Nop Clrf Pause Goto

INTCON,T0IE INTCON,GIE

R0 decfsz R0,f pause

Main_loop Bsf PORTC,0

Movlw AD_SPEED Call ad_convert

Movwf L_SPEED Movwf R_SPEED Movwf D_SPEED

Movwf AD_TRACK Call ad_convert

Movwf D_TRACK Movwf 3 Movwf counter

21

L3 Movf D_SPEED,w Addsat D_TRACK Movwf R_SPEED

Comf D_TRACK,W Movwf work2 Incf work2,f

Movf D_SPEED,w Addsat work2 Movwf L_SPEED Movlw AD_RMFB Call ad_convert

Movwf D_RMFB

Movlw AD_LMFB Call ad_convert

Movwf D_LMFB

Integrate Integrate

L_SPEED,D_LMFB,L_integrate R_SPEED,D_RMFB,R_integrate

Movf L_integrate,w Movwf SPEED_LEFT


22

Movf R_integrate,w Movwf SPEED_RIGHT Decfsz counter Goto L3

Bcf Goto Restify

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

;--------------------------------------------------------------------------------------------------;Rutin ADC ;--------------------------------------------------------------------------------------------------23

Ad_convert Bcf INTCON,GIE

Btfsc INTCON,GIE Goto ad_convert

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

;----------------------------------------------------------------------------------------------;Konversi Bilangan Bertanda ;----------------------------------------------------------------------------------------------24

Speedlookup Movf index,w Btfsc index,7 Goto _slminus

Movlw 0x7f Xorwf index,w Return

_slminus Movlw 0x7f Andwf index,w Return

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

BAB III PENUTUP

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

You might also like