Kamis, 10 Mei 2012

Belajar Mikrocontroler - Penyeleksian Kondisi

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!