BAHASA C CodeVisionAVR (CVAVR)

dokumen-dokumen yang mirip
Dasar Pemrograman Mikrokontroler dengan Bahasa C

DASAR PEMROGRAMAN C UNTUK MIKROKONTROLER

Pencipta bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada. sekitar tahun C adalah bahasa pemrograman terstruktur, yang membagi

Tipe Data dan Operator

Bahasa C-M6 By Jamilah, Skom 1

BAHASA PEMROGRAMAN C

INSTRUKSI. TTH2D3 Mikroprosesor

Chapter 1 KONSEP DASAR C

Achmad Solichin.

PRAKTIKUM 2. perubah (variabel), konstanta, fungsi, atau obyek lain yang didefinisikan oleh

Struktur Program Bahasa C

Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs.

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

3. Elemen Dasar C++ S. Indriani S. L., M.T L.,

Tipe Data, Variabel, Input/Output

Algoritma & Pemrograman

Pengenalan Bahasa C. 1. Struktur penulisan program. #include < [library2.h] > #define [nama2] [nilai] ;

BAB 2 LANDASAN TEORI. Mikrokontroler AVR (Alf and Vegard s RISC Processor) dari Atmel ini

P 4 Bab 3 : Dasar Pemrograman C

Dasar Pemrograman C. Hendawan Soebhakti. Oktober 2009

Desain dan Analisis Algoritma. Pengenalan Bahasa C. I Ketut Resika Arthana, S.T., M.Kom.

KONSEP DASAR BAHASA C

SUMBER BELAJAR PENUNJANG PLPG

Universitas Komputer Indonesia. Pemrograman dengan C++ Builder 2004 Taryana S.

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

Pengenalan C++ Oleh : Dewi Sartika

Pendahuluan Pemrograman Mikrokontroler

ELEMEN DASAR C++ C++ mempunyai cara untuk menyatakan karakter-karakter yang tidak mempunyai kode tombol (seperti karakter tombol) misalnya \n.

BAB II VARIABEL DAN TIPE DATA

2 TIPE DATA DAN VARIABEL

Identifier dan Tipe Data

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

BAB II STRUKTUR BAHASA C

1. Joko Priyanto ( ) 2. Astriyer J. Nahumury ( ) 3. Rico N. Tubalawony ( ) 4. Heberson Pakpahan ( ) 5.

Pemrograman I Bab III Tipe Data, Variabel, dan Operasi Perhitungan. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia

Turbo C adalah tool yang dipakai untuk membuat code program dalam bahasa C ataupun C++. Berikut adalah jendela utama Turbo C

Tipe Data, Identifier, Operator dan Control Statement

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :

Chapter 2 Tipe Data, Identifier, Operator dan Control Statement

1.1. Sejarah Bahasa C

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Variable. Variable (cont) Variable (cont) Tipe Data

Elemen Dasar Dalam Bahasa Java

MODUL DUA VARIABEL DAN TIPE VARIABEL

Keyword,Tipe data & Variabel. Keywords pada c Tipedata Variabel Konstanta

Java Basic. Variabel dan Tipe Data. Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai)

BUKU PETUNJUK PRAKTIKUM DASAR ALGORITMA DAN PEMROGRAMAN

Pengenalan bahasa C. membutuhkan kecermatan yang teliti bagi pemrogram karena perintahnya harus

Komentar, Identifier, Konstanta dan Variabel

Part 2 - Algoritma & Pemrograman Konsep dasar Pemrograman

DASAR PEMOGRAMAN JAVA

Modul 1 Dasar Dasar Bahasa Pemrograman C

Konsep Dasar Pemrograman Dan Pengenalan C++

PANDUAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN

MODUL PRAKTIKUM BAHASA PEMROGRAMAN DASAR (PG168)

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2

OPERASI PERNYATAAN KONDISI

elemen Dasar Bahasa Pemrograman C

1.4 Struktur Program Pada C++ Program C maupun C++ secara umum tersusun dari beberapa bagian utama, yaitu :

Bab 2. Dasar-Dasar Pemrograman C

Tipe Data Dasar. Data bisa dinyatakan dalam bentuk konstanta atau variabel.

Tipe Data Dasar. Berdasarkan jenisnya, data dapat dibagi menjadi lima kelompok dinamakan tipe data dasar, yaitu:

Tipe Data dan Variabel

BAB II LANDASAN TEORI. dikembangkan pada tahun 1996 oleh dua orang mahasiswa Norwegian Institute of

