i. Pengenalan Bahasa c

PENGENALAN BAHASA C Tutorial Embedded 1 Struktur Program C Struktur penulisan bahasa C secara umum terdiri atas 4 blok, yaitu

: a. Header. b. Deklarasi konstanta global (variabel). c. Fungsi &/ prosedur. d. Program utama. Secara umum pemrograman C paling sederhana dilakukan dengan hanya menuliskan program utamanya saja. Bentuk umum: Void main (void) { ....... (Program utama) } Contoh: # include <mega8535.h> Header # include <delay.h> unsigned char dt,xx; Deklarasi konstanta global (variabel) char buf [33]; unsigned char lampu (unsigned char bitn) Fungsi &/ { Prosedur PORTA = bit n & 0X3C; } void main (void) char data; PORTA = 0X00; PORTB = 0XFD; Program while (1) Utama { }; } Header: Berisikan include file <.h>, yaitu library/pustaka yang akan digunakan dalam pemrograman, biasanya berisikan dua buah pengarah, antara lain: 1. Pengarah pre-prosesor, yaitu digunakan untuk mendefinisikan prosesor yang digunakan, dalam hal ini untuk mendefinisikan mikrokontroler yang digunakan. Dengan pengarah preprosesor maka pendeklarasian register-register dan penamaannya dilakukan pada file lain yang disisipkan pada program utama. Bentuk umum: C o n t o h: # include <nama_prosesor> # include <mega8535.h> 2. Pengarah pustaka, digunakan untuk mendefinisikan pustaka yang digunakan. Pustaka berisikan perintah-perintah yang mengatur register-register. Bentuk umum: C o n t o h: # include <nama_prosesor> # include <delay.h> # include <stdio.h> # include <lcd.h>

Tipe Data: ada 13 tipe data yang digunakan pada compiler code vision AVR, antara lain: NO 1 2 3 4 5 6 7 8 9 10 11 12 13 TIPE Bit Char Unsigned Char Signed Char Int Short int Unsigned int Signed int Long int Unsigned Long int Signed Long int Float Double Size (Bits) 1 8 8 8 16 16 16 16 32 32 32 32 32 Range 0 &/ 1 -128 s/d 127 0 s/d 255 -128 s/d 127 -32768 s/d 32767 -32768 s/d 32767 0 s/d 65535 -32768 s/d 32767 -2147483648 s/d 2147483647 0 s/d 4294967295 -2147483648 s/d 2147483647 ± 1,175e-38 s/d ± 3,402e38 ± 1,175e-38 s/d ± 3,402e38 Nb: e-38 = x 10-38

Konstanta: Penulisan konstanta pada bahasa C, sebagai berikut: a. Integer / Long Integer; dapat ditulis dengan format desimal, biner (dgn awalan 0B), Hexa (awalan 0X), Oktal (awalan O). C o n t o h: Decimal : 1234 Biner : 0B 0011 0110 Hexa : 0XFF Oktal : O7777 b. Unsigned int; dapat ditulis dengan akhiran U. C o n t o h: 9535U c. Long int; dapat ditulis dengan akhiran L. C o n t o h: 9535L d. Unsigned Long int; dapat ditulis dengan akhiran UL. C o n t o h: 9535UL e. Floating point; dapat ditulis dengan akhiran F. C o n t o h: 9535F f. Character; ditulis dengan menggunakan tanda kutip. C o n t o h: ‘a’ untuk karakter 1 huruf/angka. “makan malam” jika dalam bentuk kata atau lebih dari 1 huruf/angka.

Label, Variabel, Fungsi: Identifikasi laber, variabel, dan fungsi dapat berupa huruf, angka dan juga underscore (_), akan tetapi identifikasi hanya dapat dimulai dengan huruf/karakter underscore, dan yang lebih penting lagi bahwa identifikasi ini CHASE SENSITIVE, paling banyak (Max. 32) karakter.

Komentar: Komentar diawali dengan tanda /* dan diakhiri */ Contoh: /* Ini komentar saya */ => satu baris /* Ini komentar Punya saya */

=> dua baris

Komentar dapat juga ditulis dengan tanda // Contoh: // Komentar dari saya

Reserved Keyword: Kata baku yang tidak dapat dipakai baik untuk label, identifikasi/variabel. Ada 39 kata “Reserved Keyword”, antara lain: Break Double Funcused Return Typedef Bit Eeprom Goto Short Union Case Else if Signed Unsigned Char Enum Inline Sizeof Void Const Extern int sfrb Volatile Continue Flash Interrupt sfrw While Default Float Long Static Switch Do For Register Struct Operator: Suatu symbol yang menyatakan operasi mana yang akan dilakukan oleh operand. Operand; variabel/konstanta yang merupakan bagian dari pernyataan. Contoh: C=A+B => Operator: (=) & (+) Operand: (C , A , B) Operator dalam bahasa C dibagi menjadi 3 kelompok, yaitu: a. Unary; Operasi pada satu operand b. Binary; Operator pada dua operand c. Thernary; Operator yang memerlukan 3 atau lebih operand A r i t m a t i k a: NO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Symbol + ++ -* / % = += -= *= /= %= * Contoh C=A+B C=A-B ++i --i C=A*B C=A/B C=A%B A=B A += 2 => A = A + 2 A -= 2 => A = A - 2 A *= 2 => A = A * 2 A /= 2 => A = A / 2 A %= 2 => A = A % 2 *Pointer => *A Keterangan Penjumlahan Pengurangan Increment (+ 1 bit) Decrement (- 1 bit) Perkalian Pembagian Sisa hasil bagi (MOD) Pemberian nilai Penambahan/pengurangan/perkalian... suatu nilai pada suatu variabel yang sudah ada sebelumnya.

