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

dokumen-dokumen yang mirip
Dasar Pemrograman Mikrokontroler dengan Bahasa C

DASAR PEMROGRAMAN C UNTUK MIKROKONTROLER

BAHASA C CodeVisionAVR (CVAVR)

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

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

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

BAB II TINJAUAN PUSTAKA. Mikrokontroler, sebagai suatu terobosan teknologi mikrokontroler dan

BAB 2 LANDASAN TEORI. Mikrokontroler AT89S52 termasuk kedalam keluarga MCS-51 merupakan suatu. dua macam memori yang sifatnya berbeda yaitu:

BAB 2 TINJAUAN TEORITIS. Mikrokontroller, sebagai suatu terobosan teknologi mikrokontroler dan microkomputer,

BAB 2 TINJAUAN TEORITIS

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

Bahasa C-M6 By Jamilah, Skom 1

BAHASA PEMROGRAMAN C

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

1.1. Sejarah Bahasa C

Chapter 1 KONSEP DASAR C

INSTRUKSI. TTH2D3 Mikroprosesor

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

Struktur Program Bahasa C

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

BAB II TINJAUAN PUSTAKA

BAB II LANDASAN TEORI. Dalam merancang sebuah peralatan yang cerdas, diperlukan suatu

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

BAB II LANDASAN TEORI

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

BAB 2 LANDASAN TEORI

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

SISTEM KENDALI JARAK JAUH UNTUK KONTROL BUKA DAN TUTUP PINTU DENGAN MIKROKONTROLLER AT89S51

Achmad Solichin.

Dasar Pemrograman C. Hendawan Soebhakti. Oktober 2009

BAB 4 PENGENALAN BAHASA C

BAB 2 LANDASAN TEORI

LANGKAH-LANGKAH MENULISKAN PROGRAM DALAM TURBO C++

Pendahuluan Pemrograman Mikrokontroler

BAB IV HASIL PENGUKURAN DAN PENGUJIAN ALAT SISTEM PENGONTROL BEBAN DAYA LISTRIK

SUMBER BELAJAR PENUNJANG PLPG

BAB 2 LANDASAN TEORI

BAHASA PEMOGRAMAN AT89S/Cxx (assembly)

BAB II LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

PEMROGRAMAN TERSTRUKTUR OLEH : IR. H. SIRAIT, MT

Bahasa Pemrograman Assembler 8051

Tipe Data, Variabel, Input/Output

OPERASI PERNYATAAN KONDISI

Mengenal bahasa assembly

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

Pemrograman Dasar C Mikrokontroler AVR By : Deddy Susilo, ST (WORKSHOP PIM FTEK UKSW 2009)

BAB IV PENGUJIAN ALAT DAN ANALISA

Bekerja Dengan MIDE-51

Modul 1 Dasar Dasar Bahasa Pemrograman C

PERCOBAAN 2 SAKLAR PUSH BUTTON

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

PERANCANGAN HARDWARE JAM DIGITAL DENGAN SISTEM KALENDER BERBASIS MIKROKONTROLLER DS1307 TUGAS AKHIR DIAN SAIFUL RAMADHAN NUR TANJUNG

Membuat Project dengan CodeVisionAVR.

2 TIPE DATA DAN VARIABEL

BAB 1 KONSEP DASAR BAHASA C

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

2. Unit Praktikum Perhitungan Aritmatika

Identifier dan Tipe Data

Part 2 - Algoritma & Pemrograman Konsep dasar Pemrograman

LAPORAN PRAKTIKUM MIKROKONTROLER. Paralel Input Output

Tipe Data dan Operator

Pengenalan CodeVisionAVR

MATA KULIAH : LOGIKA DAN ALGORITMA KONSEP DASAR ALGORITMA

P 4 Bab 3 : Dasar Pemrograman C

BAB II VARIABEL DAN TIPE DATA

Bab 2. Dasar-Dasar Pemrograman C

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

VARIABEL & TIPE DATA PEMROGRAMAN C++

MODUL DUA VARIABEL DAN TIPE VARIABEL

Pengenalan C++ Oleh : Dewi Sartika

Tipe Data dan Variabel

BAB I SEKILAS TENTANG C

BAB 2 TINJAUAN TEORITIS

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

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

PERANCANGAN SOFTWARE JAM DIGITAL DENGAN SISTEM KALENDER BERBASIS MIKROKONTROLLER DS1307 TUGAS AKHIR TAUFIK PASARIBU

