Operasi Bit Pada Microcontroller (dalam bahasa C)

Seringkali kita dihadapkan pada permasalahan pada operasi bit pada mikrokontroller, semisal pada operasi dimana kita ingin mengakses bit port A yang terhubung dengan beberapa buah led. Apabila dianggap port A terdiri atas 8 bit dimana masing masing bit terhubung dengan led, tombol dan motor seperti dibawah ini

#define LED_GREEN     0      //led hijau menempati posisi bit pertama
#define LED_BLUE        1      //led biru menempati posisi bit kedua
#define LED_RED          2      //led merah menempati posisi bit ketiga
#define BUTTON1        3      //tombol  menempati posisi bit keempat

 

uint8_t portA;

 

untuk menset ketiga LED diatas menjadi ON dapat digunakan operasi bit seperti di bawah ini

portA |= 1 << LED_GREEN;       //portA akan bernilai 0x1

portA |= 1 << LED_BLUE;          //portA akan bernilai 0x3

portA |= 1 << LED_RED;            //portA akan bernilai 0x7

 

untuk menclear bit led biru maka dapat digunakan perintah

portA   &= ~(1 << LED_BLUE);     //portA akan bernilai 0x5

 

untuk mencek apakah LED merah bernilai 1 atau 0 dapat menggunakan perintah

hasil = (portA >> LED_RED) & 1;   //hasil akan bernilai 1 karena LED_RED telah kita set sebelumnya
/* atau bisa juga */
hasil = portA & (1 << LED_RED))


untuk mentogle bit LED biru untuk kembali bernilai 1 maka
portA ^= 1 << LED_BLUE;          //portA akan bernilai 0x7


untuk menclear bit led merah dapat juga dilakukan dengan perintah sebagai berikut
portA ^= (-0 ^ portA) & (1 << LED_RED);     //portA akan bernilai 0x3


untuk menset kembali led merah dapat pula digunakan perintah di bawah ini
portA ^= (-1 ^ portA) & (1 << LED_RED);     //portA akan bernilai 0x7



Leave a Reply

Your email address will not be published. Required fields are marked *