Anda di halaman 1dari 15

DASAR PEMROGRAMAN C UNTUK MIKROKONTROLER

Naskan, Jurusan Teknik Informatika, STMIK AMIKOM Yogyakarta


Jl. Ring Road Utara Condong Catur Depok Sleman Yogyakarta
Bahasa pemrograman yang dapat digunakan untuk memrogram mikrokontroler sudah banyak
yang mendukung diantaranya bahasa C, Basic Stamp, BASCOM, Assembler, dan masih banyak bahasa
yang telah mendukung untuk melakukan pemrograman mikrokontroler.
Digunakan Bahasa Pemrograman C karena bahasa C lebih familier dibandingkan dengan
bahasa pemrograman yang lain, khususnya mahasiswa STMIK AMIKOM Yogyakarta. Pada dasarnya
bahasa pemrograman C untuk mikrokontroler sama dengan bahasa pemrograman C untuk dekstop,
akan tetapi ada sedikit perbedaan pada proses pengaksesan register dan memori yang digunakan di
dalam pemrograman mikrokontroler. Pada subbab ini akan dibahas sedikit tentang pemrograman C
untuk mikrokontroler.
2.1 Pengenal
Pengenal (identifier) merupakan sebuah nama yang didefinisikan oleh peprogram untuk
menunjukkan identitas dari sebuah konstanta, variabel, fungsi, label, atau tipe data khusus. Penamaan
identifier harus memenuhi syarat sebagai berikut:

Nama variabel tidak boleh diawali dengan angka

Nama variabel harus diaawali dengan huruf atau garis bawah, selanjutnya dapat diikuti
dengan huruf maupun angka, atau garis bawah

Nama variabel tidak boleh menggunakan operator aritmatika dan karakter-karakter khusus
seperti @,%,*, dan sebagainya

Tidak boleh menggunakan spasi, jika variabel terdiri dari dua kata diperbolehkan
menggunakan tanda garis bawah

Tidak boleh menggunakan kata kunci (key word) dari bahasa pemrograman C, seperti:
void, main, int, if, while, dan sebagainya

Variabel bersifat case sensitive, yaitu anatara huruf besar dan huruf kecil dibedakan.

2.2 Tipe Data


Dalam pemrograman mikrokontroler ATMega8535 digunakan software untuk compiler
CodeVisionAVR, adapun tipe data yang dapat dikenali oleh compiler CodeVisionAVR terlihat pada
tabel 2.6.
Tabel 2.6 Tipe Data
Tipe Data
Bit
Char
Unsigned Char
Signed Char
Int
Short Int
Unsigned Int
Signed Int
Long Int
Unsigned Long Int
Signed Long Int
Float
Double

Ukuran
1 Byte
1 Byte
1 Byte
1 Byte
2 Byte
2 Byte
2 Byte
2 Byte
4 Byte
4 Byte
4 Byte
4 Byte
4 Byte

Jangkauan Nilai
0 atau 1
-128 s/d 127
0 s/d 255
-128 s/d 127
-32.768 s/d 32.767
-32.768 s/d 32.767
0 s/d 65.535
-32.768 s/d 32.767
-2.147.483.648 s/d 2.147.483.647
0 s/d 4.294.967.295
-2.147.483.648 s/d 2.147.483.647
1.2*10-38 s/d 3.4*10+38
1.2*10-38 s/d 3.4*10+38

2.3 Variabel
Variabel meupakan sebuah tempat untuk menyimpan data di dalam memori yang isinya dapat
diubah-ubah. Pendeklarasian konstanta :
Tipe_data nama_variabel = nilai
Contoh : char pinA = 0x20;
Variabel dibagi menjadi dua bagian, yaitu:

Variabel Global

Variabel Global adalah variabel yang dapat dikenali oleh semua fungsi yang ada di dalam
program. Variabel global selalu dideklarasikan di luar fungsi. Contoh : char DDA;

Variabel Lokal

Variabel Lokal adalah variabel yang hanya dapat dikenali oleh fungsi tertentu. Untuk
pendeklarasian variabel lokal dideklarasikan hanya di dalam fungsi tertentu, contoh :
void main(void)
{
Char PORTB = 0xFF;
}

2.4 Konstanta
Konstanta merupakan sebuah tempat untuk menyimpan data di dalam memori dimana data dari
konstanta tidak dapat diubah. Pendeklarasi konstanta :

Const tipe_data nama_konstanta =

nilai
Contoh : Const char PINB = 0xFF;

