Anda di halaman 1dari 11

Siswa dapat menjelaskan struktur penulisan program bahasa C.

Siswa dapat menjelaskan penulisan identifier dalam bahasa C.


Siswa dapat menyebutkan reserved words dalam bahasa C.
Siswa dapat menjelaskan jenis-jenis variabel dalam bahasa C.
Siswa dapat menjelaskan jenis-jenis tipe data dalam bahasa C.
Siswa dapat menyebutkan jenis-jenis dan karakter operator dalam bahasa C.
Siswa dapat menjelaskan jenis-jenis percabangan dalam bahasa C.
Siswa dapat menjelaskan jenis-jenis perulangan dalam bahasa C.

1. Dasar Bahasa C untuk Mikrokontroler


Dalam penggunaan mikrokontroler perlu dilakukan pengisian program ke dalam IC
mikrokontroler. Program yang diisikan merupakan program yang akan dikerjakan oleh
sistem mikrokontroler. Salah satu software yang bisa digunakan untuk memprogram
mikrokontroler AVR khususnya ATmega16, yaitu CodeVision AVR. Dalam software
CodeVision AVR kita dapat menulis program untuk mikrokontroler AVR dalam bentuk
bahasa C.
Bahasa C termasuk dalam bahasa pemrograman tingkat menengah (Medium Level
Language). Sebelum mengenal lebih jauh tentang bahasa C, terlebih dahulu perlu mengenali
struktur/format penulisan program bahasa C. Sehingga kita mempunyai gambaran tentang
bagian-bagian dalam pembuatan program bahasa C. Berikut contoh struktur penulisan
program bahasa C.
Penulisan Program dalam Bahasa C
#include <mega16.h>
#include <delay.h>
#define kiri 1
#define kanan 2

//variabel global
unsigned int i, j;

13
void main(void)
{
unsigned char data1; // varibel lokal

DDRA = 0x00;
PORTA = 0xFF;
DDRB = 0xFF;
PORTB = 0x00;
.......
While (1)
{
.......
.......
}
}

Penjelasan:
1) Preprocessor
Preprocessor #include biasanya digunakan untuk menyertakan file header(.h) atau file
library. File include berguna untuk memberi tahu compiler agar membaca file yang di-
include-kan lebih dahulu agar mengenali definisi-definisi yang digunakan dalam
program agar tidak dianggap error.
Cara penulisan:
#include <......> untuk lokasi standar file yang telah di-setting oleh tools biasanya pada
folder include atau folder direktori compiler.
untuk lokasi file yang kita tentukan sendiri.

Preprocessor #define digunakan untuk mendefinisikan konstanta atau macro.


Cara penulisan:
#define identifier konstanta
Contoh: #define kiri 1
Setiap kemunculan kata kiri akan diganti dengan angka 1.
2) Variabel Global
Variabel global merupakan variabel yang berlaku pada semua sub-program, termasuk
program utama.
3) Variabel Lokal
Variabel lokal merupakan variabel yang hanya berlaku pada sub-program di mana
variabel lokal tersebur dideklarasikan.
4) Komentar
Komentar merupakan naskah program yang tidak akan diproses oleh compiler.

14
Penulisan komentar untuk beberapa baris komentar sekaligus
/*
...komentar
...*/

Penulisan komentar untuk satu baris saja


//...komentar...

2. Identifiers (Pengenal)
Identifiers adalah nama yang diberikan pada variabel, fungsi, label atau objek lain.
Identifiers bersifat Case sensitive. Identifiers dapat mencapai maksimal 32 karakter.
Identifiers dapat mengandung huruf (A...Z, a...z) dan angka (0...9) dan karakter ( _ ). Tiap
pengenal bisa menggunakan gabungan ketiga hal tersebut dengan catatan tidak boleh
diawali dengan angka.
Cara penulisan:
Maju //benar
MaJu //benar dan berbeda dengan pengenal Maju
57maju //salah
_57maju //benar
Maju57 //benar

