BAB II LANDASAN TEORI

dokumen-dokumen yang mirip
MICROCONTROLER AVR AT MEGA 8535

Sistem Minimum Mikrokontroler. TTH2D3 Mikroprosesor

MICROCONTROLER AVR AT MEGA 8535

BAB II TINJAUAN PUSTAKA. Atmel AVR adalah jenis mikrokontroler yang paling sering dipakai dalam

BAB II LANDASAN TEORI. Remote TV adalah suatu pengontrol, yang fungsinya untuk merubah dan

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

Mikrokontroler AVR. Hendawan Soebhakti 2009

Sistem Mikrokontroler FE UDINUS

BAB II TINJAUAN PUSTAKA. Gambar 2.1. Simbol LED [8]

BAB II LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

BAB 2 TINJAUAN TEORITIS. terdiri dari mikrokontroller ATmega8535, Isd2560, LM 35, Regulator 7805, LCD

BAB II TINJAUAN PUSTAKA

Dasar Pemrograman Mikrokontroler dengan Bahasa C

MENGENAL MIKROKONTROLER ATMEGA-16

II. TINJAUAN PUSTAKA. Mikrokontroler ATmega8535 merupakan salah satu jenis mikrokontroler keluarga AVR

BAB III TEORI PENUNJANG. dihapus berulang kali dengan menggunakan software tertentu. IC ini biasanya

BAB II METODE PERANCANGAN APLIKASI

BAB II LANDASAN TEORI. pada itu dapat juga dijadikan sebagai bahan acuan didalam merencanakan suatu system.

BAB 2 LANDASAN TEORI

INSTRUKSI. TTH2D3 Mikroprosesor

BAB II DASAR TEORI 2.1. Mikrokontroler AVR ATmega32

Gambar 2.7. Susunan pin mikrokontroler ATMega8535 Berikut ini adalah tabel penjelasan mengenai pin yang terdapat pada mikrokontroler ATMega8535:

BAB II TINJAUAN PUSTAKA

BAB II LANDASAN TEORI. Selain dari pada itu dapat juga dijadikan sebagai bahan acuan didalam

BAB II DASAR TEORI Bentuk Fisik Sensor Gas LPG TGS 2610 Bentuk fisik sensor TGS 2610 terlihat pada gambar berikut :

MIKROKONTROLER Yoyo Somantri dan Egi Jul Kurnia

II. TINJAUAN PUSTAKA. menjadi sumber tegangan arus searah yang bersifat variable. Pengubah daya DC-

BAB 2 LANDASAN TEORI. Mikrokontroler AVR (Alf and Vegard s RISC Processor) dari Atmel ini

BAB III PERANCANGAN SISTEM

DAFTAR ISI. Daftar Pustaka P a g e

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI

BAB 2 DASAR TEORI. Gambar 2.1 Sensor SHT-11

BAB II TINJAUAN PUSTAKA

DASAR PEMROGRAMAN C UNTUK MIKROKONTROLER

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI. sensor hall effect. Saat air mengalir melewati rotor, rotor akan berputar.

III. METODE PENELITIAN. Penelitian dan perancangan tugas akhir dilakukan di Laboratorium Terpadu

MIKROKONTROLER Arsitektur Mikrokontroler AT89S51

BAB II TEORI. Gambar 2.1. GP2Y1010AU0F Optical Dust Sensor

BAB II LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

PENGATURAN LAMPU LALU LINTAS BERBASIS MIKROKONTROLER ATMEGA8535

RANCANGAN SISTEM PARKIR TERPADU BERBASIS SENSOR INFRA MERAH DAN MIKROKONTROLER ATMega8535

BAB III TEORI PENUNJANG. Microcontroller adalah sebuah sistem fungsional dalam sebuah chip. Di

III. METODOLOGI PENELITIAN. Penelitian dan perancangan tugas akhir ini telah dimulai sejak bulan Juli 2009

BAB II LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

