makalah asembly

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. Buku 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 mikrokontroler ini antara lain, sebagai berikut:
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.












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 sehari-hari 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 Von-Neuman dan Harvard. Pada arsitektur, Von-Neuman terdapat sebuah bus data yang digunakan 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
• 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 :





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
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 dec
processor p16C73
_CONFIG h’3ffa’

include “p16c73a.inc”

FOSC equ 4000000 ; 4 mhz
Xtal
TMR0DIV equ 256 – (FOSC / (8000*16)) ; timer 0 preset
untuk 8000 hz interrupts

BANK0 macro
bcf STATUS,RP0
endm

BANK1 macro
bsf STATUS,PR0
endm

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

AD_LMFB equ b’10011001’
AD_RFMB equ b’0010001’
AD_SPEED equ b’10000001’
AD_TRACK equ b’10001001’

w_temp equ 0x20 ;nilai W pada saat interrupt
status_temp equ 0x21 ;nilai STATUS pada saat interrupt
pclath_temp equ 0x22 ;nilai PCLATH
fsr_temp equ 0x23 ;nilai FSR

D_SPEED equ 0X24
D_TRACK equ 0x25
D_RMFB equ 0x26
D_LMFB equ 0x27

pulseleft equ 0x28
pulseright equ 0x29
counter equ 0x2a
work equ 0x2b

SPEED_LEFT equ 0x2c
SPEED_RIGHT equ 0x2d
work2 equ 0x2e

R0 equ 0x2f ;digunakan oleh subrutin ADC
dir equ 0x30
index equ 0x31 ;indeks untuk melihat
nilai pada tabel kecepatan

workB equ 0x32
pulsewidth equ 0x33
R_integrate equ 0x34
L_integrate equ 0x35
R_SPEED equ 0x36
L_SPEED equ 0x37

_temp16H equ 0x38
_temp16L equ 0x39

reserve0 equ 7
reserve0 equ 6
reserve0 equ 5
stop0 equ 3
stop0 equ 2

FwdLeft equ 7
RevLeft equ 6
FwdRight equ 5
RevRight equ 4

;BANK1

w_temp1 equ 0xa0 ;nilai sementara w_temp

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

Org 4

; Macro
spdControl MACRO speed,pulse,dirbit,Fwd,Rev,stop

local p0,p0rev,p0b,p0xz,p0exit

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

bcf workB,Fwd
bcf workB,Rev
btfsc dir,dirbit
goto p0rev
bsf workB,Fwd
goto p0b
p0rev bsf workB,rev

p0b
decfsz pulse,f
goto p0exit

bcf workB,fwd
bcf workB,rev
movf speed,w
movwf index
call speedlookup

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

btfsc speed,7
bsf dir,dirbit
goto 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
btfsc STATUS,C
goto pos
decf accum,f
movlw 0x7f
xorwf accum,f
btfsc STATUS,Z
incf accum,f
goto iexit
pos
incf accum,f
movlw 0x80
xorwf accum,w
btfsc STATUS,Z
decf accum,f
iexit
ENDM

mulates the behavior of OP-AMPS.

Addsat MACRO arga

Local A_minus,B_minus,A_B_minus,A_B_diff,m_exit
Movwf work
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
Bcf STATUS,C
Addwf work,f
Movf work,w
Btfss work,7
Movlw 0x80

M_exit
ENDM

;----------------------------------------------------------------------------------------------------
;Penganganan Interrupt
;------------------------------------------------------------------------------------------------------

_IRQ movwf w_temp ;simpan W dalam ram
Swapf STATUS,W
Clrf STATUS
Movwf status_temp
Movf PCLATH,W
Movwf pclath_temp
Clrf PCLATH
Movf FSR,W
Movwf fsr_temp

Isr_poll btfss INTCON,T0IF
Goto isr_ret
Bcf 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
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 100h
Start
Clrf INTCON
Clrf STATUS

Clrf PORTA
Clrf PORTB
Clrf PORTC
BANK1
Clrf TRISB
Clrf TRISC
Movlw 0ffh
Movwf TRISA
Movlw b’10000001’
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 TMR0
Bcf INTCON,T0IF

Movlw TMR0DIV
Movwf TMR0


Bsf INTCON,T0IE
Bsf INTCON,GIE
Nop
Clrf R0
Pause decfsz R0,f
Goto 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

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 L_SPEED,D_LMFB,L_integrate
Integrate R_SPEED,D_RMFB,R_integrate

Movf L_integrate,w
Movwf SPEED_LEFT
Movf R_integrate,w
Movwf SPEED_RIGHT
Decfsz counter
Goto L3

Bcf PORTC,0
Goto main_loop

Restify
Btfss work,7
Goto_plus
Movlw 255
Xorwf work,w
Addlw 128
Iorlw 80h
Return
_plus
Movlw 128
Addwf work,w
Return

;---------------------------------------------------------------------------------------------------
;Rutin ADC
;---------------------------------------------------------------------------------------------------
Ad_convert
Bcf INTCON,GIE
Btfsc INTCON,GIE
Goto ad_convert

Movwf ADCON0
Movlw 7
Movwf R0
ADC_0 decfsz R0,f
Goto ADC_0
Bsf ADCON0,GO_DONE
Bsf INTCON,GIE ;enable interrupts
ADC_1 nop
Btfsc ADCON0;NOT_DONE
Goto ADC_1
Movlw 128
Addwf ADRES,W
Return

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

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 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.








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

Comments