BAB 2
TINJAUAN TEORITIS
2.1 Perangkat Keras
Perangkat keras merupakan bentuk fisik dari termometer dengan output suara yang terdiri dari mikrokontroller ATmega8535, Isd2560, LM 35, Regulator 7805, LCD Interface, dan LCD Display
2.1.1 Mikrokontroler Jenis AVR ATMega8535
Pada mikrokontroler AVR membutuhkan sedikit komponen pendukung tidak seperti mikrokontroller yang sistem pendukungnya terpisah atau terbentuk secara parsial, seperti RAM, ROM, dan mikroprosessor sendiri.
Keunggulan AVR disbanding dengan mikrokontroller lain, memiliki kecepatan eksekusi, karena sebagian besar instruksi diproses dalam satu siklus clock, jika dibandingkan dengan mikrokontroller jenis MCS-51 yang mengeksekusi satu instruksi dengan 12 siklus clock.
AVR memiliki fitur yang lengkap (ADC internal, EEPROM internal, Timer/Counter, Watchdog timer, PWM, Port I/O, komunikasi serial, komparator) sehingga fasilitas ini programmer dan desainer dapat menggunakannya dalam berbagai aplikasi elektronika seperti robot, automasi industri, peralatan telekomunikasi dan keperluan lainnya.
Beberapa produsen mikrokontroler mengeluarkan jenis mikrokontroler yang memiliki fitur-fitur yang sangat beragam jenisnya seperti AVR jenis ATtiny, ATmega dan AT90. Dari segi jumlah pin dan memori dapat kita lihat perbedaan jenis mikrokontroller seperti table di bawah ini.
Tabel 2.1 Jenis-jenis AVR
Mikrokontroler Memori
Tipe Jumlah Pin Flash EEPROM SRAM
TinyAVR 8 – 32 1 – 2k 64 – 128 0 – 128
Pemograman AVR dengan bahasa C lebih baik dari bahasa pemograman lainnya. Karena bahasa pemograman independen terhadap hardware C. keunggulan lainnya penyusunan program besar dapat dilakukan dengan mudah dan program yang telah jadi dapat digunakan ke jenis AVR lainnya dengan hanya mengubah fungsi – fungsi port dan registernya.
Beberapa faktor pertimbangan penting untuk memilih mikrokontroler jenis AVR antara lain:
- Harga mikrokontroller yang lebih murah dibanding mikroprosesor;
- Ukuran memori mikrokontroller yang cukup besar dan untuk menambah memorinya dapat digunakan memori eksternal;
- Fitur ADC, Timer, PWM, USART, dan fasilitas lainnya yang memudahkan Designer dalam merancang sistem;
- Kecepatan eksekusi program dimana instruksi dieksekusi dalam 1 clock sementara mikrokontroller jenis MCS51 atau mengeksekusi instruksi dalam 12 clock;
- Adanya clock internal sehingga mikrokontroller dapat digunakan tanpa menggunakan crystal;
2.1.2 Mikrokontroler ATMega8535
Mikrokontroller ATmega8535 adalah mikrokontroller 8bit CMOS dengan menggunakan daya rendah dan menjalankan semua instruksi dalam satu siklus clock. Mikrokontroller ATmega8535 dikombinasikan dengan 16 buah register. Semua register terhubung dengan langsung dengan ke Aritmetical Logical Unit, membiarkan 2 register untuk diakses di dalam satu instruksi dieksekusi dalam satu clock.
2.1.2.1 Spesifikasi ATmega8535
a. High-performance, Low-power AVR® 8-bit Microcontroller b. Advanced RISC Architecture
– 130 Powerful Instructions – Most Single Clock Cycle Execution – 32 x 8 General Purpose Working Registers
– Fully Static Operation
– Up to 16 MIPS Throughput at 16 MHz – On-chip 2-cycle Multiplier
c. Nonvolatile Program and Data Memories
– 8K Bytes of In-System Self-Programmable Flash Endurance: 10,000 Write/Erase Cycles
– Optional Boot Code Section with Independent Lock Bits In-System Programming by On-chip Boot Program True Read-While-Write Operation
– 512 Bytes EEPROM
Endurance: 100,000 Write/Erase Cycles – 512 Bytes Internal SRAM
– Programming Lock for Software Security d. Peripheral Features
– Four PWM Channels – 8-channel, 10-bit ADC
8 Single-ended Channels
7 Differential Channels for TQFP Package Only
2 Differential Channels with Programmable Gain at 1x, 10x, or 200x for TQFP Package Only
– Byte-oriented Two-wire Serial Interface – Programmable Serial USART
– Master/Slave SPI Serial Interface
– Programmable Watchdog Timer with Separate On-chip Oscillator – On-chip Analog Comparator
e. Special Microcontroller Features
– Power-on Reset and Programmable Brown-out Detection – Internal Calibrated RC Oscillator
– External and Internal Interrupt Sources
– Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby and Extended Standby
f. I/O and Packages
– 32 Programmable I/O Lines
– 40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad MLF g. Operating Voltages
– 2.7 - 5.5V for ATmega8535L – 4.5 - 5.5V for ATmega8535 h. Speed Grades
– 0 - 16 MHz for ATmega8535
2.1.2.2 Konfigurasi Pin AVR ATmega8535
Konfigurasi pin-pin Atmega8535 dapat kita lihat pada gambar di bawah ini
Gambar 2.2 Pin-pin ATmega8535
2.1.2.3 Alternatif PORT A
difungsikan sebagai ADC maka hasil pengkonversian analog ke digital akan menghasilkan data error.
Untuk mengaktifkan fungsi ADC pada PORT A dengan Code Vision AVR akan dibahas di bab selanjutnya tentang teknik pemrogram C pada ATmega8535 dengan menggunakan software yang telah disebutkan di atas.
Fungsi PORT A dapat kita lihat pada tabel di bawah ini: Tabel 2. 2 PORT A Port Fungsi Alternatif
PA7 ADC7 ( ADC input channel 7) PA6 ADC6 ( ADC input channel 6) PA5 ADC5 ( ADC input channel 5) PA4 ADC4 ( ADC input channel 4) PA3 ADC3 ( ADC input channel 3) PA2 ADC2 ( ADC input channel 2) PA1 ADC1 ( ADC input channel 1) PA0 ADC0 ( ADC input channel 0)
2.1.2.4 Alternatif PORT B
Tabel 2. 3 PORT B PORT Fungsi Alternatif
PB7 SCK(SPI Bus Serial Clock)
PB6 MISO(SPI bus master input/slave output) PB5 MOSI(SPI Bus Master Output /Slave Input) PB4 SS (SPI Slave Select Input)
PB3
AIN1(Analog Comparator Negative Input) OCO (TIMER /COUNTER OUTPUT COMPARATOR MATCH OUTPUT)
PB2
AIN0 (Analog Comparator Positive Input) INT2 (External Interrupt 2 Input)
PB1 T1 (Timer/Counter External Counter Input)
PB0
T0T1 (Timer/Counter) External Counter Input XCX (USART EXTERNAL CLOCK INPUT/OUTPUT)
2.1.2.5 Alternatif PORT C
Fungsi PORT C dapat dilihat pada tabel di bawah ini:
Tabel 2. 4 Fungsi PORT C PORTC FUNGSI KHUSUS
PC5 TDI(JTAG TEST DATA IN) PC4 TDO(JTAG TEST DATA OUT) PC3 TMS(JTAG TEST MODE SELECT) PC2 TCK(JTAG TEST CLOCK)
PC1 SDA(TWO WIRE SERIAL BUS DATA IN/OUT LINE) PC0 SCL(TWO WIRE SERIAL BUS CLOCK LINE)
2.1.2.6 Alternatif PORTD
Fungsi PORT D dapat dilihat pada tabel di bawah ini: Tabel 2. 5 Fungsi PORT D PIN FUNGSI KHUSUS
7 OC2 (TIMER COUNTER2 COMPARE MATCH OUTPUT 6 ICP (TIMER/COUNTER1 INPUT COMPARE CAPTURE PIN) 5 OC1A (TIMER/COUNTER1 OUTPUT COMPARE A MATCH OUT) 4 OC1B (TIMER/COUNTER OUTPUT COMPARE B MATCH OUTPUT) 3 INT1 (EXTERNAL INTERRUPT 1 INPUT)
2 INT0 (EXTERNAL INTERRUPT 0 INPUT) 1 TXD (USART OUTPUT PIN)
0 RXD (USART INPUT PIN)
2.1.3 Modul LCD (Liquid Crystal Display)
untuk mengendalikan LCD. Mikrokontroler HD44780 buatan Hitachi yang berfungsi sebagai pengendali LCD ini mempunyai CGROM (Character Generator Read Only Memory), CGRAM (Character Generator Random Access Memory) dan DDRAM (Display Data Random Access Memory).
Modul LCD ini memiliki 16 kaki untuk berkomunikasi dengan sistem mikrokontroler yang terdiri atas 3 kaki kontrol, 8 kaki data dan 5 kaki suplai tegangan. Fungsi dari 16 kaki dari LCD M1632 ditampilkan pada Tabel III.7. LCD M1632 ada dalam 2 jenis yaitu LCD M1632 refubrish dan LCD M1632 Hitachi. Perbedaan keduanya adalah pada penggunaan pin nomor 1 dan 2, jika pada LCD M1632 refubrish pin nomor 1 diberikan tegangan 5 volt dan nomor 2 diberikan tegangan 0 volt, maka pada LCD M1632 Hitachi penggunaan kedua pin tersebut adalah kebalikannya.
2.1.3.1 DDRAM
DDRAM adalah merupakan memori tempat karakter yang ditampilkan berada. Contoh, untuk
Gambar 2.3 DDRAM M1632
2.1.3.2 CGRAM
CGRAM adalah merupakan memori untuk menggambarkan pola sebuah karakter di mana bentuk dari karakter dapat diubah-ubah sesuai keinginan. Namun memori ini akan hilang saat power supply tidak aktif, sehingga pola karakter akan hilang.
2.1.3.3 CGROM
Tabel 2.6 Fungsi pin-pin pada modul M1632
No Nama Pin Deskripsi
1 VCC +5 V
2 GND 0 V
3 VEE Tegangan kontras lCD
4 RS Register select, 0 = register
perintah, 1 = register data
5 R/W 1 = read, 0 = write
6 E Enable clock LCD, logika 1 setiap
kali pengiriman/pembacaan data
7 D0 Data bus 0 8 D1 Data bus 1 9 D2 Data bus 2 10 D3 Data bus 3 11 D4 Data bus 4 12 D5 Data bus 5 13 D6 Data bus 6 14 D7 Data bus 7
15 Anoda (Kabel coklat untuk LCD Hitachi) Tegangan positif backlight 16 Katoda (Kabel merah untuk LCD Hitachi) Tegangan negative backlight
2.1.3.4 Akses Ke Register
HD44780, mempunyai dua buah Register yang aksesnya diatur dengan menggunakan kaki RS. Pada saat RS berlogika 0, maka register yang diakses adalah Register Perintah dan pada saat RS berlogika 1, maka register yang diakses adalah Register Data
a. Register Perintah
Penulisan data ke Register Perintah dilakukan dengan tujuan mengatur tampilan LCD, inisialisasi dan mengatur Address Counter maupun Address Data. Gambar 5 menunjukkan proses penulisan data ke register perintah dengan menggunakan mode 4 bit interface. Kondisi RS berlogika 0 menunjukkan akses data ke Register Perintah. RW berlogika 0 yang menunjukkan proses penulisan data akan dilakukan. Nibble tinggi (bit 7 sampai bit 4) terlebih dahulu dikirimkan dengan diawali pulsa logika 1 pada E Clock. Kemudian Nibble rendah (bit 3 sampai bit 0) dikirimkan dengan diawali pulsa logika 1 pada E Clock lagi. Untuk mode 8 bit interface, proses penulisan dapat langsung dilakukan secara 8 bit (bit 7 … bit 0) dan
diawali sebuah pulsa logika 1 pada E Clock.
Gambar 2.4 Timing Diagram Pembacaan Register Perintah Mode 4 bit Interface
c. Register Data
d. Penulisan Data ke Register Data
Penulisan data pada Register Data dilakukan untuk mengirimkan data yang akan ditampilkan pada LCD. Proses diawali dengan adanya logika 1 pada RS yang menunjukkan akses ke Register Data, kondisi R/W diatur pada logika 0 yang menunjukkan proses penulisan data. Data 4 bit nibble tinggi (bit 7 hingga bit 4) dikirim dengan diawali pulsa logika 1 pada sinyal E Clock dan kemudian diikuti 4 bit nibble rendah (bit 3 hingga bit 0) yang juga diawali pulsa logika 1 pada sinyal E Clock.
Gambar 2.5 Timing Diagram Penulisan Data ke Register Data Mode 4 bit Interface
e. Pembacaan Data dari Register Data
Pembacaan data dari Register Data dilakukan untuk membaca kembali data yang tampil pada
adanya proses pembacaan data. Data 4 bit nibble tinggi (bit 7 hingga bit 4) dibaca dengan diawali adanya pulsa logika 1 pada E Clock dan dilanjutkan dengan data 4 bit nibble rendah (bit 3 hingga bit 0) yang juga diawali dengan pulsa logika 1 pada E Clock.
Gambar 2.6
Timing Diagram Pembacaan Data dari Register Data Mode 4 bit Interface
2.2 Perangkat Lunak
Perangkat lunak merupakan pemrograman yang meliputi bahasa pemrograman Cdengan compiler Code VisionAVR untuk mikrokontroler ATMega8535 dan Eagle untuk gambar skematik dari rangkaian.
2.2.1 Program Memori
Untuk keamanan program, memori program flash dibagi ke dalam dua bagian, yaitu bagian program boot dan aplikasi. Boot loader adalah program kecil yang bekerja pada saat start up time yang dapat memasukkan seluruh program aplikasi ke dalam memori prosessor
2.2.1.1 Memori Data (SRAM)
ATmega8535 memiliki 512 Byte data SRAM, memori ini dipakai sebagai penyimpan variabel Tempat khusus di SRAM yang senantiasa ditunjuk register SP disebut stack. Stack berfungsi untuk menyimpan nilai yang dipush.
2.2.1.2 EEPROM
ATmega8535 memiliki memori data EEPROM sebesar 512 Byte. Dia dibangun sebagai wilayah dan jarak memori, yang mana dapat diprogram dan dibaca. EEPROM dapat diprogram, dibaca dan dihapus sebanyak 100.000 kali.
Data yang tersimpan di EEPROM akan tetap tersimpan walaupun mikrokontroller ATmega16 tidak diberi catu daya.
2.2.2 Dasar Pemrograman Atmega8535 dengan Bahasa C 2.2.2.1 Pendahuluan
Bahasa C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa tingkat rendah (bahasa yang berorientasi pada mesin) dan bahasa tingkat tinggi (bahasa yang berorientasi pada manusia). Seperti yang diketahui, bahasa tingkat tinggi mempunyai kompatibilitas antara platform. Karena itu, amat mudah untuk membuat program pada berbagai mesin. Berbeda halnya dengan menggunakan bahasa mesin, sebab setiap perintahnya sangat bergantung pada jenis mesin.
2.2.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:
- Karakter pertama tidak menggunakan angka; - Karakter kedua berupa huruf, angka, garis bawah,; - Tidak menggunakan spasi;
- Bersifat case sensitive, yaitu huruf kapital dan huruf kecil dianggap berbeda;
- Tidak boleh menggunakan kata-kata yang merupakan sintaks atau operator dari bahasa C.
Contoh menggunakan pengenal yang diperbolehkan: Nama
_nama Nama2
Nama_pengenal
Contoh penggunaan pengenal yang tidak diperbolehkan: 2nama
Nama+2 Nama pengenal
2.2.2.3 Tipe data
Perbedaan nilai tipe data dapat kita lihat pada tabel di bawah ini: Tabel 2. 7 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;
Program di atas akan memberikan data di PORT B = 10 (desimal) sedangkan PORTC = -10 (desimal) karena PORT mikrokontroller 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 PORT B 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.4 Header
Header digunakan untuk menginstruksikan kompailer untuk menyisipkan file lain. Di dalam file header ini tersimpan deklarasi, fungsi, variable, dan jenis mikrokontroller yang kita gunakan (pada software Code Vision AVR). File-file yang berakhiran .h disebut file header.
File header yang digunakan untuk mendefinisikan jenis mikrokontroller yang digunakan berfungsi sebagai pengarah yang mana pendeklarasian register-register yang terdapat program difungsikan untuk jenis mikrokontroller apa yang digunakan (pada software Code Vision AVR ).
Contoh:
2.2.2.5 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. 8 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 < mega32.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.2.6 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. 9 Operator Pembanding
Operator Contoh Keterangan
> 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.2.7 Operator Logika
Operator logika digunakan untuk membentuk logika dari dua pernyataan atau lebih. Operator logika dapat dilihat pada tabel di bawah ini:
Tabel 2. 10 Operator Logika
Operator Keterangan && Logika AND | | Logika OR
! Logika NOT Contoh program:
#include < mega32.h> #include <delay.h> void main (void) {
DDRC = 0XFF; // sebagai output DDRA = 0X00; // sebagai input
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.2.8 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. 11 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 <mega32.h> #include <delay.h> void main (void) {
unsigned char a,b,c;
Penjelasan program:
a = 0x12 = 0001 0010 b = 0x32 = 0011 0000 --- a & b = 0x10 = 0001 0000
2.2.2.9 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. 12 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. 13 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
2.2.2.10 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. 14 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.2.11 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 bloknya, sedangkan jika pernyataan tidak benar maka instruksi yang pada blok lain yang dijalankan (sesuai dengan arah programnya). Bentuk pernyataan IF adalah sebagai berikut:
{ 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.2.12 Pernyataan Switch
Pernyataan switch digunakan untuk melakukan pengambilan keputusan terhadap banyak kemungkinana. Bentuk pernyataan switch adalah sebagai berikut:
Switch (ekspresi) {
case niai_3 : pernyataan_3;break; …
Defaut : pernyataan_default;break; }
Pada pernyataan switch,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 : PORT=0x00;break; case 0xFD : 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.2.13 Pernyataan While
Pernyataan while digunakan untuk mengurangi sebuah pernyataan atau blok kenyataan secara terus menerus selama kondisi tertentu masih terpenuhi. Bentuk pernyataan while adalah sebagai berikut :
while (kondisi) {
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.2.14 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 b;ok pernyataan } while (kondisi).
2.2.2.14 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.
2.2.3 Software Downloader
Untuk mengirinkan bilangan-bilangan heksadesimal ini ke mikrokontroler digunakan software ISP-Flash Programmer 3.7 yang dapat di download di internet. Tampilannya seperti gambar di bawah ini :
Gambar 2.7 ISP – Flash Programmer 3.7