BAB II DASAR TEORI. mikrokontroler yang berbasis chip ATmega328P. Arduino Uno. memiliki 14 digital pin input / output (atau biasa ditulis I/O, dimana

BAB II LANDASAN TEORI. ATMega 8535 adalah mikrokontroller kelas AVR (Alf and Vegard s Risc

BAB II KONSEP DASAR PERANCANGAN

II. TINJAUAN PUSTAKA. kondisi cuaca pada suatu daerah. Banyak hal yang sangat bergantung pada kondisi

BAB II WATERPAS DIGITAL

BAB II DASAR TEORI. 2.1 Ethanol

BAB 2 LANDASAN TEORI. Temperatur merupakan salah satu informasi yang sangat penting dalam menentukan

BAB II LANDASAN TEORI. dikembangkan pada tahun 1996 oleh dua orang mahasiswa Norwegian Institute of

Blok sistem mikrokontroler MCS-51 adalah sebagai berikut.

BAB II DASAR TEORI. Current Transformer atau yang biasa disebut Trafo arus adalah tipe instrument

BAB II LANDASAN TEORI

Pencipta bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada. sekitar tahun C adalah bahasa pemrograman terstruktur, yang membagi

BAB II Dasar Teori 2.1 RFID

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI. terdiri dari modul SHT-11, power supply, sistem minimum ATmega8535, LCD

LANDASAN TEORI BAB II

Gambar 2.1 Tanaman Bunga Krisan

BAB II DASAR TEORI. Gambar 2.1 Sensor MLX 90614[5]

Oleh Ilmin Syarif Hidayatullah ( ) Pembimbing : Andi Rahmadiansah, ST, MT

BAB II LANDASAN TEORI. 2.1 Pengaruh Tekanan Udara (Atmosfer) Terhadap Cuaca dan Penerbangan

BAB II LANDASAN TEORI

BAB III PERANCANGAN SISTEM

APLIKASI CHATTING DENGAN JARINGAN MIKROKONTROLER Eka Purwa Laksana, Sujono

BAB 11 TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA

bagian penting yaitu sensor navigasi CMPS03, sensor tekanan, IC suara 25120,

BAB II TINJAUAN PUSTAKA

BAB II LANDASAN TEORI

BAB IV HASIL DAN PEMBAHASAN. Setelah pembuatan modul maka perlu dilakukan pendataan melalui proses

BAB II LANDASAN TEORI

BAB III PERANCANGAN SISTEM. sebuah alat pemroses data yang sama, ruang kerja yang sama sehingga

BAB II LANDASAN TEORI

BAB II TINJAUAN PUSTAKA. yang telah membuat Data Logger Autoclave, prinsip kerja alat ini adalah pada

Sistem Tertanam. Pengantar Atmega328 dan Arduino Uno. Dennis Christie - Universitas Gunadarma

BAB II LANDASAN TEORI

BAB II KONSEP DASAR SISTEM PENGONTROL PARTITUR OTOMATIS

BAB II TINJAUAN PUSTAKA

Membuat Robot Line Follower Hendawan Soebhakti Dosen Teknik Elektronika Politeknik Negeri Batam

MIKROKONTROLER AT89S52

BAB III LANDASAN TEORI. digunakan seperti MCS51 adalah pada AVR tidak perlu menggunakan oscillator

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI

BAB III PERANCANGAN DAN PEMBUATAN PERANGKAT KERAS

Pengenalan Bahasa C. 1. Struktur penulisan program. #include < [library2.h] > #define [nama2] [nilai] ;

BAB II TINJAUAN PUSTAKA

BAB II LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA

PEMROGRAMAN ROBOT PENJEJAK GARIS BERBASIS MIKROKONTROLER

BAB III PERANCANGAN SISTEM

Transkripsi:

BAB II LANDASAN TEORI 2.1 Teori Dasar Mikrokontroller ATMega8535 Perkembangan teknologi telah maju dengan pesat dalam perkembangan dunia elektronika, khususnya dunia mikroelektronika. Penemuan silicon menyebabkan bidang ini mampu memberikan sumbangan yang amat berharga bagi perkembangan teknologi modern. Mikrokontroler adalah suatu keeping IC dimana terdapat mikroprosesor dan memori program ROM (Read Only Memory) serta memori serbaguna RAM (Random Acces Memory), bahkan ada beberapa jenis mikrokontroler yang memiliki fasilitas ADC, PLL, EEPROM dalam suatu kemasan. Penggunaaan Mikrokontroler dalam bidang control sangat luas dan popular. Ada beberapa vendor yang membuat mikrokontroler diantaranya Intel, Microchip, Winbond, Atmel, Philips, Xemisc dan lain- lain. Dari beberapa vendor tersebut, yang paling popular digunakan adalah mikrokontroler buatan Atmel. Atmel sebagai salah satu vendor yang mengembangkan dan memasarkan produk mikroelektronika telah menjadi suatu teknologi standar bagi para desainer system elektronika masa kini. Dengan perkembangan terakhir, yaitu generasi AVR(Alf and Vegard s Risc processor), para desainer system elektronika telah diberi suatu teknologi yang memiliki kapabilitas yang amat maju, tetapi dengan biaya ekonomis yang cukup minimal. Mikrokontroler AVR memiliki arsitektur RISC 8bit, dimana semua instruksi dikemas dalam kode 16 bit(16- bits word) dan sebagian besar instruksi dieksekusi dalam 1(satu) siklus clock, berbeda dengan instruksi MCS51 yang membutuhkan 12 clock. Tentu saja itu terjadi karena kedua jenis mikrokontroler tersebut memiliki

arsitektur yang berbeda. Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga ATMega, dan AT86RFxx. Pada dasarnya yang menbedakan masing- masing kelas adalah memory, peripheral, dan fungsinya. Dari segi arsitektur dan instruksi yang digunakan, mereka bisa dikatakan hampir sama. Oleh karena itu dipergunakan salah satu AVR produk Atmel, yaitu ATMega8535. Dalam hal ini ATMEGA8535 dapat beroperasi pada kecepatan maksimal 16MHz serta memiliki 6 pilihan mode sleep untuk menghemat penggunaan daya listrik. Selain mudah didapat juga dan lebih murah, ATMega8535 juga memiliki fasilitas yang lengkap.

Gambar 2.1 Blok Diagram Fungsional ATMega8535 Dari gambar tersebut dapat dilihat bahwa ATMega8535 memiliki bagian sebagai berikut: 1. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, Port D. 2. ADC 10 bit sebanyak 8 saluran. 3. Tiga buah Timer/Counter dengan kemampuan pembandingan. 4. CPU yang terdiri atas 32 buah register. 5. Watchdog Timer dengan osilator internal. 6. SRAM sebesar 512 byte.

7. Memory Flash sebesar 8 kb dengan kemampuan Read While Write. 8. Unit interupsi internal dan eksternal. 9. Port antarmuka SPI. 10. EEPROM sebesar 512 byte yang dapat deprogram saat operasi. 11. Antarmuka komparator analog. 12. Port USART untuk komunikasi serial. Kapabilitas detail dari ATMega8535 adalah sebagai berikut: 1. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal 16MHz. 2. Kapasitas memory flash 8 Kb, SRAM sebesar 512 byte, dan EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar 512 byte. 3. ADC internal dengan fidelitas 10 bit sebanyak 8 channel. 4. Portal komunikasi serial(usart) dengan kecepatan maksimal 2,5 Mbps. 5. Enam pilihan mode sleep menghemat penggunaan daya listrik. 2.1.1 Konfigurasi Pin ATMega8535 Konfigurasi pin ATMega8535 bisa dilihat pada gambar 2.2 di bawah ini. Dari gambar tersebut dapat dijelaskan secara fungsional konfigurasi pin ATMega8535 sebagai berikut: 1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya. 2. GND merupakan Pin Ground.

3. Port A (PA0...PA7) merupakan pin I/O dan pin masukan ADC. 4. Port B (PB0...PB7) merupakan pin I/O dan pin yang mempunyai fungsi khusus yaitu Timer/Counter, komparator Analog dan SPI. 5. Port C (PC0...PC7) merupakan port I/O dan pin yang mempunyai fungsi khusus, yaitu komparator analog dan Timer Oscillator. 6. Port D (PD0...PD1) merupakan port I/O dan pin fungsi khusus yaitu komparator analog dan interrupt eksternal serta komunikasi serial. 7. RESET merupakan pin yang digunakan untuk mereset mikrokontroler. 8. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal. 9. AVCC merupakan pin masukan untuk tegangan ADC. 10. AREF merupakan pin masukan tegangan referensi untuk ADC. Gambar 2.2 Pin ATMega8535

Berikut adalah penjelasan fungsi tiap kaki. 1. PORT A Merupakan 8- bit directional port I/O. Setiap pinnya dapat menyediakan internal pull- up resistor (dapat diatur per bit). Output buffer Port A dapat memberi arus 20mA dan dapat mengendalikan display LED secara langsung. Data direction Register Port A (DDRA) harus disetting terlebih dahulu sebelum Port A dugunakan. Bit- bit DDRA diisi 0 jika ingin memfungsikan pin- pin Port A yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, kedelapan pin Port A juga digunakan untuk masukan sinyal analog bagi A/D converter. 2. PORT B Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port B dapat memberi arus 20 ma dan dapat mengendalikan display LED secara langsung. Data Direction Register port B (DDRB) harus disetting terlebih dahulu sebelum Port B digunakan. Bit-bit DDRB diisi 0 jika ingin memfungsikan pin-pin port B yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Pin-pin port B juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.

Tabel 2.1 Konfigurasi Pin Port B ATMega8535 PORT PIN PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 FUNGSI KHUSUS T0= timer/ counter 0 external counter input T1= timer/ counter 0 external counter input AINO= analog comparator positive input AINI= analog comparator negative input SS= SPI slave select input MOSI= SPI bus master output/ slave input MISO= SPI bus master input/ slave output SCK= SPI bus serial clock 3. PORT C Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port C dapat memberi arus 20 ma dan dapat mengendalikan display LED secara langsung. Data Direction Register port C (DDRC) harus disetting terlebih dahulu sebelum Port C digunakan. Bit-bit DDRC diisi 0 jika ingin memfungsikan pin-pin port C yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, dua pin port C (PC6 dan PC7) juga memiliki fungsi alternatif sebagai oscillator untuk timer/counter 2. Pin-pin port C juga memiliki untuk fungsi-fungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.

Tabel 2.2 Konfigurasi Pin Port C ATMega8535 PORT PIN PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 FUNGSI KHUSUS SCL ( Two-wire Serial Buas Clock Line) SDA ( Two-wire Serial Buas Data Input/Output Line) Input/Output Input/Output Input/Output Input/Output TOSC1 ( Timer Oscillator Pin1) TOSC2 ( Timer Oscillator Pin2) 4. PORT D Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer Port D dapat memberi arus 20 ma dan dapat mengendalikan display LED secara langsung. Data Direction Register port D (DDRD) harus disetting terlebih dahulu sebelum Port D digunakan. Bit-bit DDRD diisi 0 jika ingin memfungsikan pin-pin port D yang bersesuaian sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin port D juga memiliki untuk fungsifungsi alternatif khusus seperti yang dapat dilihat dalam tabel berikut.

Tabel 2.3 Port Fungsi Khusus PIN PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 FUNGSI KHUSUS RXD (USART Input Pin) TXD (USART Output Pin) INT0 (External Interrupt 0 Input) INT1 (External Interrupt 1 Input) OC1B (Timer/Counter1 Output Compare B Match Output) OC1A (Timer/Counter1 Output Compare A Match Output) ICP (Timer/Counter1 Input Capture Pin) OC2 (Timer/Counter Output Compare Match Output) 5. RESET RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini diberi masukan low selama minimal 2 machine cycle maka system akan di-reset. 6. XTAL1 XTAL1 adalah masukan ke inverting oscillator amplifier dan input ke internal clock operating circuit. 7. XTAL2 XTAL2 adalah output dari inverting oscillator amplifier. 8. AVcc Avcc adalah kaki masukan tegangan bagi A/D Converter. Kaki ini harus secara eksternal terhubung ke Vcc melalui lowpass filter.

9. AREF AREF adalah kaki masukan referensi bagi A/D Converter. Untuk operasionalisasi ADC, suatu level tegangan antara AGND dan Avcc harus dibeikan ke kaki ini. 10. AGND AGND adalah kaki untuk analog ground. Hubungkan kaki ini ke GND, kecuali jika board memiliki anlaog ground yang terpisah. 2.2 Pengenal pada bahasa C Pengenal merupakan sebuah nama yang didefinisikan oleh program untuk menunjukkan sebuah konstanta, variabel, fungsi, label, atau tipe data khusus. Pemberian pengenal pada program harus memenuhi syarat-syarat di bawah ini: 1. Karakter pertama tidak menggunakan angka; 2. Karakter kedua berupa huruf, angka, garis bawah,; 3. Tidak menggunakan spasi; 4. Bersifat case sensitive, yaitu huruf kapital dan huruf kecil dianggap berbeda; 5. Tidak boleh menggunakan kata-kata yang merupakan sintaks atau operator dari bahasa C. Contoh menggunakan pengenal yang diperbolehkan: 1. Nama 2. _nama 3. Nama2

4. Nama_pengenal Contoh penggunaan pengenal yang tidak diperbolehkan: 1. 2nama 2. Nama+2 3. Nama pengenal 2.2.1 Tipe data Pemberian signed dan unsigned pada tipe data menyebabkan jangkauan dari tipe berubah. Pada unsigned menyebabkan tipe data akan selalu bernilai positif sedangkan signed menyebabkan nilai tipe data bernilai negatif dan memungkinkan data bernilai positif. Perbedaan nilai tipe data dapat kita lihat pada tabel di bawah ini, Tabel 2.4 Tipe Data Pemodifikasi Tipe Persamaan Jangkauan Nilai Signed char Char -128 s/d 127 Signed int Int -32.768 s/d 32.767 Signed short int Short, signed short -32.768 s/d 32.767 Signed long int Long, long int, signed long -2.147.483.648 s/d 2.147.483.647 Unsigned char Tidak ada 0 s/d 255 Unsigned int Unsigned 0 s/d 65.535 Unsigned short int Unsigned short 0 s/d 65.535 Unsigned long int Unsigned long 0 s/d 4.294.967.295

Contoh program yang menunjukkan pengaruh signed dan unsigned pada hasil program, #include <mega.32> #include <delay.h> Void main (void) int a, b; // pengenal unsigned d, e; a = 50; b = 40; d = 50; e = 40; PORTC = 0x00; DDRC = 0Xff; //set PORTC sebagai output PORTB = 0x00; DDRB = 0Xff; // set PORTB sebagai output While(1) PORTB = a b; PORTC = d e; delay_ms(100); ;

Program di atas akan memberikan data di PORTB = 10 (desimal) sedangkan PORTC = -10 (desimal) karena PORT mikrokontroler tidak dapat mengeluarkan nilai negatif maka PORTB dan PORTC akan memiliki keluaran 0x0A tapi pada kenyataannya PORTC lebih banyak memakan memori karena tanda negatif tersebut disimpan dalam memori. Pada program di atas terdapat tulisan //set PORTB sebagai output yang berguna sebagai komentar yang mana komentar ini tidak mempengaruhi hasil dari program. Ada dua cara penulisan komentar pada pemrograman bahasa C, yaitu dengan mengawali komentar dengan tanda // ( untuk komentar yang hanya satu baris ) dan mengawali komentar dengan tanda /* dan mengakhiri komentar dengan tanda */. Contoh: // ini adalah komentar /* ini adalah komentar Yang lebih panjang Dan lebih panjang lagi */ 2.2.2 Header Header digunakan untuk menginstruksikan kompiler untuk menyisipkan file lain. Di dalam file header ini tersimpan deklarasi, fungsi, variable, dan jenis mikrokontroler yang kita gunakan (pada software Code Vision AVR). File-file yang ber akhiran.h disebut file header. File header yang digunakan untuk mendefinisikan jenis mikrokontroler yang digunakan berfungsi sebagai pengarah yang mana pendeklarasian register-register

yang terdapat program difungsikan untuk jenis mikrokontroler apa yang digunakan ( pada software Code Vision AVR ). Contoh: #include <mega8535.h> #include<delay.h> #include <stdio. h> 2.2.3 Operator aritmatika Operator aritmatika digunakan untuk melakukan proses perhitungan matematika. Fungsi-fungsi matematika yang terdapat pada bahasa C dapat dilihat pada tabel di bawah ini: Tabel 2.5 Operator Aritmatika Operator Keterangan + Operator untuk penjumlahan - Operator untuk pengurangan * Operator untuk perkalian / Operator untuk pembagian % Operator untuk sisa bagi Contoh penggunaan operator aritmatika dapat dilihat di bawah ini, #include < mega8535.h> #include <delay.h> void main (void)

unsigned char a, b; a = 0x03; b = 0x05; DDRC 0XFF; // PORTC digunakan sebagai output while (1) PORTC = (a * b); delay_ms(500); 2.2.4 Operator Pembanding Operator pembanding digunakan untuk membandingkan 2 data atau lebih. Hasil operator akan di jalankan jika pernyataan benar dan tidak dijalankan jika salah. Operator pembanding dapat kita lihat pada tabel di bawah ini:

Tabel 2.6 Operator Pembanding Operator Contoh Keterangan = = x = = y Benar jika kedua data bernilai sama!= x!= y Bernilai benar jika kedua data tidak sama > x > y Bernilai benar jika nilai x lebih besar dari pada y < x < y Bernilai jika x lebih kecil dari y >= x >= y Bernilai jika x lebih besar atau sama dengan y <= x <= y Bernilai benar jika x lebih kecil atau sama dengan y 2.2.5 Operator Logika Operator logika digunakan untuk membentuk logika dari dua pernyataan atau lebih. Operator logika dapat dilihat pada tabel di bawah ini: Tabel 2.7 Operator Logika Operator && Keterangan Logika AND Logika OR! Logika NOT Contoh program: #include < mega8535.h> #include <delay.h> void main (void)

DDRC = 0XFF; // sebagai output DDRA = 0X00; // sebagai input while (1) If ( PINA.0 == 1 ) (PINA.1 == 1 ) PORTC = 0XFF; delay_ms(500); PORTC = 0X00; Delay_ms(500); else PORTC = 0x00; delay_ms(500); Penjelasan program: Apabila PINA.0 atau PINA.1 diberi input logika 1 maka PORTC akan mengeluarkan logika 0xff kemudian logika 0x00 secara bergantian dengan selang waktu 0,5 s. dan apabila bukan PINA.1 atau PINA.0 diberi logika 1 maka PORTC akan mengeluarkan logika 0x00. 2.2.6 Operator Bitwise Operator logika ini bekerja pada level bit. Perbedaan operator bitwise dengan operator logika adalah pada operator logika akan menghasilkan pernyataan benar atau salah

sedangkan pada operator bitwise akan menghasilkan data biner. Operator bitwise dapat dilihat pada tabel di bawah ini: Tabel 2.8 Operator Bitwise Operator Keterangan & Operasi AND level bit Operasi OR level bit ^ Operasi XOR level bit ~ Operator NOT level bit >> Operator geser kanan << Operator geser kiri Contoh program: #include <mega8535.h> #include <delay.h> void main (void) unsigned char a,b,c; DDRC = 0xff; //portc sebagai output while (1) a = 0x12; b = 0x34; c = a & b; PORTC = c; delay_ms(500);

; Penjelasan program: a = 0x12 = 0001 0010 b = 0x32 = 0011 0000 ------------------------- a & b = 0x10 = 0001 0000 2.2.7 Operator penugasan dan operator majemuk Operator ini digunakan untuk memberikan nilai atau manipulasi data sebuah variabel. Operator penguasa dapat kita lihat pada tabel di bawah ini: Tabel 2.9 Operator Penugasan Operator Keterangan = Memberikan nilai variabel += Menambahkan nilai variabel - = Mengurangi nilai variabel *= Mengalikan nilai variabel /= Membagi nilai variable %= Memperoleh sisa bagi Contoh: a += 2 ; artinya nilai variabel a berubah menjadi a = a + 2 b *= 4; artinya nilai variabel b berubah menjadi b = b * 4

selain operator penugasan di atas juga ada operator penugasan yang berkaitan dengan operator bitwise seperti pada tabel di bawah ini: Tabel 2.10 Operator Majemuk Operator Contoh Arti &= x &= 1 Variabel x di AND kan dengan 1 = x = 1 Variabel x di OR kan dengan 1 ~= x ~= 1 x = ~ (1) ; x = 0xFE ^= x ^= 1 Variabel x di XOR kan dengan 1 <<= x <<= 1 Variabel x digeser kiri 1 kali >>= x >>= 1 Variabel x digeser kanan 1 kali 2.2.8 Operator Penambahan dan Pengurangan Operator ini digunakan untuk menaikkan atau menurunkan nilai suatu variabel dengan selisih 11. Operator ini dapat dilihat pada tabel di bawah ini: Tabel 2.11 Operator Penambahan dan Pengurangan Operator Keterangan ++ Penambahan 1 pada variable -- Pengurangan Contoh: a = 1; b = 2;

a ++; b --; Penjelasan: Maka operator a++ akan mengubah variabel a dari satu menjadi 2, sedangkan operator B akan mengubah variabel b dari 2 menjadi 1. 2.2.9 Pernyataan If dan If Bersarang Pernyataan if digunakan untuk pengambilan keputusan terhadap 2 atau lebih pernyataan dengan menghasilkan pernyataan benar atau salah. Jika pernyataan benar maka akan di jalankan instruksi pada blok nya, sedangkan jika pernyataan tidak benar maka instruksi yang pada blok lain yang dijalankan ( sesuai dengan arah programnya). Bentuk pernyataan IF adalah sebagai berikut: 1. Bentuk sederhana if (kondisi) Pernyataan_1; Pernyataan_2;...; 2. Pernyataan else if (kondisi)

Pernyataan_1;...; else Pernyataan_2;...; 3. If di dalam if Pernyataan ini sering disebut nested if atau if bersarang. Salah satu bentuknya adalah sebagai berikut: if (kondisi1) Pernyataan_1; else if (kondisi2) pernyataan_2; else if (kondisi3) pernyataan_3; else pernyataan; contoh program: if ( PINA.0 = =1)

PORTC = 0xff; else PORTC = 0x00; Penjelasan program: Jika PINA.0 diberi input logika 1 maka PORTC akan mengeluarkan logika 0xff, jika yang pernyataan yang lain maka PORTC akan mengeluarkan logika 0x00. 2.2.10 Pernyataan Switch Pernyataan switch digunakan untuk melakukan pengambilan keputusan terhadap banyak kemungkinana. Bentuk pernyataan switch adalah sebagai berikut : Switch (ekspresi) case nilai_1 case nilai_2 case niai_3 : pernyataa_1;break; : pernyataan_2;break; : pernyataan_3;break; Defaut : pernyataan_default;break; Pada pernyataanswitch,masing-masing pernyataan (pernyataan_1 sampai dengan pernyataan_default) dapat berupa satu atau beberapa perintah dan tidak perlu

berupa blok pernyataan. Pernyataan_1 akan dikerjakan jika ekspresi bernilai sama dengan nilai_1, pernyataan_2 akan dikerjakan jika ekspresi bernilai sama dengan nilai_2, pernyataan_3 akan dikerjakan jika ekspresi bernilai sama dengan nilai_3 dan seterusnya. Pernyataan_default bersifat opsional, artinya boeh dikerjakan apabila nilai ekspresi tidak ada yang sama satupun dengan salah satu nilai_1, nilai_2, nilai_3 dan seterusnya. Setiap akhir dari pernyataan harus diakhiri dengan break, karena ini digunakan untuk keuar dari pernyataan swich. Contoh : Switch (PINA) case 0xFE case 0xFD : PORT=0x00;break; : PORT=0xFF;break; Pernyataan di atas berarti membaca port A, kemudian datanya (PINA) akan dicocokan dengan nilai case. Jika PINA bernilai 0xFE maka data 0x00 akan dikeluarkan ke port C kemudian program keluar dari pernyataan switch tetapi jika PINA bernilai 0xFD maka data 0xFF akan dikeluarkan ke port C kemudian program keluar dari pernyataan switch. 2.2.11 Pernyatan While Pernyataan while digunakan untuk menguangi sebuah pernyataan atau blok kenyataan secara terus menerus selama kondisi tertentu masih terpenuhi. Bentuk pernyataan while adalah sebagai berikut :

while (kondisi) // sebuah pernyataan atau blok pernyataan Jika pernyataan yang akan diulang hanya berupa sebuah pernyataan saja maka tanda dan bias dihilangkan. Contoh : unsigned char a=0;.. while (a<10) PORT=a; a++; Pernyataan di atas akan mengeluarkan data a ke port C secara berulang-ulang. Setiap kali pengulangan nilai a akan bertambah 1 dan setelah nilai a mencapai 10 maka pengulangan selesai. 2.2.12 Pernyataan Do..While Pernyataan do while hamper sama dengan pernyataan while, yaitu pernyataan yang digunakan untuk menguangi sebuah pernyataan atau blok pernyataan secara terus menerus selama kondisi tertentu masih terpenuhi. Bentuk pernyataan while adalah sebagai berikut : do // sebuah pernyataan atau blok pernyataan while (kondisi).

Yang membedakan antara pernyataan while dengan do..while adalah bahwa pada pernyataan while pengetesan kondisi dilakukan terlebih dahulu, jika kondisi terpenuhi maka barulah blok pernyataan dikerjakan. Sebaliknya pada pernyataan do while blok pernyataan dikerjakan terebih dahulu setelah itu baru diakukan pengetesan kondisi, jika kondisi terpenuhi maka dilakukan pengulangan pernyataan atau blok pernyataan lagi. Sehingga dengan demikian pada pernyataaan do..while blop pernyataan pasti akan dikerjakan minimal satu kali sedangkan pada pernyataan whilebok pernyataan belum tentu dikerjakan. 2.2.13 Pernyataan For Pernyataan for juga digunakan untuk melakukan pengulangan sebuah pernyataan atau blok pernyataan, tetapi berapa kali jumah pengulangannya dapat ditentukan secara lebih spesifik. Bentuk pernyataan for adalah sebagai berikut : for (nilai_awal ; kondisi ; perubahan) // sebuah pernyataan atau blok pernyataan Nilai_awal adaah nilai inisial awal sebuah variabel yang didefenisikan terlebih dahulu untuk menentukan nilai variabel pertama kali sebelum pengulangan. Kondisi merupakan pernyataan pengetesan untuk mengontrol pengulangan, jika pernyataan kondisi terpenuhi (benar) maka blok pernyataan akan diulang terus sampai pernyataan kondisi tidak terpenuhi (salah). Perubahan adalah pernyataan yang digunakan untuk melakukan perubahan nilai variabel baik naik maupun turun setiap kali pengulangan dilakukan.

Contoh : unsigned int a; for ( a=1, a<10, a++) PORT=a; Pertama kali nilai a adalah 1, kemudian data a dikeluarkan ke port C. selanjutnya data a dinaikkan (a++) jika kondisi a<10 masih terpenuhi maka data a akan terus dikeluarkan ke port C.