3. Reserved Word
Dalam membuat identifier diberikan kebebasan dalam menyusunnya sebagaimana
dijelaskan di atas. Namun, ada kata-kata yang tidak bisa digunakan sebagai identifier yang
termasuk dalam reserved word. Kata-kata yang termasuk dalam reserved word sebagai
berikut.
Auto Int Const Short
Break Long Continue Signed
Case Register Default Sizeof
Char Return Do Static
Double Long Float Unsigned
Else Switch For Void
Enum Typedef Goto Volatile
Extern Union If While

4. Variabel
Variabel adalah tempat untuk menyimpan dan mengakses data yang mewakili
memori dalam mikrokontroler. Variabel harus dideklarasikan (memberi tahu compiler)
dengan tipe data beserta nama variabel yang digunakan. Bahasa C bersifat case sensitive
yang artinya huruf kapital dan huruf kecil dibedakan. Tiap tipe data mempunyai jangkauan
bilangan yang dapat disimpan, hal ini akibat dari byte memori yang dipesan dan bentuk

15
bilangan bertanda atau tidak. Misalnya unsigned char oleh compiler disediakan 1 byte
memori RAM sehingga hanya bisa menampung bilangan dari 0 sampai dengan 255
sedangkan jika bertanda (signed char) bisa menampung bilangan dari -128 sampai dengan
127.

Berdasarkan sifatnya, variabel dibedakan menjadi dua.


a. Variabel global
Definisi: variabel yang dapat diakses oleh seluruh blok fungsi dalam program.
Deklarasi: di luar blok fungsi, biasanya di atas program. Nilai variabel global berubah
tiap kali variabel itu diakses dan variabelnya tidak hilang (menetap). Nilai yang
sedang terjadi adalah nilai terakhir variabel itu diakses baik oleh fungsi main maupun
fungsi-fungsi yang lain.

b. Variabel lokal
Definisi: variabel yang hanya dapat diakses oleh blok fungsi yang bersangkutan atau
terbatas di dalam tanda { } deklarasi fungsi itu berada.
Deklarasi: pada bagian atas di dalam blok fungsi yang menggunakan variabel
tersebut. Variabel lokal akan dihilangkan jika eksekusi program keluar dari fungsi
yang bersangkutan dan nilanya pun hilang. Jika menghendaki nilai variabel lokal
tidak hilang (mengendap/nilai terakhir kali diakses ada) maka dalam deklarasi
static

5. Tipe Data
Pemilihan tipe data berhubungan dengan penggunaan memori SRAM
mikrokontroler. Sehingga dalam pemilihan tipe data harus disesuaikan dengan kebutuhan
variabel (perkiraan bilangan yang akan disimpan). Gunakan seefisien mungkin SRAM,
misalnya jangan menggunak
menyimpan angka-angka dari 0 sampai 200 walaupun oleh compiler tidak error namun tidak
byte sedangkan unsigned char/char hanya memakan 1
byte. Keefektifan penggunaan variabel sangat penting untuk penggunaan memori
mikrokontroler karena memorinya terbatas berbeda dengan PC (Personal Computer) yang
mempunyai memori yang ber-mega-mega byte. Jenis-jenis tipe data dapat dilihat pada Tabel
2.1.
Tabel 2.1 Tipe Data
Range
Tipe Data Ukuran (bit)
Minimum Maksimum
Bit 1 0 1
Char 8 -128 127
Signed char 8 -128 127
Unsigned char 8 0 255
Int 16 -32768 32767
Signed int 16 -32768 32767

16
Lanjutan Tabel 2.1 Tipe Data
Range
Tipe Data Ukuran (bit)
Minimum Maksimum
Unsigned int 16 0 65535
Long int 32 -2147483648 2147483647
Signed long int 32 -2147483648 2147483647
Unsigned long int 32 0 4294967295
Float 32 1.175E-38 3.4E38
Double 32 1.175E-38 3.4E38