KONSEP DASAR BAHASA C

DASAR INPUT/OUTPUT (1) (PORT PPI DAN PORT 1 SEBAGAI OUTPUT)

JOBSHEET II ANTARMUKA MIKROKONTROLER DENGAN TOGGLE SWITCH

BAB II LANDASAN TEORI

<<= Hasil penggeseran bit kekiri sama dengan

Elemen Dasar Dalam Bahasa Java

I. Pendahuluan. II. Tujuan. III. Gambaran Disain. MODUL 7 Monitoring Suhu dan Cahaya ke PC

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

BAB 2 TINJAUAN TEORITIS. terdiri dari mikrokontroller ATmega8535, Isd2560, LM 35, Regulator 7805, LCD

Tipe Data, Identifier, Operator dan Control Statement

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

Struktur Bahasa C dan C++

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

Konsep Dasar Pemrograman Dan Pengenalan C++

Tujuan : A. Percabangan Percabangan di dalam Java terdapat 2 macam, yaitu dengan memakai if dan switch.

digunakan untuk pembahasan dan cara kerja dari rangkaian Teori komponen-komponen pendukung.

Please purchase PDFcamp Printer on to remove this watermark. BAB 2 DASAR TEORI

Chapter 2 Tipe Data, Identifier, Operator dan Control Statement

PENGENALAN BAHASA C. Praktikum 3

PERCOBAAN 1 DISPLAY LED

Transkripsi:

2.. PerangkatLunak 2.1.1. Pemrograman Bahasa C Pencipta bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada sekitar tahun 1972. C adalah bahasa pemrograman terstruktur, yang membagi program dalam bentuk sejumlah blok. Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan program. Program yang ditulis dengan mengunakan C mudah sekali untuk dipindahkan dari satu jenis mesin ke jenis mesin lainnya. Hal ini berkat adanya standarisasi bahasa C yaitu berupa standar ANSI (American National Standards Institute) yang dijadikan acuan oleh para pembuat kompiler C. (Agus Bejo, 2008). 2.1.2. Bentuk Dasar Program C Sebuah program dalam bahasa C setidaknya harus memiliki sebuah fungsi. Fungsi dasar ini disebut dengan fungsi utama (fungsi main) dan memiliki kerangka program sebagai berikut: void main (void) { // pernyataan-pernyataan } Jika kita memiliki beberapa fungsi yang lain maka fungsi utama inilah yang memiliki kedudukan paling tinggi dibandingkan fungsi-fungsi yang lain sehingga setiap kali program dijalankan akan selalu dimulai dari memanggil fungsi utama terlebih dahulu. Fungsi-fungsi yang lain dapat dipanggil setelah fungsi utama dijalankan melalui pernyataan-pernyataan yang berada didalam fungsi utama. Contoh: // prototype fungsi inisialisasi port 5

Void inisialisasi_port (char A, char B, char C, char D) { DDRA = A ; DDRB = B ; DDRC = C ; DDRD = D ; } // fungsi utama void main (void) { Inisialisasi_port (0xFF, 0xF0, 0x0F, 0x00) ; 2.1.3. Pengenal Pengenal (identifier) merupakan sebuah nama yang diisikan oleh pemrogram untuk menunjukkan identitas dari sebuah konstanta, variable, fungsi, label atau tipe data khusus. Pemberian nama sebuah pengenal dapat ditentukan bebas sesuai keinginan pemrogram tetapi harus memenuhi aturan berikut: 1. Karakter pertama tidak boleh menggunakan angka. 2. Karakter kedua dapat berupa huruf, angka, atau garis bawah. 3. Tidak boleh menggunakan spasi. 4. Case sensitive, yaitu huruf kapital dan huruf kecil dianggap berbeda. 5. Tidak boleh menggunakan kata-kata yang merupakan sintaks maupun operator dalam pemrograman C, misalnya: void, short, const, if, bit, long, case, do, switch, char, float, for, else, break, int, double, include, while. 2.1.4. Tipe Data Tipe data merupakan bagian program yang paling penting karena tipe data mempengaruhi setiap instruksi yang akan dilaksanakan oleh computer. Misalnya saja5 6

dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe datanya. Jika 5 dan 2 bertipe integer maka akan menghasilkan nilai 2, namun jika keduanya bertipe float maka akan menghasilkan nilai 2.5000000. Pemilihan tipe data yang tepat akan membuat proses operasi data menjadi lebih efisien dan efektif.. Tabel 2.6. Tipe Data (Agus Bejo, 2009). Tipe data Ukuran Jangkauan nilai Bit 1 bit 0 atau 1 Char 1 byte -128 s/d 127 Unsigned char 1 byte 0 s/d 255 Signed char 1byte -128 s/d 127 Int 2 byte -32.768 s/d 32.767 Short int 2 byte -32.768 s/d 32.767 Unsigned int 2 byte 0 s/d 65.535 Signed int 2 byte -32.768 s/d 32.767 Long int 4 byte -2.147.483.648 s/d 2.147.483.647 Signed long int 4 byte -2.147.483.648 s/d 2.147.483.647 Float 4 byte 1.2*10-38 s/d 3.4*10 +38 2.1.5. Variabel Bertanda (Signed) dan Tak Bertanda (Unsigned Untuk pendeklarasian tipe data yang berupa bilangan bulat yaitu char, int, short dan 7

long dapat ditambahkan signed atau unsigned. Signed digunakan untuk mendefenisikan bahwa data yang disimpan dalam variabel adalah bertanda sedangkan unsigned untuk data yang tidak bertanda. Contoh: Unsigned char data1; Signed char data2; Pada contoh diatas variabel data1 bertipe char (1 byte) dan tidak bertanda (unsigned) sehingga dapat menyimpan data dari 0 sampai 255. Sedangkan variabel data2 bertipe char (1 byte) dan bertanda (signed) sehingga dapat menyimpan data dari -128 sampai 127. Nilai negatif pada bilangan bertanda disimpan dalam bentuk komplemen 2. Misalnya untuk nilai (-1) komplemen 2 nya adalah 0xFF sehingga data 0xFF inilah yang disimpan dalam variabel tersebut. (Agus Bejo 2008). 2.1.6. Pengarah Preprosesor Pernyataan adalah satu buah instruksi lengkap yang berdiri sendiri. Berikut adalah contoh sebuah pernyataan: PORTC = 0x0F; Pernyataan PORTC = 0x0F; merupakan sebuah instruksi untuk mengeluarkan data 0x0F ke Port C. (Agus Bejo, 2008). 2.1.7. Fungsi Pustaka Bahasa C memiliki sejumlah fungsi pustaka yang berada pada file-file tertentu dan sengaja disediakan untuk menangani berbagai hal dengan cara memanggil fungsi- fungsi yang telah dideklarasikan dalam file tersebut. Dalam banyak hal, pustaka- pustaka yang tersedia tidak berbentuk kode sumber melainkan dalam bentuk yang telah dikompilasi. Sintaks untuk 8

menggunakan fungsi pustaka ini adalah sebagai berikut: Contoh: # include <nama_file_pustaka> # include <lcd.h> Beberapa fungsi pustaka yang telah disediakan oleh CodeVisionAVR antara lain adalah: 1. Fungsi Tipe Karakter (ctype.h). 2. Fungsi Standar I/O (stdio.h). 3. Fungsi matematika (math.h). 4. Fungsi String (string.h). 5. Fungsi Konversi BCD (bcd.h). 6. Fungsi Konversi Akses Memori (mem.h). 7. Fungsi Tunda (delay.h). 8. Fungsi LCD (lcd.h). 9. Fungsi I2C (i2c.h).fungsi SPI (spi.h). 10. Fungsi Real Time Clock (RTC) (ds 1302.h, ds1307.h). 11. Fungsi Sensor Suhu LM75, DS1621 dll (lm75.h, ds1621.h). 12. Fungsi Sensor Suhu LM75, DS1621 dll (lm75.h, ds1621.h). 2.1.8. Pernyataan IF Pernyataan if digunakan untuk melakukan pengambilan keputusan terhadap dua buah kemungkinan yaitu mengerjakan suatu blok pernyataan atau tidak. Bentuk pernyataan if adalah sebagai berikut: If (kondisi) { 9

// blok pernyataan yang akan dikerjakan // jika kondisi if terpenuhi } contoh : If (PINA>0x80) { Dataku = PINA; PORTC=0xFF; } Pernyataan if diatas akan mengecek apakah data yang terbaca pada Port A (PINA) nilainya lebih dari 0x80 atau tidak, jika ya maka variabel dataku diisi dengan nilai PINA dan data 0xFF dikeluarkan ke port C. Apabila dalam blok pernyataan hanya terdapat satu pernyataan saja maka tanda { dan } dapat dihilangkan seperti contoh berikut: If (PINA>0x80) PORTC = 0xFF 2.2.1.9. Pernyataan Switch Pernyataan switch digunakan untuk melakukan pengambilan keputusan terhadap banyak kemungkinan. Bentuk pernyataan switch adalah sebagai berikut: switch (ekspresi) { case nilai_1 case nilai_2 case nilai_3 : pernyataan_1; break; : pernyataan_2; break; : pernyataan_3; break;. 10

Default : pernyataan_default; break; } Pada pernyataan switch, masing-masing pernyataan (pernyataan_1 sampai dngan pernyataan_default) dapat berupa satu atau beberapa perintah dan tidak perlu berupa blok pernyataan. Pernyataan_1 akan dikerjakan jika ekspresi bernilai sama dengan nilai_1, pernyataan_2 akan dikerjakan jika ekspresi bernilai sama dengan nilai_2, pernyataan_3 akan dikerjakan jika ekspresi bernilai sama dengan nilai_3, dan seterusnya. Pernyataan_default bersifat opsional, artinya boleh ada boleh tidak. Jika ada maka pernyataan_default akan dikerjakan apabila nilai ekspresi tidak ada yang sama satupun dengan salah satu nilai_1, nilai_2, nilai_3 dan seterusnya. Setiap akhir dari pernyataan harus diakhiri dengan break, karena ini digunakan untuk keluar dari pernyataan switch. Contoh: switch (PINA) { Case 0xFE Case 0xFD : PORTC = 0x00; break; : PORTC = 0xFF; break; Pernyataan di atas berarti membaca port A, kemudian datanya (PINA) akan dicocokkan dengan nilai case. Jika PINA bernilai 0xFE maka data 0x00 akan dikeluarkan ke port C kemudian program keluar dari pernyataan switch tetapi jika PINA bernilai 0xFD maka data 0xFF akan dikeluarkan ke port C kemudian program keluar dari pernyataan switch. 2.2.1.10.Memanggil Assembler Meskipun kita menggunakan bahasa C, kita masih tetap bisa menggunakan sintaks 11

pemrograman assembler. Caranya adalah sebagai berikut: Contoh: # asm ; instruksi-instruksi assembler # endasm # asm Ldi r0, 100 mov r2, r3 # endasm 2.2.2. Bahasa Assembly MCS-51 Bahasa yang digunakan untuk memprogram IC mikrokontroler AT89C4051 adalah bahasa assembly untuk MCS-51. angka 51 merupakan jumlah instruksi pada bahasa ini hanya ada 51 instruksi, antara lain yaitu: 1. Instruksi MOV Perintah ini merupakan perintah untuk mengisikan nilai ke alamat atau register tertentu. Pengisian nilai dapat secara langsung atau tidak langsung. Contoh pengisian nilai secara langsung: MOV R0, #20h Perintah di atas berarti : isikan nilai 20 Heksadesimal ke register 0 (R0). Tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah nilai.contoh pengisian nilai secara tidak langsung: MOV 20h, #80h 12

...... MOV R0, 20h Perintah di atas berarti : isikan nilai yang terdapat pada alamat 20 Heksadesimal ke register 0 (R0). Tanpa tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah alamat. 2. Instruksi DJNZ Decreament Jump If Not Zero (DJNZ) ini merupakan perintah untuk mengurangi nilai register tertentu dengan 1 dan lompat jika hasil pengurangannya belum nol. Contoh: MOV R0, #80h Loop:...... DJNZ R0, Loop... R0 = 1, jika belum 0 lompat ke loop, jika R0 = 0 maka program akan meneruskan ke perintah pada baris berikutnya. 3. Instruksi ACALL Instruksi ini berfungsi untuk memanggil suatu rutin tertentu. Contoh:... ACALL TUNDA... TUNDA:... 13

4. Instruksi RET Instruksi RETURN (RET) ini merupakan perintah untuk kembali ke rutin pemanggil setelah instruksi ACALL dilaksanakan. Contoh: ACALL TUNDA... TUNDA:... RET 5. Instruksi JMP (Jump) Instruksi ini merupakan perintah untuk lompat ke alamat tertentu. Contoh: Loop:...... JMP Loop 6. Instruksi JB (Jump if bit) Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika high (1). Contoh: Loop: JB P1.0, Loop... 14

7. Instruksi JNB (Jump if Not bit) Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika low (0). Contoh, Loop: JNB P1.0, Loop... 8. Instruksi CJNZ (Compare Jump If Not Equal) Instruksi ini berfungsi untuk membandingkan nilai dalam suatu register dengan suatu nilai tertentu. Contoh, Loop:... CJNE R0, #20h, Loop... Jika nilai R0 tidak sama dengan 20h, maka program akan lompat ke rutin Loop. Jika nilai R0 sama dengan 20h, maka program akan melanjutkan instruksi selanjutnya. 9. Instruksi DEC (Decreament) Instruksi ini merupakan perintah untuk mengurangi nilai register yang dimaksud dengan 1. Contoh: MOV R0, #20h R0 = 20h... DEC R0 R0 = R0 1... 15

10. Instruksi INC (Increament) Instruksi ini merupakan perintah untuk menambahkan nilai register yang dimaksud dengan 1. Contoh, MOV R0,#20h R0 = 20h... INC R0 R0 = R0 + 1... 2.2.3. CodeVisionAVR CodeVisionAVR merupakan salah satu software kompiler yang khusus digunakan untuk mikrokontroler keluarga AVR. CodeVisionAVR merupakan yang terbaik bila dibandingkan dengan kompiler-kompiler yang lain karena beberapa kelebihan yang dimiliki oleh CodeVisionAVR antara lain: 1. Menggunakan IDE (Integrated Development Environment). 2. Fasilitas yang disediakan lengkap (mengedit program, mengkompile program, mendownload program) serta tampilannya terlihat menarik dan mudah dimengerti. Kita dapat mengatur settingan editor sedemikian rupa sehingga membantu memudahkan kita dalam penulisan program. 3. Mampu membangkitkan kode program secara otomatis dengan menggunakan fasilitas CodeWizardAVR. 4. Memiliki fasilitas untuk mendownload program langsung dari CodeVisionAVR dengan menggunakan hardware khusus seperti Atmel STK500, Kanda System STK200+/300 dan beberapa hardware lain yang telah didefenisikan oleh CodeVisionAVR. 16

5. Memiliki fasilitas debugger sehingga dapat menggunakan software compiler lain untuk mengecek kode assembler nya, contohnya AVRStudio. 6. Memiliki terminal komunikasi serial yang terintegrasi dalam CodeVisionAVR sehingga dapat digunakan untuk membantu pengecekan program yang telah dibuat khususnya yang menggunakan fasililtas komunikasi serial UART. CodeVision chip programmer Salah satu kelebihan dari CodeVisionAVR adalah tersedianya fasilitas untuk mendownload program ke mikrokontroler yang telah terintegrasi sehingga demikian CodeVisionAVR ini selain dapat berfungsi sebagai software kompiler juga dapat berfungsi sebagai software programmer/ downloader. Jadi kita dapat melakukan proses download program yang telah dikompile dengan menggunakan software CodeVisionAVR juga. Gambar 2.18. Programmer Setting 17

2.2.4. Software 8051 Editor, Assembler, Simulator Instruksi-instruksi yang merupakan bahasa assembly tersebut dituliskan pada sebuah editor, yaitu 8051 Editor, Assembler, Simulator. Gambar 2.19. Software 8051 Editor, Assembler, Simulator (http://www.google.com/avrku.blogspot.com/2008/11/berkenalan-dengan- codevisionavr. pdf). Setelah program selesai ditulis, kemudian di-save dan kemudian di-assemble (di-compile). Pada saat di-assemble akan tampil pesan peringatan dan kesalahan. Jika masih ada kesalahan atau peringatan, itu berarti ada kesalahan dalam penulisan perintah atau ada nama subrutin yang sama, sehingga harus diperbaiki terlebih dahulu sampai tidak ada pesan kesalahan lagi. Software 8051 IDE ini berfungsi untuk merubah program yang kita tuliskan ke dalam bilangan heksadesimal, proses perubahan ini terjadi pada saat peng-compile-an. 18

Bilangan heksadesimal inilah yang akan dikirimkan ke mikrokontroler. 2.2.5. Software Downloader Untuk mengirimkan bilangan-bilangan heksadesimal ini ke mikrokontroller digunakan software ISP- Flash Programmer 3.0a yang dapat didownload dari internet. Gambar 2.20. ISP- Flash Programmer (http://www.google.com/avrku.blogspot.com/2008/11/berkenalan-dengan- codevisionavr. pdf). Cara menggunakannya adalah dengan meng-klik Open File untuk mengambil file heksadesimal dari hasil kompilasi, kemudian klik Write untuk mengisikan hasil kompilasi tersebut ke mikrokontroller. 19