Kali ini, saya akan bahas dasar bahasa pemrograman C dengan topik operasi bitwise. Dimana operasi bitwise adalah operasi yang berfungsi untuk memanipulasi bit yang ada. Didalam bahasa C, terdapat 6 jenis operasi bitwise, yaitu :
  1.  >> (Geser ke kanan)
  2. << (Geser ke kiri)
  3. ~ (NOT)
  4. & (Logika AND)
  5. | (Logika OR)
  6. ^ (Logika XOR) 
Sebagai refrensi saya sertakan gambar tabel kebenaran dari keenam operasi diatas


Pada part pertama mengenai operasi bitwise, akan saya bahas untuk operasi bitwise geser kekanan dan kekiri, langsung saja kita lihat script berikut

/*
 * Bitwise_Kiri_dan_kanan.cpp
 *
 * Created: 04/01/2016 10:26:17
 *  Author: Diaz
 */


#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
        DDRA=0xff;            // Menjadikan PORTA sebagai output
        DDRB=0xff;            // Menjadikan PORTB sebagai output
        DDRC=0xff;            // Menjadikan PORTC sebagai output
        DDRD=0x00;            // Menjadikan PORTD sebagai input
        PORTD=0xff;            // Menjadikan PORTD sebagai input dan Pull up Aktif

        unsigned int a;        // Variabel global dengan nama a
        a;       
       
        PORTA=0b11110110;    // PORTA bernilai 0b11110110
        PORTB=0b11110110;    // PORTB bernilai 0b11110110
        PORTC=0b11110110;    // PORTC bernilai 0b11110110
   
       
        while(1)
        {
            if (!(PIND & (1<<PIND1)))    // Jika PIND1=0
            {
                for(a=0; a<8; a++)        // Lakukan pengulangan 8 kali
                {
                    PORTA=PORTA<<1;        // PORTA geser 1 bit kekiri
                    _delay_ms(500);        // Jeda 500ms
                }
               
            }
           
            if (!(PIND & (1<<PIND2)))    // Jika PIND2=0
            {
                for(a=0; a<8; a++)        // Lakukan pengulangan 8 kali
                {
                    PORTB=PORTB>>1;        // PORTA geser 1 bit kekanan
                    _delay_ms(500);        // Jeda 500ms
                }
               
            }
           
            if (!(PIND & (1<<PIND3)))    // Jika PIND3=0
            {
                for(a=0; a<8; a++)        // Lakukan pengulangan 8 kali
                {
                    PORTC=PORTC<<2;        // PORTA geser 2 bit kekiri
                    _delay_ms(500);        // Jeda 500ms
                }
            }
           
        }
}

Pada artikel kali ini, tidak saya sertakan gambar. Jadi silahkan langsung uji coba di proteus. Tapi saya buatkan tabel tiap step yang terjadi
Contoh Operasi Bitwise Kiri dan Kanan Bahasa C
Contoh Operasi Bitwise Kiri dan Kanan Bahasa C


Kita perhatikan baik - baik, untuk inisialisasi awal PORTA, B, dan C adalah bernilai 0b11111110 sehingga semua PORT saat awal program di running hanya LED paling kanan yang menyala. Lalu Jika switch PIND1 ditekan, maka Bit yang ada akan bergeser ke kiri 1 kali untuk tiap stepnya. Untuk jelasnya bisa melihat tabel yang saya buat diatas. Perlu diperhatikan tiap bit baru yang masuk akan bernilai 0.

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 :