1. Bagian komentar
Bagian ini tidak wajib ada karena hanya berfungsi sebagai komentar dari penulis kode. Tujuan pembuatan komentar adalah agar mudah dibaca dan diingat kembali tentang fungsi kode-kode yang sudah dibuat. Oleh komplier, komentar ini akan diabaikan. Penulisan komentar dalam bahasa C diawali dengan tanda ( // ) untuk komentar singkat dan tanda (*/……………./*) untuk komentar panjang.
Contoh penulisan komentar :
Untuk komentar yang panjang dalam bentuk paragraf
*/ komentar anda tentang suatu baris pernyataan atau kode program /*
Untuk komentar pendek yang biasanya digunakan sebagai penanda :
//komentar singkat anda tentang kode program
2. Bagian preprosessorBagaimana cara kerja preprosessor?
Ketika kita menjalankan perintah untuk menyusun (compile) suau program C, maka program secara otomatis akan membaca perintah pada preprosessor. Preprocessor adalah program yang mengubah suatu program yang berasal dari sumber program C sesuai dengan arahan yang diberikan dalam program ini. Sumber program C biasanya disimpan dalam sebuah file. Preprosessor tidak mengubah secara langsung program ini, tetapi membuat salinan baru yang isinya sama dengan program sumbernya. File baru ini yang akan digabungkan dengan program-program yang akan disusun (compile).
Preprosessor yang berisikan pernyataan-pernyataan khusus disebut directives (pengarah), yang akan dijalankan pada awal proses penyusunan (compile). Perintah #include dan #define termasuk jenis directives (pengarah).
a. Preprosessor #include
Preprosessor ini digunakan untuk menambahkan beberapa file dalam program yang kita buat. Beberapa file yang ditambahkan dapat berupa file header (.h) atau file library. Bagian preprosessor ini berguna untuk memberitahukan kepada komplier untuk membaca file-file yang dimasukkan ke dalam program terlebih dahulu agar mengenali definisi-definisi yang digunakan dalam program agar tidak dianggap suatu kesalahan pemograman.
Cara penulisan :
#include <……………> untuk file library biasanya berada dalam lokasi standar yang telah disetting oleh komplier. Umumnya terletak dalam folder include atau folder direktori complier.
Contoh penulisan :
#include <io.h>
Cara penulisan :
#include “…………………..” untuk lokasi file yang kita tentukan sendiri.
Contoh penulisan :
#include “lcd.h”
#include “timer1.c”
Salah satu file include yang wajib ada adalah file header io.h. ini adalah file yang berisikan semua informasi dan defini tentang fungsi khusus (SFR) dan bit atau pin-pin mikrokontroller AVR.
b. Preprosessor #define
Preprosessor #define berguna untuk mendefinisikan suatu konstanta atau makro.
Cara penulisan :
#define lambang konstanta;
Contoh penulisan 1 :
#define on 1
Artinya mendefinisikan tanda on dengan angka 1, sehingga setiap kemunculan on akan selalu digantikan dengan 1.
Contoh penulisan 2 :
#define kuadrat(x) x*x
Artinya setiap kemunculan kuadrat(x) akan digantikan dengan x*x. misalnya : temp=kuadrat(6), sehingga variabel temp akan berisi 36.
c. Preprosessor #if dan #endif
Preprosessor ini digunakan untuk menguji suatu ekspresi yang benar untu mengolah kode program dibawahnya hingga tanda #endif.
Cara penulisan :
#if (ekspresi)
……..Kode program…………
#endif
Contoh penulisan :
#define pembagi 15
#if (pembagi>0)
y=x/pembagi;
#endif
d. Preprosessor #if , #else dan #endif
Preprosessor ini digunakan untuk menguji suatu ekspresi yang benar untuk mengolah kode program di bawahnya atau jika tidak benar, maka kode program di bawah #else yang akan di proses hingga #endif.
Cara penulisannya :
#if (ekspresi)
…….. kode program ………
#else
……… kode program ……..
#endif
Contoh penulisan :
#define pembagi 15
#if (pembagi>0)
Y = X/pembagi;
#else
Y=0
#endif
e. Preprosessor #ifdef dan #endif
Preprosessor ini digunakan untuk mencari tahu apakah suatu pengenal (identifier) sudah didefinisikan atau belum, jika sudah, maka eksekusi kode program dibawahnya akan dijalankan.
Cara penulisan :
#ifdef identifier
……kode program ……
#endif
Contoh :
#ifdef max
#define max 1000
#endif
f. Preprosessor #ifndef dan #endif
Preprosessor ini adalah kebalikan dari preprosessor #ifdef. Fungsinya adalah untuk mencari tahu apakan suatu pengenal sudah didefinisikan atau belum, dan jika belum maka kode program di bawahnya akan dijalankan.
Cara penulisan :
#ifndef identifier
…………kode program………
#endif
Contoh penulisan :
#ifndef max
#define max 1000
#endif
g. Preprosessor #undef
Preprosessor ini digunakan untuk menghilangkan suatu pengenal (identifier) yang telah kita buat sebelumnya dengan menggunakan perintah #define, sehingga kita dapat mendefinisikan ulang pengenal tersebut.
Cara penulisan:
#undef identifier
Contoh penulisan
#undef max
3. Bagian deklarasi variabel.
Variabel yang digunakan dalam pemograman C untuk AVR dikenal ada 2 jenis yaitu variabel global dan variabel lokal. Variabel global dapat digunakan oleh semua semua fungsi dan harus diletakkan di bagian atas program. Variabel lokal adalah variabel yang hanya diakses oleh blok fungsi yang bersangkutan atau terbatas di dalam tanda { } dimana deklarasi fungsi itu berada.
Contoh :
#include <avr/io.h> ———————à preprosessor
#include <avr/interrupt.h> ———————à preprosessor
volatile unsigned char jam, menit; ————–à deklarasi variabel global : jam & menit
unsigned int angka ——————-à deklarasi variabel global angka
…………………………………
ISR(TIMER_COMPA_vect)
{static unsigned char detik; —————-à deklarasi variabel lokal : detik
………………….
………………….
}
void main (void)
{unsigned int tunda; ——————–à deklarasi variabel lokal : tunda
…………………….
………………….
}
Dari contoh di atas, variabel jam dan menit dideklarasikan sebagai variabel global yang dapat diakses oleh semua fungsi di dalam program, tetapi variabel detik hanya dapat diakses oleh fungsi yang terdapat di dalam blok program ISR (TIMER_COMPA_vect) saja demikian juga dengan variabel tunda hanya dapat diakses oleh fungsi yang terdapat di dalam blok program main.
Variabel sendiri berfungsi sebagai tempat untuk menyimpan dan mengakses data yang mewakili memori dalam mikrokontroller. Variabel harus dideklarasikan atau diberitahukan ke komplier dengan tipe data beserta nama variabel yang akan digunakan. Dalam pemograman bahasa C penggunaan huruf kecil dan huruf besar harus diperhatikan, karena bahasa C membedakan penggunaan huruf kecil dan huruf besar atau istilahnya “case sensitive”. Tipe-tipe data yang dapat digunakan terdapat dalam tabel 1 berikut ini.
Tabel 1 tipe data dan nilainya
Tipe data
|
Byte
|
Bit
|
Nilai
|
|
minimum
|
maksimum
|
|||
Char |
1
|
8
|
-128
|
128
|
Unsigned char |
1
|
8
|
0
|
255
|
Signed char |
1
|
8
|
-128
|
128
|
Int |
2
|
16
|
-32768
|
32768
|
Unsigned int |
2
|
16
|
0
|
65535
|
Signed int |
2
|
16
|
-32768
|
32768
|
long |
4
|
32
|
-2147483648
|
2147483648
|
Unsigned long |
4
|
32
|
0
|
4294967295
|
Signed long |
4
|
32
|
-2147483648
|
2147483648
|
Float |
4
|
32
|
1.28 x 10-38
|
3.4 x 1038
|
Beberapa tip dalam penanganan variabel.
- Penamaan variabel sebaiknya menggunakan huruf kecil, sedangkan huruf besar digunakan untuk penamaan konstanta. Panjang maksimal penamaan variabel adalah 31 karakter.
- Pemberian nama pada sebuah variabel sebaiknya menggunakan nama yang mewakili penggunaan variabel tersebut sehingga memudahkan untuk dipakai, dibaca dan dipahami. Nama variabel tidak boleh diawali dengan angka, hanya boleh diawali dengan huruf saja. Jika benar-benar ingin menggunakan angka sebagai awal nama suatu variabel, berikan tanda underscore ( _ ) diawal angka tersebut. Contoh : _16unt.
- Gunakan tipe data yang sesuaid dengan kebutuhan, karena hal ini berhubungan dengan penghematan memori dan memperbaiki kinerja mikrokontroller. Ingat mikrokontroller hanya memiliki memori yang kecil.
- Di dalam mikrokontroller tidak mengenal bilangan negatif dan pecahan, walaupun kadang-kadang hal ini dapat dibuat dengan melakukan sedikit trik pemograman.
- typedef
Contoh :
typedef unsigned char data8bit; ——–à mendefinisikan data8bit sebagai tipe data
data8bit menit; —————à variabel menit bertipe data unsigned char.
- extern
Contoh :
#include <alfa.h> ——à menyertakan file alfa.h yang akan diakses variabelnya
extern int var_alfa —-à var_alfa telah disertakan
- static
Contoh :
static char jam; ——à variabel jam
- volatile
Contoh :
volatile unsigned char var_interrupt;
- register
Contoh :
void Count (void)
{register unsigned char counter asm(“r13”); -à mengubah register menjadi variabel
……………kode program…………..;
Asm volatile(“clr r13”);
……………kode program…………..;
}
- enumarasi
Contoh :
enum cewek {poppy, dessy, lulu, yanti};
Maka variabel cewek akan memiliki nomor urutan cewek[0] = poppy, cewek[1] = dessy, cewek[3] = lulu dan cewek[4] = yanti.
enum arah {kiri, kanan=7, belakang, depan}
Maka variabel arah akan memiliki nomor urut arah[0] = kiri, arah[7] = kanan, arah[3] = belakang dan arah[4] = depan.
- Array
Cara penulisan array satu dimensi :
Tipe_namadata_array [banyak_elemen] = data_array;
Cara penulisan array multi dimensi :
Tipe_namadata_array [banyak_elemen1] [banyak_elemen2] = {{data_elemen1},{data_elemen2}};
Contoh :
Array 1 dimensi untuk 5 data dari 0 hingga 4 :
char harga [5];
harga [0] = 25 ;
harga [1] = 35;
harga [2] = 45;
harga [3] = 40;
harga [4] = 30;
Atau bisa juga dengan cara lebih singkat yaitu :
char harga [5] = {25,35,45,40,30};
Deklarasi dengan menyuruh complier mencari sendiri banyaknya data array :
char harga [ ] = {25,35,45,40,30,43,55,65,34};
Array multi dimensi matrik 2 x 5 :
char harga [2] [5];
harga [0] [0] = 25 ;
harga [1] [1] = 35;
harga [2] [2] = 45;
harga [3] [3] = 40;
harga [4] [4] = 30;
dan seterusnya, atau dapat juga dengan mengunakan cara yang lebih ringkas :
char harga [2] [5] = {{25,35,45,40,30},{1,2,3,4,5}};
selain itu juga dikenal dengan istilah string yaitu kumpulan array dalam bentuk karakter.
Contoh string :
char say[ ] ={“hello semua”};
say[0] = “h”;
say[5] = “o”;
dan seterusnya
4. Bagian Prototype fungsi
Bagian prototype fungsi berguna untuk mendeklarasikan fungsi yang ditulis dibawah fungsi “main”. Jika kita membuat fungsi di atas fungsi “main” maka kita tidak usah mendeklarasikan fungsi tersebut, tetapi langsung tulis saja.
Cara Penulisan :
tipeDATA namaFUNGSI (TipeDATA,………….,………..);
atau
TipeDATA namaFUNGSI (TipeDATA namaPARAMETER,…..);
Tipe data di depan nama fungsi adalah tipe data output fungsi. Tipe daya di depan nama Parameteradalah tipe data input fungi.
5. Bagian fungsi utama (main)
Fungsi utama adalah fungsi pertama yang akan dieksekusi dengan urutan dari atas ke bawah dan akan loncat-loncat bergantung pada instruksi lompatan “goto” atau instruksi pemanggil fungsi atau terjadi interupsi jika fungsi interupsi diaktifkan.
Cara penulis pemanggilan fungsi dalam bahasa c:
Untuk fungsi tanpa nilai balik (output) dan tanpa parameter (input):
NamaFUNGSI();
Untuk fungsi dengan nilai balik (output) dan tanpa parameter (input):
Bariabel PENAMPUNG = NamaFUNGSI ();
Untuk fungsi dengan nilai balik (output) dan dengan parameter (input):
VariabelPENAMPUNG = NamaFUNGSI (variabel_atau_konstanta, ….. , ….. );
6. Bagian subprogram / fungsi
Fungsi yang telah diprototypekan ditulis di bawah fungsi “main”. Prototipe fungsi berguna untuk memudahkan programmer dalam penulisan program yang besar. Jika kita membuat banyak fungsi dan tanpa prototipe, maka harus ditulis di atas fungsi “mai” dan ini menyulitkan untuk dibaca dan diperbaharui sehingga kita butuh prototype fungsi.
Dalam penulisan program c sebebnarnya terbagi 2 kategori yaitu :
1. Kategori deklarasi
Deklarasi adalah membuat dan memberi tahu kepada comiler tentang sesuatu yang digunakan nanti dalam penulisan program agar digunakan semestinya dan tidak dianggap error atau asing.
Contohnya :
#include ……
#define …….
variabel glodal
2. Kategori pernyataan (statement)
Pernyataan adalah membuat instruksi-instruksi program dengan menggunakan keyword seperti instruksi operasi aritmatika, logika, operasi bit atau instruksi percabangan atau looping atau pembuatan suatu fungsi.
Tidak ada komentar:
Posting Komentar