Imam Fahrur Rozi. Algoritma dan Pemrograman. Pengantar C++

BAB 4 PENGENALAN BAHASA C

MATA KULIAH : LOGIKA DAN ALGORITMA KONSEP DASAR ALGORITMA

C Programming (re-view)

Bahasa C, pada awalnya dirancang sebagai bahasa pemrograman yang dioperasikan pada sistem operasi UNIX.

VARIABEL & TIPE DATA PEMROGRAMAN C++

OPERATOR-OPERATOR DALAM JAVA

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

Pengenalan Bahasa C week 1

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

Dasar Pemrograman Java

.::BAB II.::MENGENAL PASCAL

Elemen Bahasa Pemrograman. Aditya Rizki Yudiantika, M.Eng.

T I P E D A T A P R I M I T I F V A R I A B E L D A N S T A T E M E N P E N U G A S A N E K S P R E S I D A N O P E R A T O R A R I T M A T I K A

BAB II LANDASAN TEORI. Remote TV adalah suatu pengontrol, yang fungsinya untuk merubah dan

KEGIATAN BELAJAR 3 PEMPROGRAMAN DASAR

Dasar-dasar Pemrograman C DASAR PEMROGRAMAN & ALGORITMA

MODUL 1 Alur Seleksi dengan C++

Algoritma & Pemrograman #3

BAB II LANDASAN TEORI

Tipe bentukan dan pointer selanjutnya akan kita pelajari pada modul pemrograman 1 (akhir semester).

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

DASAR PEMROGRAMAN. PENGENAL dan VARIABEL

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

Data bisa dinyatakan dalam bentuk konstanta atau variabel.

JAVA BASIC PROGRAMMING Joobshet

Badiyanto, S.Kom., M.Kom. PBO java

Bahasa Pemrograman SAHID CHESTERLIZER.

Modul IV Pemrograman Bahasa C ( bagian I )

Dasar Pemrograman Komputer [TKL-4002] 2010

AP 2B: PENGENALAN PADA C++ Isram Rasal S.T., M.M.S.I, M.Sc. Program Studi Teknik Informatika Fakultas Teknologi Industri Universitas Gunadarma

DASAR PEMROGRAMAN. PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom

BAHASA C. VERSI C: Kernighan and Richie C (K&R C) ANSI C C++ C# Java

PENGENALAN KONSEP PEMROGRAMAN. (dalam bahasa C)

Transkripsi:

BAHASA C CodeVisionAVR (CVAVR) mohammad iqbal iqbal.umk@gmail.com Teknik Elektro Universitas Muria Kudus

Mengapa Bahasa C Bahasa C lebih mudah dan membutuhkan waktu cepat dibandingkan assembly. Walaupun ukuran file HEX bahasa assembly yang dihasilkan lebih kecil dibanding yang dihasilkan C tapi pemrograman pada Assembly language lebih membosankan (tedious) dan membutuhkan waktu lama. C lebih mudah dimengerti dan dimodifikasi. Dapat menggunakan code yang tersedia dalam fungsi pustaka. Code C lebih fleksibel pada mikrokontroler dengan modifikasi sedikit atau tanpa sama sekali

UMUM Pada dasarnya bahasa pemrograman C untuk mikrokontroler sama dengan bahasa pemrograman C untuk desktop, akan tetapi ada sedikit perbedaan pada proses pengaksesan register dan memori yang digunakan di dalam pemrograman mikrokontroler.

Example Code

Pengenalan CVAVR Pengenal (identifier) Tipe Data Variabel Konstanta Komentar Preprosesor Pernyataan Operator Operator Aritmatika Operator Relasional Operator Logika Operator Bit Fungsi Pustaka Pernyataan If Pernyataan If... Else Pernyataan If Bersarang Pernyataan Switch Pernyataan While Pernyataan Do... While Pernyataan For Fungsi Bentuk Dasar Bahasa C Pemangilan Bahasa Assembler

PENGENAL (IDENTIFIER) Nama yang didefinisikan oleh pemprogram untuk menunjukkan identitas sebuah konstanta, variabel, fungsi, label, atau tipe data khusus. Penamaan identifier harus memenuhi syarat sebagai berikut: Nama variabel tidak boleh diawali dengan angka Nama variabel harus diawali dengan huruf atau garis bawah, selanjutnya dapat diikuti huruf maupun angka, atau garis bawah Nama variabel tidak boleh menggunakan operator aritmatika Nama variabel tidak boleh menggunakan operator aritmatika dan karakter-karakter khusus seperti@,%,*, dan sebagainya Tidak boleh menggunakan spasi, jika variabel terdiri dari dua kata diperbole hkan menggunakan tanda garis bawah Tidak boleh menggunakan kata kunci (key word) dari bahasa pemrograman C, seperti: void, main, int, if, while, dan sebagainya (reserved word). Variabel bersifat case sensitive, yaitu antara huruf besar dan huruf kecil dibedakan