6. Operator
Operator adalah karakter-karakter khusus yang digunakan untuk memanipulasi atau
mengolah suatu nilai atau variabel. Terdapat beberapa operator yang dapat dilihat pada Tabel
2.2 hingga Tabel 2.6
Tabel 2.2 Operator Kondisi
Operator Kondisi Keterangan
< Lebih kecil
<= Lebih kecil atau sama dengan
> Lebih besar
>= Lebih besar atau sama dengan
== Sama dengan
!= Tidak sama dengan

Tabel 2.3 Operator Aritmatika


Operator Aritmatika Keterangan
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian
% Sisa bagi (modulus)
++ Increment
-- Decrement

Tabel 2.4 Operator Logika


Operator Logika Keterangan
! Boolean NOT
&& Boolean AND
|| Boolean OR

17
Tabel 2.5 Operator Bitwise
Operator Bitwise Keterangan
~ Komplemen bitwise
& Bitwise AND
| Bitwise OR
^ Bitwise exclusive OR
>> Right shift
<< Left shift

Tabel 2.6 Operator Assignment


Operator Assignment Keterangan
= Untuk memasukan nilai
+= Untuk menambah nilai dari keadaan semula
-= Untuk mengurangi nilai dari keadaan semula
*= Untuk mengalikan nilai dari keadaan semula
/= Untuk melakukan pembagian terhadap
bilangan semula
%= Untuk memasukan nilai sisa bagi dari
pembagian bilangan semula
<<= Untuk memasukan shift left
>>= Untuk memasukan shift right
&= Untuk memasukan bitwise AND
^= Untuk memasukan bitwise NOR
\= Untuk memasukan bitwise OR

7. Program Kontrol
a. Percabangan
1) Percabangan if
Digunakan untuk mengecek satu kondisi untuk satu blok
jawaban. Jika hasil pengecekan benar maka akan
menjalankan satu blok program.
Cara penulisan:
if(uji_benar_atau_salah)
{eksekusi_blok_ini_jika_benar;}
Contoh:
If(n==0)
{x=10;}
Artinya: jika variabel n bernilai 0, maka variabel x
bernilai 10.

18
2) Percabangan if-else
Digunakan untuk mengecek satu kondisi untuk dua blok
jawaban.
Cara penulisan:
if(uji_benar_atau_salah)
{eksekusi_blok_ini_jika_benar;}
else {eksekusi_blok_ini_jika_salah;}
Contoh:
if(n==0)
{x=10;}
else {x=20;}
Artinya: jika variabel n bernilai 0, maka variabel x bernilai 10. Jika variabel n bernilai
tidak sama dengan 0, maka variabel x bernilai 20.
3) Percabangan if-else if-else
Digunakan untuk mengecek beberapa kondisi yang
berkaitan.
Cara penulisan:
if(uji_benar_atau_salah)
{eksekusi_blok_ini_jika_benar;}
else if(uji_benar_atau_salah)
{eksekusi_blok_ini_jika_benar;}
else {eksekusi_blok_ini_jika_salah;}
Contoh:
if(a==1) {x=1;}
else if(b==1) {x=2;}
else if(c==1) {x=3;}
else {x=0;}
Artinya: Jika variabel a bernilai 1, maka variabel x
bernilai 1. Namun, jika variabel a tidak bernilai 1,
maka program akan mengecek kondisi nilai pada
variabel b. Apakah variabel b bernilai 1? Jika
variabel b bernilai 1, maka variabel x bernilai 2. Jika
variabel b tidak bernilai 1, maka program akan
mengecek kondisi variabel c. Apakah variabel c
bernilai 1? Jika benar, maka variabel x bernilai 3.
Namun, jika variabel c tidak bernilai 1 maka variabel
x bernilai 0.
4) Percabangan switch
Digunakan untuk menguji satu variabel dengan beberapa jawaban konstanta.
Cara penulisan:
switch(variabel_uji)
{

19
case konstanta1 : pernyataan1; break;
case konstanta2 : pernyataan2; break;
......
case konstantaN : pernyataanN; break;
default: pernyataan_jika_semua_dalam_semua_case_tidak_ada;
break;
}
Contoh:
switch(a)
{
case 1 : x=1; break;
case 2 : x=2; break;
case 3 : x=3; break;
default : x=0; break;
}
Artinya: program akan memeriksa nilai yang ada
pada variabel a. Jika variabel a bernilai 1, maka akan
memberi nilai 1 pada variabel x. Kemudian program
keluar dari percabangan switch-case ini dan
menjalankan program yang berada setelahnya
karena perintah break yang artinya menghentikan
blok program ini dan keluar dari blok program ini.
Namun jika variabel a tidak bernilai 1, maka
program melakukan pengecekan nilai kembali
apakah variabel a bernilai 2? Jika benar, maka
variabel x diberi nilai 2 dan keluar dari percabangan
switch-case, jika salah maka akan melakukan
pengecekan kembali apakah variabel a bernilai 3?
jika benar, maka variabel x akan diberi nilai 3 dan
keluar dari percabangan switch-case. Jika nilai
variabel a masih belum benar, maka variabel x diberi nilai 0.

