Untuk menghidupkan sebuah LED, maka pin yang terhubung ke LED tersebut harus diberi nilai high 1. Sebaliknya, pin yang mendapat nilai low 0, maka LED-
nya akan mati. Pengujian dilakukan dengan memberikan program sederhana pada mikrokontroller AT89S51. Berikut adalah program untuk pengujian rangkaian
mikrokontroler AT89S51:
Loop:
mov p0,55h P0 0 1 0 1 0 1 0 1
acall tunda mov P0,0AAH
P0 1 0 1 0 1 0 1 0 acall tunda
sjmp Loop Short jump to loop
tunda: mov r7,255 tnd: mov r6,255
Djnz r6, Djnz r7,tnd
ret
Program di atas akan menghidupkan LED yang terhubung ke pin P0.0, P0.2, P0.4 dan P0.6, berhenti sesaat lalu menghidupkan LED yang terhubung ke pin P0.1,
P0.3, P0.5 dan P0.7, berhenti sesaat kemudian kembali lagi menghidupkan LED yang terhubung ke pin P0.0, P0.2, P0.4 dan P0.6. Demikian seterusnya. Rutin tunda
berfungsi sebagai waktu berhenti sesaat sebelum LED lainnya dihidupkan. Dengan mengisikan nilai yang berbeda pada port 0, maka tampilannya juga berbeda.
Pengujian yang sama juga dilakukan pada port 1, port 2 dan port 3.
4.2 Pengujian Sensor Warna TCS230
Output yang dihasilkan oleh sensor warna adalah frekuensi atau sinyal kotak. Output frekuensi tidak dapat langsung digunakan sebagai pembanding data dalam
mikrokontroler, sehingga tidak dapat digunakan sebagai acuan dalam alat. Oleh karena itu, output frekuensi sensor warna TCS230 harus diubah dalam bentuk data-
Universitas Sumatera Utara
data digital. Untuk mengubah frekuensi menjadi data digital, program yang diisikan ke mikrokontroler adalah sebagai berikut:
; ========================================== ; ; program pembacaan data frekuensi ;
; ========================================== ; S2
bit p3.4
;skala filter S3
bit p3.5
;skala filter out
bit p3.7
;sinyal output
start: mov r0,0
call RED call GREEN
call BLUE call CLEAR
mov p0,r0 jmp start
RED: clr S2
clr S3 call scan
ret GREEN:
setb S2 setb S3
call scan ret
BLUE: clr S2
setb S3 call scan
ret
Universitas Sumatera Utara
CLEAR: setb S2
clr S3 call scan
ret Scan:
jnb out, jb out,
inc r0 call interupt
jnb out,Scan ret
interupt: Mov r7,125
int: Mov r6,5
Djnz r6, Djnz r7,int
Ret end.
Program dimulai dengan mengosongkan isi register 0
r0
. Selanjutnya pada pemfilter merah RED S2 diset low0 dan S3 juga diset low0 dengan memberikan
perintah
clr
. Lalu selama selang waktu pada rutin
interupt
, program
scan
dibaca dan sinyal ditambahkan pada
r0
. Program dilanjutkan pada pemfilter hijau GREEN dengan menset S2 pada logika high1 dan S3 pada logika high1 yaitu dengan
perintah
setb
. Lalu selama selang waktu pada rutin
interupt
, program
scan
dibaca dan sinyal ditambahkan kembali pada
r0
. Lalu program dilanjutkan pada pemfilter biru BLUE dengan menset S2 low0 dan S3 high1. Lalu selama selang waktu pada
rutin
interupt
, program
scan
dibaca dan sinyal ditambahkan lagi pada
r0
. Kemudian diteruskan pada pemfilter tanpa warna CLEAR dengan menset S2 high1
dan S3 low0. Lalu selama selang waktu pada rutin
interupt
, program
scan
dibaca dan sinyal ditambahkan juga pada
r0
. Selanjutnya sinyal atau data digital
r0
dicopykan pada
p0
untuk menampilkan data 8 bit pada led yang terhubung pada kedelapan pin.
Universitas Sumatera Utara
Program
scan
digunakan untuk membaca nilai frekuensi atau sinyal kotak. Pembacaan sinyal dimulai dengan
jnb out,
yang artinya jika sinyal
out
tidak bit maka baca sinyal sampai habis atau sinyal dengan pulsa low dibaca sampai habis.
Kemudian
jb out,
yang artinya jika sinyal
out
bit maka baca sinyal sampai habis atau sinyal dengan pulsa high dibaca sampai habis. Atau dapat juga diartikan perintah
jnb out,
dan
jb out,
adalah baca frekuensi atau sinyal
out
sampai habis. Sinyal
out
tersebut kemudian ditambahkan pada
r0
dan dilakukan selama selang waktu
interupt
. Jika setelah selang waktu
interupt
sinyal
out
kembali bit maka dilanjutkan pada program berikutnya.
Rutin
interupt
adalah selang waktu pengambilan data. Atau dengan kata lain nilai frekuensi akan dibaca oleh mikrokontroler selama waktu tunda yang diberikan
oleh
interupt
. Pembacaan dapat dihitung dengan perhitungan sebagai berikut : Mikrokontroller AT89S51 memerlukan 12 clock untuk mengeksekusi 1 siklus
perintah dan pada rangkaian. Kristal yang digunakan adalah kristal 12 MHz, sehingga 1 siklus mesin membutuhkan waktu =
Mhz clock
12 12
= 1 mikrodetik. Dari keterangan di atas diperoleh:
Mnemonic Siklus Waktu Eksekusi
MOV Rn,data 2
2 x 1 μd = 2 μd DJNZ
2 2 x 1 μd = 2 μd
RET 1
1 x 1 μd = 1 μd
interupt: Mov r7,125
int: Mov r6,5
Djnz r6, Djnz r7,int
Ret
Universitas Sumatera Utara
Perintah
Mov r6,5 dan
Mov r7,125 masing masing
terdiri dari 2 siklus mesin. Perintah
djnz
juga terdiri dari 2 siklus mesin. Sedangkan perintah
ret
terdiri dari 1 siklus mesin.
Perintah
Djnz r6,
maksudnya adalah mengurangi nilai pada r6 sampai bernilai 0, berarti perintah
djnz r6,
pada program di atas dilakukan sebanyak 5 kali atau 5 x 2 = 10
μ d
. Setelah nilai r6 bernilai 0 maka nilai pada r7 berkurang 1 nilai karena adanya perintah
djnz r7,
kemudian program akan kembali mengurangi nilai pada r6 sampai bernilai 0 kembali ke
interupt
sehingga perintah ini dilakukan
sebanyak 125 kali. Dengan demikian dapat diketahui hasilnya adalah 10 x 125 = 1250
μ d
. Hasil dari perkalian ini kemudian ditambahkan dengan 5 siklus berikutnya
mov r6
= 2 siklus,
mov r7
= 2 siklus, dan
ret
= 1 siklus sehingga hasil akhir didapatkan 1250 + 5 = 1255
μd
. Jadi waktu yang diberikan untuk membaca data
yang frekuensi input oleh mikrokontroler adalah selama 1255 μd.
4.3 Hasil Pengujian Sensor