Reserved Word eeprom flash interrupt task _Bool break bit bool case char const continue default defined do double eeprom else enum extern flash float for goto if inline int interrupt long register return short signed sizeof sfrb sfrw static struct switch typedef union unsigned void volatile while

TIPE DATA Tipe data yang dikenali oleh compiler CodeVisionAVR

VARIABEL Variabel merupakan tempat menyimpan data di dalam memori yang isinya dapat diubah. Pendeklarasian konstanta : Tipe_data nama_variabel = nilai, contoh: char datasensor = 0x20; Variabel dibagi menjadi dua bagian, yaitu: Variabel Global Variabel Global variabel yang dapat dikenali oleh semua fungsi yang ada di dalam program dan selalu dideklarasikan di luar fungsi. contoh: char hasil; Variabel Lokal Variabel yang hanya dapat dikenali oleh fungsi tertentu. Dideklarasikan hanya di dalam fungsi tertentu saja, contoh : void main(void) Char data1 = 0xFF; }

KONSTANTA Konstanta merupakan sebuah tempat untuk menyimpan data di dalam memori dimana data dari konstanta tidak dapat diubah. Pendeklarasi konstanta: const tipe_data nama_konstanta = Nilai; contoh: const char nilai_max = 0xFF;

KONSTANTA Integer or long integer constants may be written in decimal form (e.g. 1234), in binary form with 0b prefix (e.g. 0b101001), in hexadecimal form with 0x prefix (e.g. 0xff) or in octal form with 0- prefix (e.g. 0777). Unsigned integer constants may have the suffix U (e.g. 10000U). Long integer constants may have the suffix L (e.g. 99L). Unsigned long integer constants may have the suffix UL (e.g. 99UL). Floating point constants may have the suffix F (e.g. 1.234F). Character constants must be enclosed in single quotation marks. E.g. 'a'. Literal string constants must be enclosed in double quotation marks. E.g. "Hello world".

KOMENTAR Tulisan yang tidak dianggap sebagai bagian dari program sehingga tidak akan dieksekusi oleh compiler Digunakan sebagai penjelas, informasi ataupun keterangan dari program yang dibuat untuk mempermudah memahami program Untuk membuat komentar satu baris digunakan tanda // atau atau untuk beberapa baris digunakan tanda /* dan diakhiri dengan */. Contoh: // This is also a comment /* This is a comment */ /* This is a multiple line comment */

PREPROSESOR Untuk mendeklarasikan atau mendefinisikan prosesor yang digunakan di dalam program Dalam pemrograman mikrokontroler preprosesor digunakan untuk mendeklarasikan jenis dari mikrokontroler yang akan digunakan. Dengan preprosesor ini maka pendeklarasian registerregister dan penamaannya dilakukan oleh file lain. Cara penulisan: #include <nama_preprosesor> Contoh : #include <mega8535.h>

PERNYATAAN Satu buah atau satu blok instruksi lengkap yang berdiri sendiri. Blok instruksi diapit dalam tanda kurung kurawal } Contoh instruksi tunggal: PORTA = 0xF0; Contoh blok instruksi: PORTB =0x00; PORTC = 0xFF; }

OPERATOR Simbol khusus yang merepresentasikan perhitungan sederhana seperti penambahan dan perkalian. Nilai yang digunakan oleh operator disebut operand. Ekspresi merupakan kombinasi dari operand dan operator

Operator Aritmatika Operator aritmatika adalah operator yang digunakan untuk melakukan perhitungan aritmatika.

Operator Relasional disebut juga operator pembanding adalah operator yang digunakan untuk membandingkan 2 buah data Hasil perbandingan dari 2 buah ata berupa pernyataan benar ( 1 ) atau salah ( 0 ) tidak berupa hasil yang lain.

Operator Logika digunakan untuk membentuk suatu logika atau dua buah kondisi atau lebih.

Operator Bitwise

Operator Unary

