Anda di halaman 1dari 12

BAB III

ANALISA SOFTWARE

3.1 Analisa Software

Pengujian kehandalan robot mobil dalam menjejak arah


sumber cahaya atau dapat dikatakan juga Light Detector Robot
dapat dilakukan dengan cara menempatkan suatu sumber cahaya
disekitar robot mobil. Pengujian pertama dilakukan dengan
menempatkan lampu tepat dibelakang robot mobil dengan
menghadap cahaya langsung pada LDR, maka robot mobil ini akan
mundur mendekati cahaya. Pengujian kedua untuk membuat robot
mobil ini maju ke depan adalah dengan mendekatkan sumber
cahaya depan robot mobil dengan dihadapkan LDR, maka mobil
akan maju mendekati cahaya, pengujian ke 3 pada saat kedua LDR
di beri sumber cahaya maka robot mobil akan diam.

Untuk mendapatkan respon pergerakan mobil robot terhadap


cahaya maka membutuhkan suatu process untuk membuat mobil
itu bergerak sesuai kondisi, maka dibutuhkan sebuah bahasa yang
nanti nya akan diproses oleh mikrokontroler, dalam penulisan suatu
bahasa tersebut terdapat suatu software sebagai simulasi program
yang pada akhirnya akan di download/flash ke dalam
mikrokontroler. Software yang kami gunakan adalah Reads51,
software tersebut menggunakan bahasa assembler. Bahasa
assembler adalah bahasa pemrograman komputer tingkat rendah..
Bahasa assembler adalah pola bit-bit tertentu yang

27
28

merupakan kode operasi mesin. Bahasa mesin dibuat lebih mudah


dibaca dan ditulis dengan cara mengganti pola bit-bit menjadi
julukan-julukan yang disebut mnemonics. Bahasa mnemonic ditulis
di program dengan bahasa rakitan akan diterjemahkan menjadi
tepat satu kode operasi yang dapat dimengerti langsung oleh
komputer. Untuk menggerakkan robot mobil ini dibutuhkan
program yang di flash dan diproses pada mikrokontroler, untuk
proyek ini kami menggunakan Mikrokontloler Mcs51, Sebuah
mikroprosesor yang digabungkan dengan input-output (I/O) dan
memori (Random Access Memory/Read Only Memory) akan
membentuk sebuah sistem mikrokomputer.

PERINTAH DASAR MCS51


Beberapa perintah dasar pada mikrokontroler MCS51 yang
sering digunakan adalah :

1. clr (clear)
format : clr a
(mereset atau memberi nilai 00h pada
akumulator)
clr rx
(mereset atau memberi nilai 00h pada register x)
Contoh: clr r0
clr py
(mereset atau memberi nilai 00h pada port y)
Contoh: clr p1
clr <alamat 8 bit>
29

(mereset atau memberi nilai 00h pada alamat


tertentu)
Contoh: clr 4ah
2. mov
format : mov a, px
(menyalin isi data pada port x ke dalam
akumulator)
Contoh: mov a, p3
mov px, #<nilai 8 bit>
(menyalin suatu nilai 8-bit ke port x)
Contoh: mov p0, #0feh
mov px, ry
(menyalin isi data yang nilainya terdapat pada
register y ke dalam port x)
Contoh: mov p3, r5
3. setb (set bit)
format : setb px.y
(menset atau memberikan logika 1 pada port x.y)
Contoh: setb p1.0

4. call
Call terbagi menjadi dua format yaitu acall (absolute
call) dan lcall (long call), perbedaannya hanya pada
kemampuan jauh dekatnya pemanggilan subrutin.
Seandainya penggunaan acall hanya mampu memanggil
sampai alamat 100h maka untuk lcall dapat lebih dari itu,
namun juga untuk penggunaan lcall membutuhkan memori
dan siklus mesin yang lebih banyak.
30

Saat perintah call dijalankan, isi register PC (Program


Counter) akan disimpan ke dalam stack dan digantikan
dengan alamat subrutin yang dipanggil. Saat subrutin
berakhir dengan ditandai perintah ret (return) register PC
akan diisi kembali oleh isi dari stack, dan mikrokontroler akan
menjalankan perintah di bawah baris perintah call tadi.

Format : acall <label subrutin>


(perintah untuk memanggil program pada
subrutin)
Contoh: acall cinta
lcall <label subrutin>
(perintah untuk memanggil program pada
subrutin)
Contoh: lcall komputer
Cat.: Penggunaan subrutin sebaiknya menggunakan kata,
untuk kata-katanya sesuka pemrogram boleh
menggunakan nama sendiri, nama kota ataupun nama-
nama lainnya.

5. jmp (jump)
Jmp juga terbagi menjadi dua format yaitu sjmp (short
jump) dan ljmp (long jump), untuk pengunaannya sama
seperti format call pada penjelasan di atas, hanya saja jump
merupakan lompatan sederhana yang tidak dapat
mengembalikan nilai register PC seperti perintah call.
Format : sjmp <label subprogram>
31

(lompat atau jalankan langsung program yang


berada pada label suatu subprogram)
Contoh: sjmp kamu
sjmp <alamat memori>
(lompat atau jalankan langsung program yang
berada pada suatu alamat memori)
Contoh: ljmp 100h

6. djnz (decrement and jump if not zero)


format : djnz rx, <label subprogram>
(kurangi nilai isi data pada register x dan bila
nilainya belum mencapai 0 maka akan dilakukan
lompatan ke label subprogram)

Contoh: djnz r7, gaul


(kurangi nilai isi data pada register R7 dan bila
nilainya belum mencapai 0 maka dilakukan
lompatan ke subprogram dengan label gaul)

7. jnb (jump if not bit set)


format : jnb px.y, <label subprogram>
(lompat ke label subprogram bila nilai port x.y
berlogika LOW atau mempunyai nilai 0)
Contoh: jnb p1.0, go
Cat.: jnb hanya bisa dijalankan dengan operand yang
berkapasitas 1 bit.

8. cjne (compare and jump if not equal)


32

format : cjne a, xyz, <label subprogram>


(bandingkan apakah nilai akumulator sama
dengan nilai xyz, bila nilainya tidak sama maka
lompat ke label subprogram)
Contoh: cjne a, #0fh, keren
cjne rv, xyz, <label subprogram>
(bandingkan apakah nilai register v sama dengan
nilai xyz, bila nilainya tidak sama maka lompat ke
label subprogram)
Contoh: cjne r1, #0ach, ganteng

9. rr (rotate right)
rl (rotate left)
format : rr a
(geser ke kanan 1 bit pada isi akumulator)
rl a
(geser ke kiri 1 bit pada isi akumulator)
rr rx
(geser ke kanan 1 bit pada isi register x)
rl rx
(geser ke kiri 1 bit pada isi register x)

10. inc (increment)


dec (decrement)
format : inc a
(menambahkan nilai 1 bit pada akumulator)
dec a
(mengurangi nilai 1 bit pada akumulator)
33

inc rx
(menambahkan nilai 1 bit pada register x)
dec rx
(mengurangkan nilai 1 bit pada register x)

3.2 Analisa Program


Bagian berikut adalah analisa program bagaimana suatu
mikrokontroler dapat bekerja sesuai dengan output yang telah di
tentukan berupa LED. Adapun algoritma program untuk membuat
suatu program robot mobil ini adalah :
1) Jika LED sensor 1 dan LED sensor 2 tidak dikenai sumber
cahaya maka robot mobil tidak akan jalan
2) Jika LED sensor 1 ditaruh di muka robot mobil lalu, diberi
sumber cahaya maka mobil robot ini akan maju mendekati
sumber cahaya
3) Jika LED sensor 2 ditaruh di belakang robot mobil, lalu diberi
sumber cahaya, maka robot mobil ini akan mundur
mendekati sumber cahaya
4) Jika kedua LED sensor tidak diberi cahaya, maka robot mobil
tidak akan jalan
Sesuai dengan algoritma di atas kita dapat membuat suatu
rancangan flowchart sebagai berikut :
34

