Anda di halaman 1dari 9

PRAKTIKUM MKROPROSESOR

MODUL II
PENGENALAN PEMROGRAMAN C PADA AVR STUDIO
I. Tujuan Praktikum
1

Memahami pola pemrograman bahasa C untuk mikrokontroler.

Dapat mewujudkan program C pada AVR Studio.

Dapat menemukan kesalahan pada program yang dibuat.

Dapat mensimulasikan program yang dibuat.

II. Alat dan Bahan


1. Sistem minimum AVR ATmega 16.
III. Pengantar
Pemrograman adalah langkah meng-alurkan proses yang berhubungan
dengan perangkat lunak. Alur dibuat berdasarkan logika dan bahasa yang
dipahami Mikrokontroler. Dengan demikian pemrogram harus menyesuaikan pola
pikirnya kepada pola pikir Mikrokontroler.
Program yang telah ditulis dan disimpan dalam satu extensi file (ASM, C
atau BAS) harus dirubah menjadi file dalam bentuk lain. Dalam pemrograman
Mikrokontroler, file extensi HEXA akan disimpankan ke Memori Program di
dalam Mikrokontroler. Proses merubah file disebut meng-compile atau menyusun,
sedangkan pelaksana proses tersebut disebut Compiler. Proses penyimpanan file
HEXA ke Mikrokontroler disebut Downloading, sedangkan software dan
hardware pelaksananya disebut Downloader.

Alur pemrograman mikrokontroler

Compiler C AVRStudio menjalankan fungsi menyusun file dengan syntax


C menjadi format hexa. Proses penyusunan dilakukan dengan melibatkan file-file
lain diluar file C yang ditulis, hal ini terjadi karena fasilitas-fasilitas
mikrokontroler telah didefinisikan pada file-file tertentu sesuai fasilitas yang
dipergunakan.
1. Tipe data
Pemrograman

mengenal

tipe-tipe

data

yang

memungkinkan

digunakannya bilangan matematik mulai dari bilangan asli, real kemudian


pecahan.
char

(-127 sampai +127)

unsigned char

(0 sampai 255)

int

(-32767 sampai +32767)

unsigned int

(0 sampai 65535)

long int

(-2147483647 sampai +2147483647)

unsigned long int

(0 sampai 4294967295)

float

(1.28 x 10-38 sampai 3.4 x 1038)

Variabel yang dideklarasikan harus ditulis dengan didahului karakter dan bukan
angka. Variabel dapat satu atau lebih karakter.
unsigned char i;
float _1;
2. Syntax program
Syntax instruksi pada pemrograman C dibagi atas tiga golongan besar
yaitu pernyataan, percabangan dan penungguan.
a. Pernyataan
Pernyataan adalah suatu bentuk pengalamatan (transfer data), suatu
ekspresi matematika atau suatu pernyataan nilai. Transfer data dalam bahasa C
menggunakan tanda =. Syntax penulisan transfer data berbentuk:
Tujuan = Asal

Tujuan dapat berupa register atau penyimpan variabel dengan tipe data tertentu.
Asal data dapat berupa nilai data konstanta atau nilai data yang terletak pada
penyimpan variabel.
DDRA = 15;

// DDRA diisi dengan data 15


// data dalam bentuk desimal

DDRA = 0b00001111;

// DDRA diisi dengan data 0b00001111


// data dalam bentuk biner

DDRA = 0x0F;

// DDRA diisi dengan data 0x0F


// data dalam bentuk hexa

DDRA = i;

// DDRA diisi dengan data dari


// variable i

Beberapa contoh instruksi lain yang bersifat pernyataan adalah instruksi


matematis dan logika sebagai berikut:
i++;

// nilai variabel i dinaikkan 1

i+=5;

// nilai variabel i ditambah dengan 5

i--;

// nilai variabel i dikurang 1

i-=3;

// nilai variabel i dikurang dengan 3

i|=0b00001111;

// nilai variabel i di OR dengan


// konstanta 1111 biner

Rumus matematis dapat diimplementasikan pada program, misalnya:


i=(i*4)/j;

// nilai i adalah i dikalikan 4,


// hasilnya dibagi dengan nilai j

Pernyataan dapat juga menyebabkan terjadinya perulangan, tiga pernyataan


terhadap satu variabel (misalnya i) yang menyatakan batasan perulangan.
for (i=0;i<10;i++)

// pernyataan mulai dari i=0, sampai


// i<10, dengan i yang bertambah 1

{.....}

// selama perulangan menjalankan


// instruksi baris ini

b. Percabangan
Percabangan program dapat dilakukan melalui pertanyaan perbandingan
dengan syntax:
if (i<10)
{.....}

// jika i<dari 10
// maka laksanakan baris ini

else
{.....}

// jika i tidak lebih lecil dari 10


// maka laksanakan baris ini

Percabangan dapat pula dilakukan berdasarkan nilai yang spesifik.