FUNGSI PUSTAKA Bahasa CVAVR memiliki sejumlah fungsi pustaka yang berada pada file-file tertentu Disediakan untuk menangani berbagai hal dengan cara pemangilan fungsi-fungsi yang telah dideklarasikan di dalam file tersebut. Sintaks untuk menggunakan fungsi pustaka adalah sebagai berikut: #include <nama_fungsi_pustaka.h> Dalam CodeVisionAVR telah disertakan fungsi pustaka yang mendukung pemrograman mikrokontroler antara lain: Fungsi tipe karakter (ctype.h) Fungsi standar I/O (stdio.h) Fungsi matematika (math.h) Fungsi string (string.h) Fungsi konversi BCD (bcd.h) Fungsi konversi akses memori (mem.h) Fungsi waktu tunda (delay.h) Fungsi LCD (lcd.h) Fungsi I2C (i2c.h) Fungsi SPI (spi.h) Fungsi RTC (ds1302.h, ds1307.h) Fungsi Sensor suhu LM75, DS1621, dll (lm75.h, ds1621.h)

To improve the readability of the program you may wish to #define symbolic names to the bits in I/O registers: #include <mega8535.h> #define alarm_input PINA.2 void main(void) /* test bit 2 input of Port A */ if (alarm_input) /* place some code here */ }; /*... */ }

PERNYATAAN IF Pernyataan if digunakan untuk melakukan pengambilan keputusan terhadap dua buah kemungkinan yaitu mengerjakan suatu blok pernyataan atau tidak, jika dan hanya jika persyaratannya terpenuhi. if (kondisi) // pernyataan }; Artinya adalah pernyataan akan dijalankan jika kondisi terpenuhi. Perhatikan contoh : if (a<0x50) PORTC=0x55; }; Dalam contoh ini PORTC akan dikirim data 0x55 jika nilai a lebih kecil 0x50

PERNYATAAN IF... ELSE Pernyataan If... else digunakan untuk meakukan pengambilan keputusan terhadap dua buah kemungkinan, kedua kemungkinan tersebt adalah mengerjakan pernyataan satu atau mengerjakan pernyataan yang lain. if (kondisi) // pernyataan a } else // pernyataan b }; Artinya adalah pernyataan a akan dijalankan jika kondisiterpenuhi dan pernyataan b akan dijalankan jika kondisi tidak terpenuhi

PERNYATAAN IF... ELSE Perhatikan contoh dibawah ini: if (a<0x50) PORTC=0x55; } else PORTC=0xAA; }; PORTC akan dikirim data 0x55 jika a lebih kecil dari 0x50 dan PORTC akan dikirim data 0xAA jika a 0x50.

PERNYATAAN IF BERSARANG Pernyataan if bersarang (nested If) adalah pernyataan if maupun if... else dimana di dalam blok pernyataan yang akan dikerjakan terdapat pernyataan if atau if... else lagi. If (kondisi_1) } If (kondisi_2) //blok pernyataan //blok pernyataan } } else If (kondisi_3) // pernyataan }

PERNYATAAN SWITCH Pernyataan switch digunakan untuk melakukan pengambilan keputusan terhadap banyak kemungkinan Pernyataan switch case digunakan jika terjadi banyak percabangan. switch (ekspresi) case konstanta1: Pernyataan1; break; case konstanta2: pernyataan2 break; case konstantan: pernyataann break; }

PERNYATAAN SWITCH Perhatikan contoh dibawah ini: switch (a) case 1 : PORTC=0x01 ; break; case 2 : PORTC=0x02; break; case 3 : PORTC=0x04; break; } PORTC akan dikirim data 0x01 jika nilai a=1, PORTC akan dikirim data 0x02 jika nilai a=2 dan PORTC akan dikirim data 0x04 jika nilai a=3.

PERNYATAAN WHILE Pernyataan while digunakan untuk pengulangan sebuah pernyataan atau blok pernyataan secara terus menerus selama kondisi tertentu masih terpenuhi. Bentuk perulangan while adalah sebagai berikut: while (kondisi) } pernyataan pernyataan; Jika kondisi memenuhi (bernilai true) maka pernyataan pernyataan dibawahnya akan dijalankan hingga selesai, kemudian akan menguji kembali kondisi diatas.

PERNYATAAN WHILE Perhatikan contoh dibawah ini: i=1; a=1; while (i<50) }; a=a*2; PORTC=a; i++ ;

PERNYATAAN DO... WHILE Pernyataan Do... While digunakan sama seperti pengunaan pernyataan dari while. Bentuk perulangan ini kebalikan dari while do, yaitu pernyataan dilakukan terlebih dahulu kemudian diuji kondisinya do } pernyataan pernyataan; while (kondisi);

