Pemrograman Bahasa C . pdf

MODUL TRAINING
MIKROKONTROLER AVR

BIDANG KEPROFESIAN
BADAN PENGURUS HME ITB
2009/2010

DIVISI WORKSHOP
HME ITB

PENDAHULUAN
Mikrokontroller AVR memiliki arsitektur RISC 8 bit, dimana semua instruksi dikemas dalam kode 16-bit (16-bits
word) dan sebagian besar instruksi dieksekusi dalam satu siklus clock, berbeda dengan instruksi MCS51 yang
membutuhkan 12 siklus clock. Hal ini terjadi karena perbedaan arsitektur yang dipakai. AVR menggunakan
arsitektur RISC (Reduced Instruction Set Computing) sedangkan MCS51 menggunakan arsitektur CISC (Complex
Instruction Set Computing).
AVR secara umum dapat dibagi menjadi empat kategori antara lain; ATtiny, AT90Sxx, ATmega, dan AT86RFxx.
Yang membedakan keempat kategori diatas secara mendasar ialah ukuran memori, peripheral, dan fungsinya.

Skematik sistem minimum dari AVR versi DIP (Dual Inline Package) 40 pin disajikan pada gambar dibawah ini:


Skematik ISP dongle STK200 yang dihubungkan ke port parallel pada komputer untuk mendownload program dari
komputer ke mikrokontroler AVR:

Nilai C1 = 100nF dan R1 = ?

CodeVisionAVR C Compiler
Pendahuluan
Pada Kontes Robot Cerdas Indonesia (KRCI) bahasa pemrograman yang umum dipakai ialah bahasa C. Bahasa ini
dipakai karena lebih dekat dan mudah dimengerti oleh manusia. Namun bahasa ini kurang machine friendly.
Sehingga untuk beberapa akses membutuhkan code dalam bahasa assembly. Kelebihan yang dimiliki bahasa C
adalah dapat dimasukkannya code assembly dalam code C.
Program CodeVisionAVR ini tidaklah gratis. Namun banyak versi evaluasi yang tersedia. Versi evaluasi ini hanya
mengijinkan sebagian kecil code dari total code yang bisa di burn ke dalam mikrokontroler. Misal kapasitas flash
mikrokontroler sebesar 8KB maka total code yang bisa di compile sekitar 1 KB. Sebenarnya terdapat alternatif lain
untuk pemrograman dalam bahasa C dengan menggunakan software WinAVR yang gratis.
Sebagai permulaan maka penulis akan sedikit mencoba memprogram AVR dengan menggunakan CodeVisionAVR
karena source code-nya telah tersedia. Selain itu penulis telah mendapatkan beberapa sample hasil pengalaman
dan percobaan dari code sendiri serta code gratis yang disediakan di internet. Semua code yang terlampir disini
sebagian besar merupakan program robot otaku. Robot ini diperlombakan pada KRCI 2006 di balairung UI.
Penulis menggunakan program CodeVisionAVR C Compiler v1.24.7e

Fitur-fitur yang dimiliki CodeVisionAVR terbilang lengkap. Program ini menyediakan interface hyperterminal
didalamnya. Hyperterminal ini dapat digunakan untuk berkomunikasi antara mikrokontroler dengan komputer.
Untuk proses pembakaran atau pengisian program ke dalam mikrokontroler terdapat tool tersendiri.
Untuk proses debugger program ini akan menyediakan link pada AVR studio 4 yang memang telah memiliki fitur
tersebut. Atau jika ingin, sesudah program C di compile oleh CodeVisionAVR maka akan dihasilkan file *.cof yang
dapat disimulasikan langsung di AVR studio 4.
Project Management
Setiap akan membuat program baru pada CodeVisionAVR, kita akan diarahkan untuk membuat project terlebih
dahulu.

Pada menu File pilih New lalu lalu klik Project dan klik OK.

CodeVisionAVR akan menanyakan apakah anda akan menggunakan fasilitas CodeWizardAVR.

