Penyeleksian
kondisi digunakan untuk memilih dan menjalankan suatu pernyataan berdasarkan
suatu kondisi. Apabila suatu kondisi bernilai True atau benar maka pernyataan
pertama akan dijalankan dan apabila bernilai False atau salah maka pernyataan
kedua yang akan dijalankan.
Sintaknya:
If
<Kondisi> Then
<Pernyataan1>
Else
<Pernyataan2>
End If
Sebagai
bahan latihan untuk program penyeleksian kondisi ini, kita buat rangkaian elektronika dengan mikrocontroller dengan
type mikrocontroller menggunakan Atmega16 lihat gambar.1 dibawah ini. Cara
menggambar rangkaian elektronika lihat diartikel menggambar rangkaian elektronika dengan Proteus.
Gambar.1 |
Setelah
menggambar rangkaian seperti gambar.1 kemudian buka program Bascom AVR
tulis sintak sesuai gambar.2 dibawah ini.
Gambar.2 |
Setelah
membuat program di Bascom AVR, save file tersebut dan lakukan
kompilasi untuk merubah format file menjadi “Hex” dengan menekan tombol Compile Program (F7) kotak warna hijau lihat gambar.3. Apabila ada kesalahan dalam menulis sintaknya maka
akan ada pesan error dibawah lembar kerja dan untuk mengetahui letak kesalahannya
doble klik pesan yang ada dijendela error tersebut, maka letak kesalahan akan diberi garis
warna merah, perbaiki sintaknya dan lakukan
kompilasi lagi. Hasil kompilasi biasanya terdapat di folder tempat file yang
kita buat disimpan.
Gambar.3 |
Untuk
memulai medownload atau memasukan program yang sudah dikompilasi di Bascom AVR
tadi, tinggal klik folder yang diberi
lingkaran merah lihat gambar.4. Dijendela Edit Component kemudian cari file hasil kompilasi yang berformat
“.hex” dijendela Select
File Name dan klik Open. Dibagian Program File akan
terlihat nama file dan lokasi dari program yang sudah dikompilasi atau
berformat “.Hex” kemudian klik OK dan peroses medownload pun selesai.
Gambar.4 |
Lakukan
simulasi dengan menekan tombol Play (kotak merah) lihat gambar.5 dibawah ini
dan amati apa yang terjadi pada Led ketika Tombol dari rangkaian elektronikanya
ditekan.
Gambar.5 |
Keterangan
program:
Penulisan
sintak di atas (Gambar.2) untuk bagian pertama, ini merupakan judul program atau komentar. Komentar tidak akan
dieksekusi sebagai program sifatnya hanya untuk memberi informasi tentang
program yang kita buat, cara penulisannya harus diawali tanda kutip ( ‘ ).
Bagian kedua, ini merupakan deklarasi mikrocontroller meliputi type
mikrocontroller, frekuensi clock dan baud rate atau kecepatan bit per detik . Bagian ketiga, ini merupakan
konfigurasi port yang kita gunakan dimana PORTC.0
digunakan sebagai input dan PORTC.1
digunakan sebagai output. Untuk mengganti nama port, kita dapat merubahnya
dengan perintah Alias
khusus untuk PORTC.0 yang digunakan
sebagai input penulisannya menjadi PINC.0. Bagian keempat, ini merupakan
perintah untuk memberi status logika awal di PORTC.0 berupa logika 1 dengan mengaktifkan Resistor Pull Up internal.
Bagian kelima, ini merupakan program utama yang berisi perintah penyeleksian kondisi ditulis diantara Do dan Loop yang akan menjadi pokok
pembahasan dalam artikel kali ini.
Penyeleksian Kondisi Dengan If-Then-End
If
Sintak
dari contoh program diatas:
If Tombol = 0 Then
Led = 1
End If
Sintak
“Tombol = 0” ini merupakan perintah membandingkan
antara status logika pada Tombol dengan 0. Ketika Tombol tidak ditekan
(Gambar.6A) berarti status logikanya 1 sesuai dengan status logika awal (PORTC.0 = 1), yang menyebabkan kondisi
tersebut False atau salah karena status logika Tombol yaitu 1 tidak sama dengan
0. Karena kondisinya False maka pernyataan Led =
1 (artinya PORTC.1 akan mengeluarkan
logika 1 atau tegangan positif) tidak
akan dijalankan, ini menyebabkan Led
tidak menyala. Jika Tombol ditekan PORTC.0
dihubungkan ke ground (Gambar.6.B) maka status logika Tombol sama dengan 0, kondisi tersebut menjadi True
atau benar maka pernyataan Led = 1 (artinya PORTC.1 akan mengeluarkan logika 1 atau
tegangan positif) akan dijalankan, ini menyebabkan lampu Led menyala. Pada saat
Tombol dilepas (Gambar.6.C), lampu Led tetap menyala ini dikarenakan tidak ada
pernyataan untuk kondisi dimana status logika Tombol tidak sama dengan 0.
Sintak diatas merupakan penyeleksian kondisi tunggal karena hanya terdapat satu
pernyataan saja yaitu “Led = 1” untuk kondisi
Tombol ditekan sedangkan kondisi tombol tidak ditekan tidak ada pernyataan.
Gambar.6 |
Penyeleksian Kondisi Dengan If-Then-Else-End
If
Untuk
penyeleksian kondisi If-Then-Else-End If
masih menggunakan program yang sama, disini kita hanya merubah program utama
dengan menambahkan perintah Else dan pernyataan “Led=0”
kemudian kompilasi kembali programnya. Penulisan sintaknya menjadi :
If Tombol = 0 Then
Led = 1
Else
Led = 0
End If
Dari
sintak diatas terdapat dua pernyataan
yaitu pernyataan pertama “Led = 1” (artinya PORTC.1 akan mengeluarkan logika 1 atau
tegangan positif) dan pernyataan kedua “Led = 0”
(artinya PORTC.1 akan mengeluarkan
logika 0 atau tegangan 0V). Dari kedua pernyataan tersebut akan dijalankan sesuai dengan kondisi Tombol.
Ketika Tombol tidak ditekan (Gambar.7A) kondisinya menjadi False atau salah karena
status logika Tombol yaitu 1 tidak sama
dengan 0 maka pernyataan kedua “Led = 0” yang
akan dijalankan, akibatnya lampu Led tidak menyala. Jika Tombol ditekan (Gambar.7B)
atau PORTC.0 di groundkan kondisinya
menjadi True karena status logika Tombol sama dengan 0 maka pernyataan pertama “Led
= 1” yang akan dijalankan,akibatnya lampu Led
menyala. Ketika Tombol dilepas (Gambar.7C) status logika Tombol kembali 1 ini
tidak sama dengan 0 berarti kondisinya menjadi False lagi dan pernyataan kedua
“Led = 0” yang akan dijalankan lampu Led pun kembali
tidak menyala. Sintak diatas merupakan penyeleksian kondisi ganda karena
terdapat dua pernyataan yaitu “Led = 1” untuk
kondisi Tombol ditekan dan “Led = 0” untuk kondisi Tombol tidak ditekan .
Gambar.7 |
Dari
contoh latihan penyeleksian kondisi diatas hanya
menggunakan satu buah tombol saja dimana
hanya ada dua kondisi dan dua pernyataan. Sekarang kita akan mencoba membuat
program penyeleksian kondisi dengan menggunakan dua buah tombol. Rubah gambar
rangkaian elektronika dibagian Tombol dan Led menjadi seperti gambar.8 dibawah
ini.
Gambar.8 |
Tulis
kembali sintak sesuai dengan gambar.9 dibawah ini, dimana bagian yang dirubah
hanya dari konfigurasi port sampai dengan program utamanya saja, sedangkan deklarasi mikrocontroller tidak usah
dirubah karena masih menggunakan mikrocontroller yang sama. Kemudian jangan
lupa untuk mengkompilasi kembali programnya.
Gambar.9 |
Dari
gambar.9 bagian pertama, ini merupakan
konfigurasi port yang kita gunakan sebagai
input dan output. Port yang
digunakan untuk input yaitu PORTC.0 dan PORTC.1 sedangkan untuk output digunakan PORTC.2 dan PORTC.3.
Ganti nama port dengan perintah Alias, khusus
untuk PORTC.0 dan PORTC.1 yang digunakan sebagai input
penulisannya menjadi PINC.0 dan PINC.1. Bagian kedua, ini merupakan perintah untuk memberi status
logika awal di PORTC.0 dan PORTC.1
berupa logika 1 dengan cara mengaktifkan Resistor Pull Up internal. Bagian
ketiga ini merupakan program utama, dimana terdapat empat kondisi yang
dihasilkan dari dua buah Tombol. Kondisi tersebut diantaranya:
- Kondisi pertama, jika kedua tombol tidak ditekan, kondisi ini merupan kondisi True karena sama dengan kondisi atau sintak “Tombol1=1 And Tombol2=1”, karena kondisinya True maka akan menjalankan pernyataan yang ada dibawahnya yaitu “Led1=0” dan “Led2=0” yang menyebabkan kedua led tidak menyala.
- Kondisi kedua, jika Tombol1 ditekan dan Tombol2 tidak ditekan, kondisi ini merupakan kondisi True karena sama dengan kondisi atau sintak “Tombol1=0 And Tombol2=1”, karena kondisinya True maka akan menjalankan pernyataan yang ada dibawahnya yaitu “Led1=1” dan “Led2=0” yang menyebabkan Led1 menyala dan Led2 tidak menyala.
- Kondisi ketiga, jika Tombol1 tidak ditekan dan Tombol2 ditekan, kondisi ini merupakan kondisi True karena sama dengan kondisi atau sintak “Tombol1=1 And Tombol2=0”, karena kondisinya True maka akan menjalankan pernyataan yang ada dibawahnya yaitu “Led1=0” dan” Led2=1” yang menyebabkan Led1 tidak menyala dan Led2 menyala.
- Kondisi keempat, jika kedua tombol ditekan, kondisi ini merupan kondisi True karena sama dengan kondisi atau sintak “Tombol1=0 And Tombol2=0”, karena kondisinya True maka akan menjalankan pernyataan yang ada dibawahnya yaitu “Led1=1” dan “Led2=1” yang menyebabkan kedua led menyala.
Penyeleksian Kondisi Dengan Select-Case-End Select
Penyeleksian
kondisi dengan perintah If - Then - End If atau If
- Then -Else - End If ini digunakan untuk kondisi yang tidak banyak atau terbatas
tetapi apabila kondisinya jauh
lebih banyak maka perintah yang digunakan yaitu Select – Case – End Select.
Sintaknya:
Select Case
Variabel
Case
<Kondisi1> : <Pernyataan1>
Case
<Kondisi2> : <Pernyataan2>
.
.
.
Case Else :
<Pernyataan lain>
End Select
Perintah
penyeleksian kondisi dengan menggunakan Select
– Case – End Select dibutuhkan sebuah variabel untuk menyimpan data yang
nantinya akan dibandingkan dengan setiap kondisi yang sudah kita tentukan,
apabila data dari variabel sama dengan salah satu kondisi maka pernyataan yang
ada disamping kondisi tersebut akan dijalankan. Sebagai contoh apabila isi atau
data variabel sama dengan “kondisi1” maka “pernyataan1” akan dijalankan dan
seterusnya, tapi apabila isi atau data dari variabel tersebut tidak ada yang sama dengan semua kondisi maka “pernyataan
lain” akan dijalankan. Untuk latihan menggunakan perintah Select – Case – End Select buat gambar elektronika seperti gambar.10
dibawah ini.
Gambar.10 |
Tulis
kembali sintak sesuai dengan gambar.11 dibawah ini, dimana bagian yang dirubah
hanya dari konfigurasi port sampai program utamanya saja sedangkan deklarasi
mikrocontroller tidak usah dirubah karena masih menggunakan mikrocontroler yang
sama. Kemudian jangan lupa untuk mengkompilasi kembali programnya.
Gambar.11 |
Dari
gambar.11 bagian pertama, ini merupakan
konfigurasi port yang kita gunakan sebagai
input dan output. Disini semua PORTB digunakan sebagai input dan
semua PORTC digunakan sebagai output.
Ganti nama port dengan perintah Alias dimana PORTB
diganti menjadi “Tombol” sedangkan PORTC
diganti menjadi “Led”. Khusus untuk PORTB
yang digunakan sebagai input
penulisannya menjadi PINB. Bagian
kedua, ini merupakan perintah untuk memberi status logika awal di semua PORTB dengan logika 1, cara memberi status logika awal yaitu “PORTB = &B11111111”. Susunanya
bisa dilihat dari tabel berikut.
Tabel.1 |
Bagian
ketiga, ini merupakan pendeklarasian variabel, cara penulisannya Dim
<nama variabel> As <type data>. Disini kita buat nama
variabel, misalkan “Data_tombol”. Kemudian tentukan type datanya, karena
variabel ini berfungsi untuk menyimpan data dari PORTB yang jumlahnya delapan
(PORTB.0 - PORTB.7) maka type data
yang digunakan yaitu Byte (1 Byte = 8 Bit). Bagian keempat, ini merupakan
program utama yang berisi perintah penyeleksian kondisi yang di tulis diantara Do dan Loop.
Sintak “Data_tombol = Tombol” ini artinya
variabel “Data_tombol” akan diisi dengan
data dari kondisi input PORTB.
Sebagai contoh, untuk kondisi awal dimana tidak ada satupun tombol yang ditekan
ini berarti isi dari variabel Data_tombol = &B11111111,
kondisi tersebut tidak ada yang sama dengan kondisi yang sudah kita tulis
sebelumnya (lihat gambar.11 didalam kotak hijau) jadi pernyataan yang ada di
samping Case
Else yaitu “Led = &B00000000” akan dijalankan ini berarti tidak ada satupun Led yang
menyala. Apabila salah satu tombol misalkan tombol.3 (T3) ditekan, maka data
dari variabel Data_tombol = &B11111011 lihat tabel.2.
Tabel.2 |
Kondisi tersebut sama dengan kondisi yang sudah kita tulis sebelumnya (lihat
gambar.11 didalam kotak merah) jadi pernyataan yang ada disamping kondisi tersebut
akan dijalankan yaitu “Led = &B00000100”, pernyataan
tersebut menyebabkan lampu Led3 (D3) menyala. Kemudian apabila tombol yang
ditekan lebih dari satu misalkan tombol.1(T1) dan tombol.6(T6) yang ditekan
maka isi variabel Data_tombol = &B11011110 lihat tabel.3.
Tabel.3 |
kondisi
tersebut juga sama, tidak ada yang cocok dengan kondisi yang sudah kita tulis
sebelumnya (lihat gambar.11 didalam kotak hijau) jadi pernyataan yang ada di Case Else yaitu “Led =
&B00000000” akan dijalankan ini
berarti tidak ada satupun Led yang menyala. Demikian pembahasan singkat mengenai program penyeleksian kondisi untuk mikrocontroller. SEMOGA BERMANFAAT!