b. Perulangan
1) Perulangan while
Digunakan untuk perulangan/looping jika kondisi yang
diuji benar.
Cara penulisan:
while (_uji_benar_atau_salah_)
{_selama_benar_blok_ini_akan_selalu_dieksekusi_;}
Contoh:
while (a<=100)

20
{x--;a++;}
Artinya: Selama nilai pada variabel a kurang dari sama dengan 100, maka program
akan melakukan perintah x-- atau berkurang 1 setiap satu kali perulangan (decrement)
dan perintah a++ atau nilai variabel a akan bertambah 1 setiap kali satu perulangan
(increment). Perintah ini tidak akan berhenti dan terus berulang hingga nilai a sama
dengan 101. Jika nilai a = 101, maka program akan keluar dari perulangan ini dan
menjalankan perintah program setelahnya.
2) Perulangan do-while
Digunakan untuk perulangan/looping jika kondisi yang diuji
bernilai benar. Perbedaannya dengan while tanpa do adalah blok
dieksekusi dulu baru diuji, hal ini dapat terjadi kemungkinan
yang diuji salah namun blok tetap dieksekusi seperti terlihat
dalam diagram alir.
Cara penulisan:
do {_selama_benar_blok_ini_akan_selalu_dieksekusi_;}
while (_uji_benar_atau_salah_);
Contoh:
do {x--; a++;}
while (a<=100)
Artinya: program menjalankan perintah x-- dan a++. Kemudian melakukan
pengecekan terhadap nilai variabel a, jika nilai variabel a lebih rendah sama dengan
100, maka perintah yang ada pada blok do akan diulang lagi.
Ketika nilai variabel a melebihi 100, maka perintah pada blok do tidak dilakukan lagi
dan lanjut ke perintah di bawahnya.
3) Perulangan for
Digunakan untuk perulangan/looping dengan kondisi dan
syarat serta jumlah perulangannya telah ditentukan.
Cara penulisan:
for (_kondisi_awal_; _uji_kondisi_; _aksi_jika_benar_)
{_eksekusi_blok_ini_jika_benar_;}
Contoh:
for (a==0; a<=5; a++)
{x=a;}
Artinya: Perulangan dilakukan pada variabel a. Program
memberikan nilai nol sebagai kondisi awal pada variabel
a. Selama nilai variabel a kurang dari atau sama dengan 5
maka nilai a akan bertambah 1 (increment) dan akan
memberikan nilai variabel a kepada variabel x. Jadi nilai awalnya adalah 0, kemudian
menjadi 1, 2, 3, 4, dan 5. Jika nilai pada variabel a sudah tidak memenuhi kondisi atau
lebih besar dari 5 maka program keluar dari perulangan ini dan melakukan program
sesudahnya.

21
8. Array
Array adalah deretan variabel yang berjenis sama dan mempunyai nama yang sama.
Setiap anggota deretan (elemen) diberi nomor yang disebut indeks, dimulai dari indeks nol.
Array diatur agar mempunyai lokasi memori yang bersebelahan dengan alamat terkecil
menunjuk elemen array pertama dan alamat terbesar menunjukkan elemen terakhir. Elemen
array dapat diakses dengan menggunakan indeksnya. Bentuk deklarasi array sebagai
berikut:
tipe nama_array[jumlah_elemen] //untuk array satu dimensi
tipe nama_array[jumlah_elemen][jumlah_elemen] //untuk array multi dimensi
contoh:
int nilai[100];
Untuk mengaksesnya dituliskan indeks yang ingin diakses, misalnya nilai[1]=65;.
Programmer juga dapat langsung memberikan nilai elemen array pada deklarasi dengan
menggunakan tanda koma ( , ) untuk memisahkan antar elemen, misalnya :
int nilai[65,75,80,75,95,100,70,80,65,85];
Sehingga ketika programmer mengakses elemen array pada indeks tertentu, maka nilai yang
akan tampil adalah nilai elemen pada indeks tersebut. Misalnya mengakses nilai[5], maka
yang akan ditampilkan adalah 100 karena penghitungan indeks dimulai dari 0.

9. Fungsi
Sebuah program yang besar dapat dipecah menjadi beberapa subprogram yang
terpisah yang melakukan fungsi tertentu. Subprogram yang seperti itu disebut fungsi.
Sebagai contoh, sebuah program yang melakukan proses pengisian data berulang kali dapat
dilengkapi dengan sebuah fungsi yang bertugas untuk melakukan proses pengisian data.
Apabila program hendak melakukan proses pengisian data, program dapat melakukan
pemanggilan fungsi tersebut.
Fungsi adalah sebuah blok yang melingkupi beberapa perintah. Deklarasi fungsi dapat
dilakukan dengan cara:
Tipe nama fungsi(argumen)
Parameter dalam fungsi dijelaskan sebagai berikut:
Tipe adalah nilai yang dihasilkan oleh fungsi, Jika tidak dinyatakan, hasil fungsi
dianggap bertipe integer. Deklarasi tipe void dapat dimanfaatkan untuk
menghindari teijadinya nilai balik.
Argumen adalah deklarasi Variabel apa saja yang dibutuhkan fungsi dan bersifat optional.

a. Fungsi dengan nilai balik


Fungsi ini memberikan hasil yang berupa nilai Fungsi dengan nilai balik (return
Value)
Contoh:
int luas (int p, int l) //penggunaan tipe int akan menghasilkan nilai balik bertipe int
{
int a;

22
a=p*l;
return (a);
}
Nilai balik dari fungsi tersebut adalah nilai pada variabel a yang merupakan data
integer hasil perkalian dari p dan l. Nilai balik ini menyatakan untuk mengakhiri
fungsi dan kembali ke program utama dan juga memberikan nilai balik.
b. Fungsi tanpa nilai balik
Fungsi ini tidak memberikan hasil yang berupa nilai melainkan berupa sebuah proses.
Fungsi ini bertipe void.
Contoh:
void kedip()
{
PORTD=0x0f;
delay_ms(500);
PORTD=0xf0;
delay_ms(500);
PORTD=0xff;
delay_ms(500);
return;
}

Bahasa C merupakan salah satu bahasa pemrograman yang dapat digunakan untuk
memprogram mikrokontroler AVR. Tergolong dalam bahasa pemrograman tingkat
menengah.
Penggunaan bahasa C untuk memprogram mikrokontroler AVR dapat dilakukan
dengan bantuan software CodeVision AVR.
Dalam penulisan bahasa C terdapat format-format penulisan yang harus diterapkan
dengan benar. Antara lain, penggunaan preprocessor, komentar, variabel, konstanta,
array, operator, program kontrol, fungsi, dan lainnya.

23

Anda mungkin juga menyukai