2.5 Komentar
Komentar adalah tulisan-tulisan yang tidak dianggap sebagai bagian dari program sehingga
tidaak akan dieksekusi oleh compailer. Komentar digunakan sebagai penjelas, informasi ataupun
keterangan dari program yang dibuat untuk mempermudah memahami program. Untuk membuat
komentar satu baris digunakan tanda // atau atau untuk beberapa baris digunakan tanda /* dan
diakhiri dengan */.
Contoh :
// Komentar satu baris
/* komentar untuk beberapa baris
Komentar baris kedua */

2.6 Preprosesor
Preprosesor digunakan untuk mendeklarasikan atau mendefinisikan prosesor yang akan
digunakan di dalam program, di dalam pemrograman mikrokontroler preprosesor digunakan untuk
mendeklarasikan jenis dari mikrokontroler yang akan digunakan. Dengan preprosesor ini maka
pendeklarasian register-register dan penamaannya dilakukan pada file lain yang disisipkan dalam
program utama dengan sintacks sebagai berikut:
#include <nama_preprosesor>
Contoh : #include <mega8535.h>
Dalam CodeVisionAVR telah disediakan preprosesor dari file header yang mendukung untuk
pemrograman mikrokontroler, file header tersebut terlihat pada tabel 2.7 berikut:
Tabel 2.7 File Header di dalam CodeVisionAVR
Jenis

File

Jenis

File

Mikrokontroler

Header

Mikrokontroler

Header

90S2313
90S2323
90S2333
90S2343
90S4414
90S4433
90S4434
90S8515
90S8535

90S2313.h
90S2323.h
90S2333.h
90S2343.h
90S4414.h
90S4433.h
90S4434.h
90S8515.h
90S8535.h

ATtiny22
ATtiny26
Atmega162
Atmega163
Atmega169
Atmega323
Atmega603
Atmega8515
Atmega8535

tiny22.h
tiny26.h
Mega162.h
Mega163.h
Mega169.h
Mega323.h
Mega603.h
Mega8515.h
Mega8535.h

2.7 Pernyataan
Pernyataan adalah satu buah atau satu blok intruksi lengkap yang berdiri sendiri. Contoh
pernyataan:
PORTA = 0xF0;
Contoh blok pernyataan:

{
PORTB =0x00;
PORTC = 0xFF;
}

2.8 Operator
Operator merupakan simbol khusus yang merepresentasikan perhitungan sederhana seperti
penambahan dan perkalian. Nilai yang digunakan oleh operator disebut operand. Ekspresi merupakan
kombinasi dari operand dan operator. Dalam sebuah eksekusi program, suatu ekspresi akan dievaluasi
sehingga menghasilkan suatu nilai tunggal. Di dalam bahasa pemrograman C untuk mikrokontroler
dikenal beberapa operator, seperti : operator Relational, operator Logika, operator Penunjuk, operator
Aritmatika, dan operator Bit.

Operator Aritmatika

Operator aritmatika adalah operator yang digunakan untuk melakukan perhitungan aritmatika.
Operator aritmatika tersebut dapat dilihat pada tabel 2.8.
Tabel 2.8 Operator aritmatika
Operator
+
*
/
%

Keterangan
Operator untuk operasi penjumlahan
Operator untuk operasi pengurangan
Operator untuk operasi perkalian
Operator untuk operasi pembagian
Operator untuk operasi sisa pembagian

Operator Relasional

Operator relational disebut juga operator pembanding adalah operator yang digunakan untuk
membandingkan 2 buah data. Hasil perbandingan dari 2 buah data berupa pernyataan benar (1) atau
salah (0) tidak berupa hasil yang lain. Adapun tabel operator relasional dapat dilihat pada tabel 2.9.

Tabel 2.9 Operator Relasional


Operator
==

Contoh
x == y

Keterangan
Bernilai benar jika kedua data sama dan

!=

x != y

bernilai salah jika keduanya bernilai beda


Bernilai benar jika kedua data tidak sama

x>y

dan bernilai salah jika kedua data sama


Bernilai benar jika nilai x lebih besar dari

>

pada y dan bernilai salah jika y lebih besar


<

x<y

dari x
Bernilai benar jika x lebih kecil daripada y
dan bernilai salah jika x bernilai lebih besar

>=

x >= y

dari y
Bernilai benar jika x lebih besar sama

<=

x <= y

dengan y dan bernilai salah jika sebaliknya


Bernilai benar jika x lebih kecil sama
dengan y dan bernilai salah jika sebaliknya

Operator Logika

Operator logika digunakan untuk membentuk suatu logika atau dua buah kondisi atau lebih.
Yang termasuk operator logika terlihat pada tabel 2.10.
Tabel 2.10 Operator Logika
Operator
&&
||
!