switch (i):
{case 0: .....
break;
case 1: .....
break;

// pilihkan untuk i
// jika i adalah 0 laksanakan baris ini
// akhir pilihan
// jika i adalah 1 laksanakan baris ini
// akhir pilihan

c. Tunggu
Proses tunggu dapat dilakukan dengan memanggil rutin delay, proses
tunggu ini dapat memiliki waktu yang dapat didefinisikan.
_delay_ms(100);

// tunggu 100 mili detik

Proses tunggu juga dapat dilakukan dengan melihat suatu nilai pada suatu
penyimpan.
while (i!=10)
{.....}

// tunggu i sampai bernilai 10


// sementara menunggu laksanakan
// baris ini

3. Kerangka program
Kerangka program C seperti ditunjukkan dalam urutan seperti berikut:
#include <avr/io.h>
#include <util/delay.h>

//file include
//file include

//global predefine

//routine program

int main(void)
{

//main program
//local predefine

for (;;)
{

//pre loop program

//loop program

}
}

1. File Including adalah bagian program yang menghubungkan program yang


ditulis dengan file diluar yang ditulis. Hubungan ini memungkinkan untuk
mengakses rutin-rutin pada pada file yang di-Include.
2. Global Predefine adalah bagian program untuk mendefinisikan nilai-nilai,
memori atau memori dengan tipe data tertentu. Pendefinisian dapat digunakan
pada semua bagian program (routine atau program utama).
3. Routine Program adalah bagian program yang terdiri dari kelompok instruksi
dengan jalan masuk dan jalan keluar. Jalan masuk dapat terdiri dari satu atau
lebih variabel sedangkan jalan keluar hanya satu variable yang dinyatakan
dengan Return. Routine dilaksanakan jika dipanggil melalui perintah Call.
4. Main program adalah program inti, tempat eksekusi program dimulai dan
diakhiri. Umumnya didalam program inti dilakukan loop (perulangan) yang
terus menerus.
5. Local Predefine, cakupan Local hanya dalam rutin atau program utama,
berbeda dengan Global yang dapat digunakan pada semua bagian program.
6. Pre Loop Program adalah proses-proses yang perlu dilakukan sebelum
dilakukan Loop. Pemberian data ini berkaitan erat dengan fasilitas yang akan
digunakan.
7. Loop Program adalah proses yang dilakukan program secara terus-menerus.
IV. Membuat Project Baru
1. Buka program AVR Studio.
2. Pilih NewProject.

Pilihan awal dalam pemrograman AVR Studio

3. Pilih folder tujuan penyimpanan project, Pilih AVR GCC, beri nama dengan
sekaligus buat foldernya sehingga setiap project akan terletak satu folder. Beri
nama dengan format [nomor mahasiswa_program ke] tanpa spasi.
Sebagai contoh:

13210001_1

Tekan Next.

Pilihan awal dalam pemrograman AVR Studio

4. Pilih AVR Simulator, pilih jenis mikro yang digunakan (ATmega16), tekan
Finish.

Pilihan awal dalam pemrograman AVR Studio

5. Tertampil editor program tempat menuliskan program.

Tampilan editor program

6. Mulailah menuliskan program. Simpanlah dengan [Ctrl+S], meng-compile


dengan [F7] dan men-simulasi dengan [Ctrl+F7].
V. Memprogram
1

Tulislah program dibawah ini


#include "avr/io.h"

// AVR header file untuk IO ports

int main()
{unsigned char i;
DDRC = 0xFF;
PORTC = 0x00;
i=0;
for (;;)
{PORTC=i;
i++;
}
}

// temporary variable i
// set PORTC sebagai output
// PortC di beri nilai awal 0
// loop terus menerus
// PortC diberi nilai i
// naikkan 1 nilai i

Compile program dengan menekan [F7] atau tombol Built.

Tampilan penulisan program

Jika terdapat Error atau Warning, benarkan penulisan program Anda, compile
ulang.

VI. Mensimulasikan Program


1

Tekan tombol Ctrl+F7 atau Built and Run.

Tampilan simulasi program

Tampilkan jendela register dan I/O dengan menekan tombol View>Register


dan View>Toolbars>I/O.

Step Into atau tombol F11 untuk menjalankan simulasi.


Break untuk keluar dari simulasi.
Pause untuk berhenti dan bias dijalankan lagi.
Reset untuk kembali ke keadaan awal, dan lain-lain.

Sambil menekan F11, amati nilai register mana yang berubah! (lihat jendela
Register).

Amati nilai pada PORTC dan lengkapilah titik-titik dibawah ini!.


Nilai awal register PORTC = .
8

Nilai PORTC maksimal = ..


Setelah melampaui nilai maksimal (0xFF), nilai PORTC berubah menjadi
.
i adalah variabel penyimpan nilai, dengan tipe data ..
Nilai yang tersimpan mulai dari .. sampai Dengan demikian i
berkapasitas bit.
............................................................................................................................
PORTC dalam percobaan ini di modekan sebagai port
............................................................................................................................
............................................................................................................................
6

Ubahlah kode program untuk proses kenaikan nilai variabel c menjadi


penurunan 5 nilai sekaligus. Compile dan simulasikan!.
Kode program yang dipergunakan adalah
............................................................................................................................

Ubahlah kode program untuk membunyikan buzzer ketika varibel i bernilai


genap dan tidak membunyikan buzzer ketika variabel i bernilai ganjil. Buzzer
terletak pada PD0. Compile dan simulasikan!.
Kode program yang dipergunakan adalah
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................

VII. Tugas
Tulis dalam laporan Anda kesimpulan yang menghubungkan masing-masing
kesimpulan pada percobaan diatas!.

Anda mungkin juga menyukai