Dasar C AVR Codevision

( untuk pemula bisa belajar  memprogram micro dgn  C melalui DVD tutorial step by step
https://pccontrol.wordpress.com/source-code-dan-video-tutorial/   )

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

#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

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

typedata

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,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 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 

#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 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 :

aritmetikoperator

  • 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

bitwiseoperator

contoh tabel bit wise operator dgn input bit A dan B

operasilogika

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

contohand

#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

 contoh


TYPE MEMORY

ARRAY

STRUCTUR DAN UNION

I/O OPERATION

TIMER/COUNTER

ADC

RESET DAN INTERRUPSI

SERIAL COMMUNICATION

I2C

SPI

  1. PortC=0b01010101;
    Delay_ms (500);
    PortC=0b10101010;
    Delay_ms (500);

  2. pusing aq bacanya

Komentar ,Saran atau Pertanyaan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: