Analisa Software Light Detector Robot
Analisa Software Light Detector Robot
ANALISA SOFTWARE
27
28
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
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
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
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)
inc rx
(menambahkan nilai 1 bit pada register x)
dec rx
(mengurangkan nilai 1 bit pada register x)
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
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
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”
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