Contoh:

-n A+B A = (B * C) / D

Menunjukkan isi dari suatu pointer

L o g i k a: NO 1 2 3 4 5 6 7 8 9 Symbol == != < <= > >= ! && || Contoh If ( a == b) If ( a != b) If ( a < b) If ( a <= b) If ( a > b) If ( a >= b) If ( !a ) If ( a == b && a == c) If ( a == b || a == c) Keterangan Menghasilkan TRUE jika a=b Menghasilkan TRUE jika a≠b Menghasilkan TRUE jika a<b Menghasilkan TRUE jika a≤b Menghasilkan TRUE jika a>b Menghasilkan TRUE jika a≥b NOT AND OR

Manipulasi Bit: NO 1 2 3 4 5 6 Symbol ~ & | ^ << >> Contoh A=~B C=A&B C=A|B C=A^B C = <<n C = >>n Keterangan Komplement Ex. A=1101 maka B=0010 AND Ex. A=1100 ; B=0101 maka C=0100 OR Ex. A=0011 ; B=1010 maka C=1011 XOR Ex. A=1100 ; B=0101 maka C=1001 Shift Left (SHL) Ex. A=0111 n=2 maka C=1100 Shift Right (SHR) Ex. A=1101 n=3 maka C=0001

PERCABANGAN if: Pernyataan akan dijalankan apabila kondisi terpenuhi. Bentuk umum: C o n t o h: if (kondisi) if (a < 0X50) { { //pernyataan PORTC = 0XDE; }; }; if-else: Pernyataan-1 akan dijalankan apabila kondisi terpenuhi, tetapi jika tidak maka menjalankan pernyataan ke-2. Bentuk umum: C o n t o h: if (kondisi) if (a >= 0XFC) { { //pernyataan1 PORTC = 0XBB; } } else else { { //pernyataan2 PORTC = 0XAE; }; }; switch case: Akan menjalankan pernyataan sesuai dengan input pada switch. Bentuk umum: C o n t o h: switch (ekspresi) switch (a) { { case konstanta 1:pernyataan 1;break; case 1: PORTC = 0XDE;break; case konstanta 2:pernyataan 2;break; case 2: PORTC = 0XBB;break; ...... case 3: PORTC = 0XAE;break; case konstanta n:pernyataan n;break; }; };

switch case default: Akan menjalankan pernyataan sesuai dengan input pada switch dan jika tidak sesuai maka menjalankan pernyataan default. Bentuk umum: C o n t o h: switch (ekspresi) switch (a) { { case konstanta 1:pernyataan 1;break; case 1: PORTC = 0XDE;break; case konstanta 2:pernyataan 2;break; case 2: PORTC = 0XBB;break; ...... case 3: PORTC = 0XAE;break; case konstanta n=pernyataan n;break; default: PORTC = 0X68; default : pernyataan default; }; }; PERULANGAN for: Bentuk umum: For (mulai; kondisi; penambahan atau pengurangan) { //pernyataan }; Contoh: A=1 for (i=1; i<5; i++) { A = A * 2; PORTC = A; }; while: Bentuk umum: while (kondisi) { //pernyataan }; Contoh: i=1 A=1 while (i<5) { A = A * 2; PORTC = A; i++; }; do-while: Bentuk umum: do { //pernyataan } While (kondisi);

Contoh: i=1 A=1 do { A = A * 2; PORTC = A; i++; } While (i<5); Konversi Pola: Karakter %_ dipakai sebagai operator konversi pola. Konversi pola akan sangat berguna pada saat kita ingin menampilkan hasil ke LCD, antara lain: a. %d, yaitu untuk menampilkan bilangan bulat positif (+). b. %o, yaitu untuk menampilkan bilangan oktal bulat. c. %x, yaitu untuk menampilkan bilangan hexa bulat. d. %u, yaitu untuk menampilkan bilangan desimal tanpa tanda. e. %f, yaitu untuk menampilkan bilangan pecahan. f. %i, yaitu untuk menampilkan bilangan integer. Contoh a – f: sprintf (buf, “Angka %d”,14); output: Angka 14 g. %c, yaitu untuk menampilkan karakter kode ASCII. Contoh g: sprintf (buf, “huruf %c”, a); output: huruf 61 Prosedur & Fungsi: untuk menghemat memory. 1. Prosedure: Suatu kumpulan instruksi untuk mengerjakan suatu keperluan tertentu tanpa mengembalikan suatu nilai. Bentuk umum: void nama_prosedur (parameter1, parameter2, ....., parametern) { //pernyataan }; Contoh: void delay (unsigned char i) { While (i--) { #asm nop nop #endasm }; }

2. Fungsi: Suatu kumpulan instruksi untuk mengerjakan suatu keperluan tertentu dengan hasil akhir pengembalian nilai dari keperluan tersebut.

Bentuk umum: type data nama_fungsi (parameter1, parameter2, ....., parametern) { //pernyataan return variabel_hasil }; Contoh: int luas (int pj, int lb) { luas = pj * lb; return luas; }; In Line Assembly: Memasukkan program bahasa assembler ke dalam bahasa C. Bentuk umum: C o n t o h: # asm # asm ..... mov PA, 0011 # endasm nop # endasm Atau dapat menggunakan: # asm (“.....\.....”) Pernyataan Kendali: 1. Break: Pernyataan ini akan menghentikan atau menyebabkan keluar dari suatu blok program. 2. Continue: Pernyataan ini akan menyebabkan kendali melakukan kembali proses perulangan dari awal. 3. Go to_label: Pernyataan ini akan melakukan proses pada tabel yang dituju.

Sign up to vote on this title
UsefulNot useful