Kali ini, saya akan bahas dasar bahasa pemrograman C dengan topik seleksi kondisi switch. Jika kita ingin membuat beberapa kondisi  yang lebih mudah, kita dapat menggunakan pengkondisian switch dibanding membuat dengan menggunakan if else if.

Langsung saja kita lihat contoh dari scriptnya

/*
 * Switch_Case.cpp
 *
 * Created: 02/01/2016 12:06:40
 *  Author: Diaz
 */


#include <avr/io.h>

int main(void)
{
    DDRA=0xff;            // Menjadikan PORTA sebagai output
    PORTA=0xff;            // Menjadikan PORTA sebagai output dengan default berlogika 1
   
    DDRB=0xff;            // Menjadikan PORTB sebagai output
    PORTB=0xff;            // Menjadikan PORTB sebagai output dengan default berlogika 1
   
    DDRC=0xff;            // Menjadikan PORTC sebagai output
    PORTC=0xff;            // Menjadikan PORTC sebagai output dengan default berlogika 1

    DDRD=0xff;            // Menjadikan PORTD sebagai input
    PORTD=0xff;            // Menjadikan PORTD sebagai output dengan default berlogika 1

    unsigned char a, b;    // Variabel global dengan nama a, b, c, d (4 variabel)
    a=5;                // Variabel a bernilai 5
    b=10;                // Variabel b bernilai 3
   
    while(1)
    {
        switch (a)                    // switch untuk variabel a
        {
        case 1: PORTA=0xff; break;    // jika a bernilai 1 maka PORTA=0xff
        case 2: PORTA=0xc0; break;    // jika a bernilai 2 maka PORTA=0xc0
        case 3: PORTA=0xf0; break;    // jika a bernilai 3 maka PORTA=0xf0
        case 4: PORTA=0xa0; break;    // jika a bernilai 4 maka PORTA=0xa0
        case 5: PORTA=0x00; break;    // jika a bernilai 5 maka PORTA=0x00
        }
       
        switch (b)                    // switch untuk variabel b
        {
        case 1: PORTB=0xff; break;    // jika b bernilai 1 maka PORTB=0xff
        case 2: PORTB=0xa0; break;    // jika b bernilai 2 maka PORTB=0xa0
        case 3: PORTB=0xb0; break;    // jika b bernilai 3 maka PORTB=0xb0
        case 4: PORTB=0xc0; break;    // jika b bernilai 4 maka PORTB=0xc0
        case 5: PORTB=0xd0; break;    // jika b bernilai 5 maka PORTB=0xd0
        default: PORTB=0xf0; break; // jika tidak ada kondisi yang sesuai maka PORTB=0xf0
        }
    };
}

Dan dari script diatas akan menghasilkan gambar sebagai berikut
Seleksi Kondisi Switch Case
Seleksi Kondisi Switch Case

Cara penulisan Seleksi Kondisi Switch Case adalah :
switch(variabel)
{
case konstanta1:isi perintah ; break;
case konstanta2:isi perintah ; break;
}

Dimana :
  1. Variabel adalah variabel yang akan dibuat seleksi kondisinya, variabel disini bukan hanya variabel saja yang bisa dibuat switch casenya, bisa juga seperti PORTx dan lain sebagainya.
  2. Konstanta1 atau 2 adalah besarnya nilai dari variabel yang dibutuhkan sebagai syarat


Dari contoh pertama kita lihat ada 5 kondisi dimana angka 1-5 adalah nilai konstanta dari kondisi yang kita inginkan, karna nilai a sudah kita atur sebelumnya sebesar 5. maka sesuai dengan case yang konstantanya bernilai 5 (case 5) PORTA akan bernilai 0x00 sehingga led akan menyala semua.

Dan contoh kedua, kita dapat menambahkan statement default, dimana jika tidak ada konstanta (case) yang nilainya sesuai dari variabel maka akan menghasilkan nilai yang dapat kita atur. pada contoh kedua, karna b sebenarnya bernilai 10, sedangkan pada script tersebut saya buat 5 contoh dengan nilai konstanta 1 sampai 5. Maka tidak ada case yang sesuai, sehingga akan diatur defaulnya PORTB bernilai 0xf0 dan menyalakan 4 buah led.

Sama seperti contoh sebelumnya, setiap pembuktian perintah menggunakan 1 PORT (8bit) sebagai pembuktiannya, dan script tersebut saya buat menggunakan Atmel Studio 6 + AVRGCC dan Proteus

Saya sarankan untuk menulis ulang semua script tersebut secara manual, agar kalian lebih cepat menghafal dan memahami script tersebut. Namun jika mendapat kesulitan, saya sediakan file script beserta file proteusnya yang dapat didownload di sini

Sayapun disini masih belajar sehingga belum tentu benar mengenai semua yang  saya jabarkan diatas, jika ada yang merasa janggal atau merasa ada kesalahan dalam penjabaran saya, bisa kita diskusikan dikomentar.

Good Luck!

Related Post :