Keterangan
Operator untuk logika AND
Operator untuk logika OR
Operator untuk logika NOT

Operator Bit

Operator bit adalah operator logika yang bekrja pada level bit. Dalam operator logika data yang
dihasilkan adalah data yang berupa bilangan biner. Yang termasuk operator bit dapat dilihat pada tabel
2.11.

Tabel 2.11 Operator bit


Operator
&
!
^
~
<<
>>

Keterangan
Operator untuk operasi AND level bit (biner)
Operator untuk operasi OR level bit (biner)
Operator untuk operasi XOR level bit (biner)
Operator untuk operasi NOT level bit (biner)
Operator untuk operasi geser kiri pada data biner
Operator untuk operasi geser kanan pada data biner

2.5.9 Fungsi Pustaka


Bahasa C memiliki sejumlah fungsi pustaka yang berada pad file-file tertentu dan disediakan
untuk menangani berbagai hal dengan cara pemangilan fungsi-fungsi yang telah dideklarasikan di
dalam file tersebut. Biasanya file-file pustaka disediakan dalam file yang telah dikompilasi. Pada
proses linking kode-kode dari fungsi ini akan dikaitkan dengan kode-kode yang ditulis oleh program.
Sintaks untuk menggunakan fungsi pustaka adalah sebagai berikut:
#include <nama_fungsi_pustaka.h>
Di dalam CodeVisionAVR telah disertakan fungsi pustaka yang mendukung pemrograman
mikrokontroler, diantara fungsi pustaka yang disertakan adalah sebagai berikut:

Fungsi tipe karakter (ctype.h)

Fungsi standar I/O (stdio.h)

Fungsi matematika (math.h)

Fungsi string (string.h)

Fungsi konversi BCD (bcd.h)

Fungsi konversi akses memori (mem.h)

Fungsi waktu tunda (delay.h)

Fungsi LCD (lcd.h)

Fungsi I2C (i2c.h)

Fungsi SPI (spi.h)

Fungsi RTC/ Real Time Clock (ds1302.h, ds1307.h)

Fungsi Sensor suhu LM75, DS1621, dan lain-lain (lm75.h, ds1621.h)

2.5.10 Pernyataan If
Pernyataan if digunakan untuk melakukan pengambilan keputusan terhadap dua buah
kemungkinan yaitu mengerjakan suatu blok pernyataan atau tidak, jika dan hanya jika persyaratannya
terpenuhi. Bentuk pernyataan if adalah sebagai berikut:
If (kondisi)
{
// blok pernyataan yang dieksekusi jika kondisi benar
}

2.11 Pernyataan If ... Else