PERNYATAAN DO... WHILE Perhatikan contoh berikut ini: i=1; a=1; do } a=a*2; PORTC=a; i++ ; while (i<50);

PERNYATAAN FOR Pernyataan for digunakan juga untuk melakukan pngulangan sebuah pernyataan atau blok pernyataan, tetapi beberapa kali jumlah pengulangannya dapat ditentukan secara lebih spesifik. Pernyataan for akan melakukan perulangan berapa kali sesuai yang diinginkan. Struktur penulisan perulangan for for (mulai ; kondisi ; penambahan/pengurangan) pernyataan pernyataan; };

PERNYATAAN FOR Perhatikan contoh dibawah: a=1; for (i=1; i<50; i++) }; a=a*2; PORTC=a; Program akan melakukan perulangan 49 kali, yaitu dari 1 hingga 50 dengan penambahan 1 (i++). Hasilnya PORTC akan dikirim data 1, kemudian data 2,4,8,.. sesuai dengan persamaan a=a*2

FUNGSI Fungsi adalah kumpulan pernyataan-pernyataan yang dikemas dalam satu wadah kemudian diberi nama dan selanjutnya dapat dipangil beberapa kali dalam sebuah program. Fungsi dapat digunakan untuk memecah logika program menjadi lebih kecil sehingga akan lebih memudahkan untuk mengelola dan memahami alur logika program pada saat menulis ataupun mengoreksi program. Fungsi dapat dibedakan berdasarkan hasil fungsi tersebut menjadi dua, yaitu: Fungsi dengan nilai balik Fungsi tanpa nilai balik

Fungsi dengan nilai balik Fungsi ini akan menghasilkan data keluaran baru setelah fungsi ini dip anggil/ dieksekusi oleh program. Bentuk umum dari fungsi ini adalah sebagai berikut: tipe_data nama_fungsi (tipe_data_1 parameter_1,...) } Pernyaaan_1; Pernyataan_2;... Contoh: int jarak (int data_1, int data_2) } hasil = data_1 / data_2; return hasil;

Fungsi tanpa nilai balik Fungsi dapat di sebut dengan fungsi tanpa nilai balik jika fungsi tersebut apabila dipangil tidak menghasilkan nilai. Bentuk umum fungsi ini adalah sebagai berikut: void nama_fungsi (tipe_data_1 parameter_1,...) } Pernyaaan_1; Pernyataan_2;... Contoh : void setport (char A, char B, char C, char D) } DDRA = A; DDRB = B; DDRC = C; DDRD = D;

BENTUK DASAR BAHASA C Sebuah program dalam bahasa C harus memiliki sebuah fungsi utama. Fungsi utama atau sering disebut dengan fungsi main memiliki kerangka program sebagai berikut: void main(void) } // pernyataan-pernyataan // pernyataan pernyataan Fungsi utama merupakan fungsi yang pertama kali akan dieksekusi oleh program, walaupun di dalam program tersebut terdapat beberapa fungsi. Kedudukan fungsi-fungsi yang lain lebih rendah dari fungsi utama, sehingga fungsi selain fungsi utama dapat dipanggil/ digunakan di dalam fungsi utama.

BENTUK DASAR BAHASA C Ilustrasi pemanggilan fungsi

PEMANGILAN BAHASA ASSEMBLER Meskipun bahasa pemrograman yang digunakan adalah bahasa C, akan tetapi dalam perograman mikrokontroler masih dapat memanggil atau menggunakan bahasa pemrograman Assembler. Cara pemanggilan bahasa Assembler adalah : #asm ;instruksi-instruksi assembler #endasm Contoh : #asm ldi r0,100 mov r2,r3 #endasm

TUGAS: Buat Program LED (dikumpulkan pada pertemuan berikutnya) 1. LED berkedip 3 kali menggunakan instruksi while 2. LED berkedip 5 kali menggunakan instruksi do..while 3. LED berkedip 7 kali menggunakan instruksi for 4. LED = 0x55 jika a < 10 dan LED = 0xAA jika a>=10 (gunakan instruksi if) 5. LED = 0x11 jika a = 1; LED = 0x22 jika a = 1; LED = 0x44 jika a = 3; LED = 0x88 jika a = 4 (gunakan instruksi switch) 6. Buat Fungsi LED_Kedip (jumlahkedip) 7. Buat Fungsi LED_7segment(angka)

Penyelesaian Soal No 1