Anda di halaman 1dari 12

Dasar Pemrograman bahasa C dengan

CodeVision AVR
4 Februari 2015 hendril satrian purnama learningcvavr, programming, tutorial

Sebelum kita masuk ke materi Tutorial Pembuatan Project menggunakan CV-AVR, sebaiknya
kita pahami dulu dasar-dasar pemrogramanya. Lets check it out!

Semua bahasa perograman terdiri dari:

1. ekspresi
2. statemen
3. blok statemen
4. blok fungsi

Ekspresi adalah kombinasi operand dan operator contoh 2+3 , X > Y dst… 2,3,X dan Y
adalah operand sedangkan + dan > adalah operator .
Statemen adalah instruksi lengkap dalam bahasa C diakhiri dgn tanda ; (titik koma) contoh
: A= 2+3;

PREPROCESSOR DIRECTIVE
PreProsessor Directive melakukan arahan sebelum proses (compile), maksudnya adalah sebelum
code program bahasa C dicompile maka ada proses yg harus dilakukan oleh preprosesor
directive (#define, #include, #pragma dll) antara lain

 Menggabungkan file header , missal:

#include <sddio.h>
#include “file_header_saya.h”

 Mengganti text atau mendefinisikan macro, missal:

#define BAUD_RATE 9600,


#define JUMLAH(a,b) a+b

 set up pengkondisian kompilasi, misal:

#if BUFFER_SIZE < 256


char index ;
#else
int index ;
#endif
Karena preprosessor directive bukan bagian dari bahasa C maka tidak diakhiri tanda ; (titik
koma).

VARIABLE DAN KONSTANTA

 Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah. variable
disimpan di RAM
 Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah setelah
program di compile. Konstanta disimpan di memory program.

VARIABLE SCOPE


o Global variable dan constant dapat diakses di seluruh bagian program.

 Local variable dan constant hanya dapat diakses didalam fungsi tempat
dideklarasikannya.

Type Variable

Karena memori microcontroller relatif terbatas maka kita harus menghemat dgn menggunakan
type memory yg sesuai kebutuhan. misalnya jika kita menggunakan sebuah variable yg nilainya
maksimum 100 maka gunakanlah type data char atau unsigned char. kita bisa saja menggunakan
type int tapi ini suatu pemborosan karena type int 16 bit sedangkan type char hanya 8 bit.
Menyimpan Variable di EEPROM

Jika kita ingin variable yg kita simpan tidak hilang ketika power dimatikan tapi kita masih bisa
merubah nilai variable ketika program berjalan maka kita menyimpan variable tsb di lokasi
memory EEPROM. format menyimpan variable ke EEPROM adalah sbb;

eeprom type-variable namavariable;

contoh eeprom int dataku;

CONTROL STATEMENT

 While Loop

while (expression) //selama expresi bernilai true laksanakan perulangan blok statemen
dibawahnya.
{
statement1;
statement2;
…..
}

atau jika satement hanya 1 baris statement tdk perlu di berikurung { }

while(expression)
statement;

 Do/While Loop

do //jalankan statement dibawah ( minimal 1 kali perulangan dilaksanakan) ,


{
statement1;
statement2;

}
while (expression); // jika ekspresi true , jalankan kembali perulangan.

atau jika satement hanya 1 baris

do
statement;
while (expression);

 For Loop
for (expr1; expr2; expr3) //laksanakan perulangan sebanyak expr2 dimulai dari expr1.
{
statement1;
statement2;

}

atau jika satement hanya 1 baris

for(expr1; expr2; expr3)


statement;

 If/Else

if (expression) //jika ekspresi bernilai true laksanakan blok statemen dibawahnya


{
statement1;
statement2;

}

atau jika satement hanya 1 baris

if(expression)
statement;

 SWITCH/CASE

switch (expression)
{
case const1:
statement1;
statement2;

case const2:

statement3;

statement4;
case constx:
statement5;
statement6;
default:
statement7;
statement8;
}

BREAK, CONTINUE, GOTO.

break, continue, & goto statements digunakan untuk merubah alur eksekusi untuk statement
pengulangan for, while, do/while, and switch .

 Break

break statement digunakan untuk keluar dari pengulangan for, while, do/while, atau switch .
break keluar dari blok pengulangan dimana dia berada saja.

 Continue

continue akan menyebabkan program memulai iterasi berikutnya dari statemen pengulangan
while, do/while, atau for loop. continue sama seperti break pengulangan akan berhenti pada
point yg dituju (di skip), bedanya continue akan memulai loop lagi, dari atas, sedangkan break
memaksa keluar dari loop / pengulangan .contoh

1
#include “stdio.h”
2
int main(void)
3
{
4
int i;
5
for(i; i>=7; i++)
6
{
7
if(i==3)
8
continue;
9
printf(%d, i )
10
}
11
}
12
maka yg di tampilkan 1 2 4 5 6 , angka 3 tidak ditampilkan.
OPERATOR DAN EXPRESSI

 Operator Penugasan ( “=” )

Setelah variabel telah dideklarasikan, operasi dapat dilakukan pada variable


menggunakan operator penugasan (=). Sebuah nilai yang diberikan untuk variabel dapat berupa
sebuah konstanta, variabel, atau ekspresi. Sebuah ekspresi dalam bahasa C adalah kombinasi dari
operan (pengidentifikasi) dan operator. operaor penugasan antara lain sebagai berikut:

Variable = nilai , contoh nilai_max = 10;

 Operator relasional

sama dengan ==
tdk sama dengan !=
lebih kecil <
lebih kecil atau sama dengan <=
lebih besar >
lebih besar atau sama dengan >=

 Operator Arithmetic :

 Operator Logika

AND &&
OR ||

Operator logika dan relasional semua operator biner tetapi hasil TRUE atau FALSE. TRUE
diwakili oleh nilai “bukan nol”, dan FALSE dengan nilai nol.

misal x = 5 , y = 3;
(x && y) bernilai TRUE, sebab kedua duanya bukan nol.
(x & y) bernilai FALSE, sebab 101b & 010b = 0.
(x || y) bernilai TRUE, sebab salah satunya bernilai bukan nol
(x | y) bernilai TRUE, sebab 101b & 010b = 111 (bukan nol).
ingat hasil logika NOL =FALSE..!

 bit wise operator

contoh tabel bit wise operator dgn input bit A dan B

contoh operasi bilangan 35H di “AND” kan dgn 0FH

#include <stdio.h>

int main(void)
DDRB = 0xFF;
DDRC = 0xFF;
DDRD = 0xFF;

PORTB = 0x35 & 0x0F;


PORTC = 0x35 | 0x0F;
PORTD = 0x35 ^ 0x0F;
PORTB = ~0x55;
while(1)
{}
 Operator geser bit

Geser kiri <<


contoh
unsigned char B = 2 // dalam biner 0000 0010
unsigned char C;
C = B << 1; // C = 7 dalam biner = 0000 0100

Geser kanan >>


contoh
unsigned char X = 2 // 2 dalam biner =0000 0010
unsigned char Y;
Y = X >> 1; // Y= 1 dalam biner= 0000 0001

 increment

++variable atau variable++ artinya variable=variable+1 ,

misal ++X atau X++ artinya X = X+1

perbedaaanya adalah untuk ++X , tambahkan dulu nilai X dgn 1 baru di proses baris kode tsb,
sedangkan X++ , proses dulu baris code baru tambahkan nilai X dgn 1

 deccrement

–variable atau variable– artinya variable=variable-1 ,

misal –Y atau Y– artinya Y = X-1

perbedaaanya adalah untuk –Y , kurangi dulu nilai Y dgn 1 baru di proses baris kode tsb,
sedangkan Y– , proses dulu baris code tsb baru kurangi nilai Y dgn 1

 Compound

compound digunakan hanya untuk menyingkat baris expresi saja contoh nya sbb

a += 3; artinya a = a + 3
b -= 3; artinya b = b – 3
c *= 3; artinya c = c * 3
d /= a; artinya d = d / a
a |= 3; artinya a = a OR 3
b &= 3; artinya b = b AND 3
c ^= 3; artinya c = c ^ 3
PORTD &= 3; artinya PORTD = PORTD & 3

 kondisonal Expressi
if(expression_A)
expression_B;
else
expression_C;

baris kode diatas bisa digantikan oleh kondisional expressi:

expression_A ? expression_B : expression_C;

contoh : (A > 10) ? x = 5 : x =22;


kondisional expresi diatas artinya sama dengan :
IF(A>10)
{
x=5;
}
Else
{
x= 22
}

..

FUNGSI

yang dimaksud fungsi adalah sebuah blok statement yg melaksanakan tugas tertentu dan
bisa dipakai lebih dari 1 kali di dlm program. program bahasa C terdiri dari fungsi fungsi dan
sebuah program c minimal terdiri dari 1 fungsi . fungsi Main() dijalankan pertama kali saat
program dijalankan. fungsi terdiri dari dua bagian utama yaitu kepala fungsi dan blok
fungsi berikut ini bentuk umum sebuah fungsi adalah :

type name_fungsi (type paramameter)


{

statement

kepala fungsi terdiri dari type return value, nama fungsi , types dan nama parameter(jika ada) .
Statement di block fungsi menyatakan apa yg fungsi harus lakukan.
jika return value atau parameter tdk ada maka typennya ditulis void seperti dibawah ini
void namefungsi (void)
{

statement
}
PROTOTYPE FUNGSI

seperti variable fungsi juga mesti diberitahukan ke kompiler sebelum dipangggil di dlm
program. caranya yaitu dengan membuat prototype fungsi dan deklarasi fungsi seperti contoh
berikut:

// prototype fungsi

int fungsiku(int, int);

int var1, var2, var3; // deklarasi global variable

void main(void) // main

var3 = fungsiku(&var1,& var2);

//deklarasi fungsi

int fungsiku(int x, int y)

return

LIBRARY FUNGSI

compiler C menyediakan sebagian fungsi fungsi yang siap kita pakai, prototype fungsi fungsi
tsb disimpan di file header (*.h) sedangkan deklarasi fungsinya ada di file lain biasanya di file
berextensi *.lib

File header ini hanya berisi prototype-prototype fungsim berikut contoh isi file header stdio.h ,
char getchar(void);
void putchar(char c);
void puts(char *str);
void putsf(char flash *str);
void printf(char flash *fmtstr,…);
dst….

deklarasi fungsi fungsi di atas ada di file stdio.lib


Membuat/menambahkan library fungsi sendiri.

selain kita menggunakan fungsi fungsi di libray fungsiyg sudah disediakan oleh IDE
codevisonavr kita juga bisa membuat/menambahkan fungsi library sendiri adapun caranya
dibahas disini

POINTER

Pointer adalah variable yg berisi alamat atau lokasi variable , konstanta atau fungsi.
sebuah variable dijadikan pointer dgn menambahkan operator * didepannya.

int *P artinya pointer P menunjuk ke sebuah data bertype integer.


char *X artinya pointer X menunjuk ke sebuah data bertype char.

contoh :

int var1 : var1 adalah variable bertype int


int *p : p adalah pointer ke variable bertype int

supaya pointer p menunjuk ke var1 , kita harus memberikan alamat var1 ke pointer p dgn cara:

p = &var1 ( &var1 artinya alamat var1 )

jadi sekarang pointer p merujuk ke var1 penulisannya:

*p = var1

sekarang kita lihat contoh fungsi dengan parameter pointer

#include
int var1,var2,var3;
int jumlah(*var1, *var2,); // prototype fungsi jumlah

main()
{
// nilai yg dibeikan ke parameter adalah
// alamat variable var1 dan var2
var3 = jumlah(&var1, &var3);

}
//definisi fungsi jumlah dengan parameter
// berupa pointer var1 dan *var2
int jumlah(var1, *var2,);
{
return var1 + var2
}
FUNGSI STDANARD INPUT DAN OUTPUT

Fungsi standar I/O bahasa C covisionAVR di sini diadaptasi dari standar ANSI-C digunakan
pada mikrokontroler dengan sumber daya yang terbatas.

perbedaan fungsi standar I/O pada ANSI-C dan CcodevisonAVR adalah jika pada ANSI-
C input outputnya berupa keyboard dan layar monitor sedangkan pada c codevision
input outputnya berupa serial port ,LCD , i/o pin dll

CHARACTER INPUT/OUTPUT FUNCTION


– getchar( )
– putchar( )

STANDARD OUTPUT FUNCTION


puts(), put string
printf(), print formatted
sprintf(), print string formatted
putsf(), put string FLASH

Anda mungkin juga menyukai