Fasilitas ini sangatlah berguna jika anda tidak ingin bersusah payah melakukan settingan dengan mengetik codecode tertentu yang banyak dan kompleks. Intinya terdapat tab-tab yang tinggal klik dan anda akan langsung
disajikan contoh kodenya.

Contohnya jika anda ingin membuat program yang memakai eksternal interrupt maka tinggal pilih tab External IRQ
pada tampilan CodeWizard. Klik pada INT 0 Enabled untuk memilih external interrupt 0 dan pilih mode
pembangkitan interrupt yang ingin digunakan.


Mode pembangkitan eksternal interrupt terdiri dari rising edge atau falling edge atau any change. Untuk melihat
code yang akan dihasilkan klik pada menu File dan pilih Program Preview.

Lihat pada code:
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
}

Jika terdapat code diatas maka anda telah mendapatkan header program yang akan dieksekusi jika terjadi trigger
eksternal interrupt.
Sebaliknya jika pada pertanyaan apakah akan digunakan CodeWizard anda menjawab tidak (NO), maka akan
muncul window Create New Project seperti dibawah ini:

Ketik nama project yang akan dibuat dan klik save. Anda akan dihadapkan pada window Configure Project seperti:

File code yang memiliki ekstensi *.c yang akan dibuat nantinya disave pada suatu tempat dan di masukkan ke
dalam project dengan mengklik Add pada tab File seperti diatas. Pada tab C Compiler akan ditemukan tab lagi

didalamnya. Tab yang sering digunakan ialah tab Code Generation. Pada tab ini anda akan menentukan
mikrokontroler apa dan kecepatan (speed dalam MHz) yang nantinya akan digunakan. Pilih ATmega8535 dan
speed yang sesuai dengan frekuensi crystal yang akan digunakan lalu klik OK.

Proses coding menggunakan bahasa C belum dapat dimulai setelah mengkonfigurasi project yang dibuat. Untuk
membuat file *.c klik pada menu File dan pilih source dan klik OK.

Selanjutnya akan tampil window utama dengan tampilan dibawah ini. Ingat, file masih dalam bentuk untitled.c dan
belum disave. Untuk mengetahuinya dapat dilihat pada sisi kiri dimana file untitled.c terletak pada Other Files. Hal
ini meyatakan pula bahwa file untitled.c belum masuk dalam project. Save dulu file untitled.c pada folder yang
sama dengan file project dan beri nama yang sama.

Untuk memasukkan file *.c yang telah disave ke dalam project klik menu Project dan pilih Configure.

Anda akan dihadapkan kembali pada window seperti pada Configure Project diatas. Klik Add dan akan tampil
window yang menayakan file *.c mana yang akan dimasukkan kedalam project. Klik OK.

Jika file *.c telah dimasukkan ke dalam project maka statusnya dapat dilihat pada bagian kiri window utama
dimana file *.c terdapat pada tree project.


Kini anda siap melakukan coding dalam bahasa C di CodeVisionAVR.
Melakukan proses compiling terhadap sourcecode yang sudah jadi
Klik pada tombol yang ditunjukkan pada gambar dibawah. Tombol tersebut selain melakukan compiling akan
mengenerate beberapa file termasuk *.hex yang akan diburn ke mikrokontroler dan file *.coff yang dapat
disimulasikan pada AVR studio

Setelah proses compiling berhasil maka akan muncul window:

Window ini berisi informasi-informasi penting mengenai jenis mikrokontroller, speed, ukuran program, sisa space
EEPROM dan FLASH, jumlah error dari code dan sebagainya. Jika terdapat error pada code yang kita buat, maka
klik OK dan anda akan kembali pada window utama dengan tampilan seperti dibawah ini:

Untuk mengetahui letak kesalahan pada code anda, tinggal klik pada tab navigator bagian Errors. Atau anda dapat
mengklik pada tab Messages untuk mengetahui letak kesalahan pada code. Pada contoh diatas dapat dilihat
sintaks #include