dasar c avr

15
Dasar C AVR Codevision 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 , misal : #include <sddio.h> #include “file_header_saya.h” Mengganti text atau mendefinisikan macro, misal #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

Upload: fhariedzt-syauqie

Post on 26-Nov-2015

9 views

Category:

Documents


4 download

TRANSCRIPT

Dasar C AVRCodevision

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 DIRECTIVEPreProsessor 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 , misal :

#include #include file_header_saya.h

Mengganti text atau mendefinisikan macro, misal

#define BAUD_RATE 9600,#define JUMLAH(a,b) a+b

set up pengkondisian kompilasi , misal

#if BUFFER_SIZE < 256char index ;#elseint 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

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.

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

dostatement;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,AND 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 dariblok 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), bedanyacontinue akan memulai loop lagi, dari atas, sedangkan break memaksa keluar dari loop / pengulangan .contoh1

2

3

4

5

6

7

8

9

10

11

12#include "stdio.h"

int main(void){int i;for(i; i>=7; i++){if(i==3)continue;printf(%d, i )}}

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 menggunakanoperator 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 =

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

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

PORTB = 035 & 0x0F;PORTC = 035 | 0x0F;PORTD = 035 ^ 0x0F;PORTB = ~055;while(1){ }

Operator geser bit

Geser kiri contohunsigned char X = 2 // 2 dalam biner =0000 0010unsigned 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 + 3b -= 3; artinya b = b 3c *= 3; artinya c = c * 3d /= a; artinya d = d / aa |= 3; artinya a = a OR 3b &= 3; artinya b = b AND 3c ^= 3; artinya c = c ^ 3PORTD &= 3; artinya PORTD = PORTD & 3

kondisonal Expressi

if(expression_A)expression_B;elseexpression_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 bisadipakai 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 fungsiberikut 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 inivoid 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 fungsiint fungsiku(int, int);int var1, var2, var3; // deklarasi global variablevoid main(void) // main{var3 = fungsiku(&var1,& var2);}//deklarasi fungsiint 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 *.libFile header ini hanya berisi prototype-prototype fungsimberikut 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 intint *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

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

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

}//definisi fungsi jumlah dengan parameter// berupa pointer *var1 dan *var2int 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 padamikrokontroler 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 FUNCTIONputs(),put stringprintf(), print formattedsprintf(), print string formattedputsf(),put string FLASH

contohTYPE MEMORY

ARRAY

STRUCTUR DAN UNION

I/O OPERATION

TIMER/COUNTERADCRESET DAN INTERRUPSI

SERIAL COMMUNICATION

I2CSPI