Flowchart

START

S1 , S2
AKTIF = 1
DIAM = 0

INPUT S1 , S2 ?

S1 = S2 ? INPUT
LAGI ?
S1 = S2 = END
0

S1 > S2

S2 = 1 KETERANGAN
MOTOR 2 : S2 = 0
AKTIF

S1 = SENSOR

S1 = 1 S2 = SENSOR 2

MOTOR 1
AKTIF

S1 = 0
35

Analisa Program
#include <sfr51.inc>
org 100h
mov p0, #0ffh
mov p1, #0ffh
mov p2, #0ffh
mov p3, #0ffh

mulai : mov a, p2
cjne a, #fah, diam
mov p1, #ffh
sjmp mulai
diam : cjne a, #ffh, maju
mov p1, #ffh
sjmp mulai
maju: cjne a, #feh, mundur
mov p1, #5fh
sjmp mulai
mundur: cjne a, #fbh, mulai
mov p1, #afh
sjmp mulai
end

Logika program:
 #include <sfr51.inc>
Mengambil file sfr51.inc pada library program Reads51 yang
berguna sebagai referensi alamat memory untuk port, register,
akumulator dan lainnya. Dengan ini dalam penulisan program,
36

tidak perlu perintah inisialisasi, perintah yang seharusnya mov


0x80,#ffh dapat ditulis mov p0,#0ffh.

org 100h
Mempunyai fungsi yang sama dengan perintah a100 pada
pemrograman BGC yaitu memulai program dari alamat memori
100h.

 mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
Men-set suatu port atau berguna untuk mengaktifkan port
yang akan digunakan sebagai input maupun sebagai output. Bila
hanya ingin menguji sebuah program pada suatu simulasi,
perintah ini tidak akan banyak berpengaruh pada hasil output
program namun bila ingin diterapkan pada alat nyata, perintah
ini wajib disertakan

 : mov a, p2
cjne a, #fah, diam
mov p1, #ffh
sjmp mulai

Source program di atas terdapat pada label “mulai” dimana


awal mula kondisi dimulai dalai label ini, pertama kita masukkan
p2 yg bernilai ooh ke dalam accumulator, lalu beri kondisi
“compare and jump if not equal” dengan accumulator, jika sama
37

dengan Fah maka akan ke label diam, jika tidak maka p1 akan
mengcopya nilai ffh ke dalamnya, jika sudah terlaksana maka
jump kembali ke label “mulai”

 cjne a, #ffh, maju


mov p1, #ffh
sjmp mulai
Source program di atas terdapat pada label “diam” , label ini
akan dijalankan ketika kondisi pada label “mulai” menuju ke
label ini. Pertama di label ini mengcompare nila accumulator
dengan nilai ffh, jika sama maka lompat ke label “maju”, jika
tidak maka p1 dimasukan nilai ffh untuk di compare selanjutnya,
setelah selesai makan jump ke label “mulai” kembali.

 cjne a, #feh, mundur


mov p1, #5fh
sjmp mulai
Jika pada label sebelumya kondisi tertuju pada label “maju”,
maka pada label ini langsung di compare dengan feh, jika iya
maka ke label mundur, jika tidak makan p1 atau output bernilai
5fh dan akan maju dengan disinari sumber cahaya.

 cjne a, #fbh, mulai


mov p1, #afh
sjmp mulai
jika pada label sebelumnya tertuju pada label mundur, maka
source ini yang akan digunakan. Pada label ini langsung
dicompare dengan nilai fbh, jika iya maka akan ke label “mulai”,
38

jika tidak maka output atau p1 akan mendapat nila “afh” dan
akan mundur mendekati sumber cahaya. Jika sudah selesai
makan lompat kembali ke label “mulai”.

 End
Mengakhiri baris program

Anda mungkin juga menyukai