Pernyataan If ... else digunakan untuk meakukan pengambilan keputusan terhadap dua buah
kemungkinan, kedua kemungkinan tersebt adalah mengerjakan pernyataan satu atau mengerjakan
pernyataan yang lain. Bentuk umum pernyataan If ... Else adalah sebagai berikut:
If (kondisi

{
//blok pernyataan 1
}
else
{
// blok pernyataan 2
}

2.12 Pernyataan If Bersarang


Pernyataan if bersarang (nested If) adalah pernyataan if maupun if ... else dimana di dalam blok
pernyataan yang akan dikerjakan terdapat pernyataan if atau if ... else lagi. Bentuk umum pernyataan if
bersarang:
If (kondisi_1)
{
If (kondisi_2)
{
//blok pernyataan
}
} else
{
If (kondisi_3)
{
// pernyataan
}
}

2.13 Pernyataan Switch


Pernyataan switch digunakan untuk melakukan pengambilan keputusan terhadap banyak
kemungkinan. Bentuk umumdari pernyataan switch adalah sebagai berikut:
switch (ekspresi)
{

case nilai_1:pernyataan_1; break;


case nilai_2:pernyataan_2; break;
.....
default : pernyataan_default; break;
}

2.14 Pernyataan While


Pernyataan while digunakan untuk pengulangan sebuah pernyataan atau blok pernyataan secara
terus menerus selama kondisi tertentu masih terpenuhi. Bentuk umum pernyataan while adalah sebagai
berikut:
while (kondisi)
{
//pernyataan atau blok pernyataan
}

2.15 Pernyataan Do ... While


Pernyataan Do ... While digunakan sama seperti pengunaan pernyataan dari while. Bentuk
umum dari pernyataan Do ... While adalah sebagai berikut:
do {
//pernyataan atau blok pernyataan
} while (kondisi)
Yang membedakan peryataan while dengan do ... while adalah bahwa pada pernyataan while

pengetesan kondisi dilakukan terlebih dahulu, jika kondisi terpenuhi maka akan dilaksanakan tetapi
apabila tidak terpenuhi maka tidak akan pernah ada pelaksanaan dari pernyataan. Sedangkan
pernyataan do ... while, blok pernyataan dikerjakan terlebih dahulu setelah itu baru dilakukan
pengetesan kondisi jadi pernyataan yang ada minimal akan dikerjakan sekali walaupun kondisinya
salah.

2.16 Pernyataan For


Pernyataan for digunakan juga untuk melakukan pngulangan sebuah pernyataan atau blok
pernyataan, tetapi beberapa kali jumlah pengulangannya dapat ditentukan secara lebih spesifik. Bentu
pernyataan for adalh sebagai berikut:
for (nilai_awal ; kondisi ; perubahan)
{
// pernyataan atau blok pernyataan
}
nilai_awal adalah nilai inisial awal sebuah variabel yang didefinisikan terlebih dahulu untuk
menetukan nilai variabel pertama kali sebelum pengulangan.
Kondisi merupakan pernyataan pengetesan untuk mengontrol pengulangan, jika pernyataan
kondisi terpenuhi maka pernyataan akan diulang terus sampai pernyataan kondisi tidak terpenuhi.
Perubahan aalah pernyataan yang digunakan untuk melakukan perubahan nilai variabel baik
naik maupun turun setiap kali perulangan dilakukan.

2.17 Fungsi
Fungsi adalah kumpulan pernyataan-pernyataan yang dikemas dalam satu wadah kemudian
diberi nama dan selanjutnya dapat dipangil beberapa kali dalam sebuah program. Fungsi dapat
digunakan untuk memecah logika program menjadi lebih kecil sehingga akan lebih memudahkan untuk

mengelola dan memahami alur logika program pada saat menulis ataupun mengoreksi program.
Fungsi dapat dibedakan berdasarkan hasil fungsi tersebut menjadi dua, yaitu:

Fungsi dengan nilai balik

Fungsi ini akan menghasilkan data keluaran baru setelah fungsi ini dipanggil/ dieksekusi oleh
program. Bentuk umum dari fungsi ini adalah sebagai berikut:
tipe_data nama_fungsi (tipe_data_1 parameter_1, ...)
{
Pernyaaan_1;
Pernyataan_2;
......
}

Contoh :
int jarak (int data_1, int data_2)
{
hasil = data_1 / data_2; return hasil;
}

Fungsi tanpa nilai balik

Fungsi dapat di sebut dengan fungsi tanpa nilai balik jika fungsi tersebut apabila dipangil tidak
menghasilkan nilai. Bentuk umum dari fungsi ini adalah sebagai berikut:
tipe_data nama_fungsi (tipe_data_1 parameter_1, ....)
{
Pernyaaan_1;

Pernyataan_2;
......
}

Contoh :
void port (char A, char B, char C, char D)
{
DDRA = A; DDRB = B; DDRC = C; DDRD = D;
}

2.18 Bentuk Dasar Bahasa C


Sebuah program dalam bahasa C harus memiliki sebuah fungsi utama. Fungsi utama atau sering
disebut dengan fungsi main memiliki kerangka program sebagai berikut:
void main(void)
{
// pernyataan-pernyataan
}
Fungsi utama merupakan fungsi yang paling pertama kali yang akan dieksekusi oleh program,
walaupun di dalam program tersebut terdapat beberapa fungsi. Kedudukan fungsi-fungsi yang lain
lebih rendah dari fungsi utama, sehingga fungsi selain fungsi utama dapat dipanggil/ digunakan di
dalam fungsi utama.

2.19 Pemangilan Bahasa Assembler


Meskipun bahas pemrograman yang digunakan adalah bahasa C, akan tetapi dalam perograman
mikrokontroler dengan bahasa C masih dapat memanggil atau menggunakan bahasa pemrograman

Assembler. Cara pemanggilan bahasa Assembler didalam pemrograman mikrokontroler dengan C


adalah sebagai berikut:
#asm
; instruksi-instruksi assembler
#endasm
Contoh :
#asm
ldi r0,100
Mov r2,r3
#endasm

Daftar Pustaka
Bejo, Agus. C & AVR Rahasia Kemudahan Bahasa C dalam Mikrokontroler ATMega8535. Graha
Ilmu. Yogyakarta: 2008.
Ahmad, Balza., Agus Arif. Modul: Workshop Dasar Aplikasi Mikrokontroler. Kelompok
Instrumentasi Berbasis Mikrokontroler Fakultas Teknik Universitas Gajah Mada. Yogyakarta: 2003.

Anda mungkin juga menyukai