Anda di halaman 1dari 12

FAKULTAS TEKNIK

UNIVERSITAS NEGERI YOGYAKARTA


LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 1 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

A. Teori Singkat
Pada pembahasan bahasa C pada labsheet ini tidak mungkin dilakukan secara
terperinci, dan hanya akan dijelaskan secara garis besar saja. Contoh-contoh nantinya akan
langsung dipraktikkan untuk memprogram mikrokontroller. Meskipun anda belum menguasai
pemrograman C, anda tidak perlu khawatir karena untuk memprogram mikrokontroller
dengan bahasa C sangat mudah dilakukan. Struktur penulisan bahasa C secara umum terdiri
atas empat blok, yaitu;
1. Header
2. Deklarasi konstanta global dan atau variabel
3. Fungsi dan atau prosedur (bias di bawah program utama)
4. Program utama
Secara umum, pemrograman C paling sederhana dilakukan dengan hanya menuliskan
program utamanya saja, yaitu:

void main (void)


{

}

Secara utuh adalah sebagai berikut:

/*HEADER untuk memanggil library yang akan digunakan*/


#include <mega16.h>
#include <stdio.h>

/*Deklarasi konstanta dan atau variable global */


unsigned char dt, xx;
char buf[33];

/*Deklarasi fungsi dan atau prosedur */


unsigned char lampu (unsigned char bitn)
{

/*Program utama */
void main (void);

/*Deklarasi konstanta dan atau vartiabel local */


char data;
PORTA=0x00;
DDRA=0xF0;

while (1)
{

};
}

1. Header
Header berisi include file (.hex), yaitu library (pustaka) yang akan digunakan dalam
pemrograman. Perhatikan contoh dibawah ini:
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 2 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

#include <mega16.h>
#include <delay.h>
#incude <stdio.h>

2. Tipe Data
Berikut ini adalah tabel tipe-tipe variabel data yang dapat digunakan di compiler
Code Vision AVR:
Tabel 1. Tipe-tipe variabel data compiler Code Vision AVR

Type Size (Bits) Range


bit 1 0,1
char 8 -128 to 127
unsigned char 8 0 to 255
signed char 8 -128 to 127
int 16 -32768 to 32767
short int 16 -23768 to32767
unsigned int 16 0 to 65535
signed int 16 -32768 to 32767
long int 32 -2147483648 to 2147483647
unsigned long int 32 0 to 4294967295
signed long int 32 -2147483648 to 2147483647
float 32 ±1.175e-38 to ±3.402e38
double 32 ±1.175e-38 to ±3.402e38

Khusus untuk tipe data bit hanya bisa dideklarasikan untuk variabel global.

3. Konstanta
Penulisan konstanta adalah sebagai berikut:
 Integer atau long integer dapat ditulis dengan format decimal (contoh 1234), biner
dengan awalan 0b (contoh 0b101001), heksadesimal dengan awalan 0x (contoh 0xff) atau
octal dengan awalan 0 (contoh 0777).
 Unsigned integer ditulis dengan diakhiri U (contoh 10000U).
 Long integer ditulis dengan diakhiri L (contoh 99L).
 Unsigned long integer ditulis dengan diakhiri UL (contoh 99UL).
 Floating poin ditulis dengan diakhiri F (contoh 1.234F).
Karakter konstanta harus ditulis dalam tanda kutip (contoh ‘a’), sedangkan konstanta
string harus dalam tanda kutip dua (contoh “Saya Belajar C”).

4. Label, Variabel, Fungsi


Identifikasi label, variabel dan fungsi dapat berupa huruf (A…Z, a…z) Dan angka
(0…9), juga karakter underscore (_). Meskipun begitu identikasi hanya bias dimulai dengan
huruf atau karakter underscore. Yang lebih penting lagi, identifikasi ini Case is significant,
yaitu huruf besar dan kecil berbeda. Misal variabel1 tidak sama dengan variabel1. identifikasi
bias memuat sebanyak 32 karakter.

5. Komentar
Komentar diawali dengan tanda ’/*’ dan diakhiri dengan ‘*/’. Perhatikan contoh dibawah:

/* ini komentar */
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 3 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

/* ini komentar
Multi baris */

Sedangkan komentar satu baris bisa dengan tanda ‘//’ sebagaimana contoh dibawah ini.

// ini juga komentar

6. Reserved Keywords
Berikut ini adalah daftar kata baku yang tidak bias dipakai (reserfed keywords) unutk
label, identifikasa atau variabel.

break flash signed Do int typedef


Bib float sizeof double interrupt union
case for sfrb eeprom long unsigned
char funcused sfrw else register void
const goto static enum return volatile
continue if struct extern short while
default inline switch

7. Operator
Suatu intruksi pasti mengandung operator dan operand. Operand adalah variabel atau
konstanta yang merupakan bagian pernyataan sedangkan operator adalah suatu simbol yang
menyatakan operasi mana yang akan dilakukun oleh operand tersebut. Contoh:

c= a+b;

Ada tiga operand (a, b dan c) dan dua operator (= dan +). Operator dalam C dibagi menjadi 3
kelompok, yaitu :
a. unary
operator yang beroperasi pada satu operand, misal: -n
b. binary
operator yang beroperasi pada dua operand, misal: a-n
c. ternary
operator memerlukan tiga autu lebih operand, misal: a = (b*c) + d

8. Aritmatika

Tabel 2. Simbol dan aritmatika


simbol Contoh aritmatika
+ c=a+b penjumlahan
n=n+2
- c=a-b pengurangan
n=n–2
++ ++i Kenaikan (increment), sama dengan i = i + 1
-- --i Penurunan (decrement), sama dengan i = i - i
* c=a*b perkalian
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 4 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

/ c=a/b pembagian
n=n/2
% Sisa = a % b Menghasilkan sisa dari pembagi. a dan b bilangan bulat
= a= b Pemberian nilai
+= A += 2 Penambahan suatu nilai pada suatu variabel yang sudah ada
sebelumnya. Sama dengan a = a + 2
-= A -= 2 Pengurangan suatu nilai pada suatu variabel yang sudah ada
sebelumnya. Sama dengan a = a - 2
*= A *= 2 Pengalian suatu nilai pada suatu variabel yang sudah ada
sebelumnya.nSama dengan a = a * 2
/= a /= 2 Pembagian suatu nilai pada suatu variabel yang sudah ada
sebelumnya.mSama dengan a = a / 2
%= A %= 2 Sisa dari suatu nilai pada suatu variabel yang sudah ada
sebelumnya yang dibagi oleh nilai atau variable lainnya.
Sama dengan a = a % 2
* *pointer Menunjukkan isi dari pointer

9. Logika
Tabel 3. Simbol dan Pembanding
Simbol Contoh Logika pembanding
== If (a= = b) Logika sama dengan, digunakan untuk pembanding.
Menghasilkan nilai true jika a=b
!= If (a != b) Tidak sama dengan. Menghasilkan nilai true jika a ≠ b.
< If (a < b) Logika lebih kecil dari. Menghasilkan nilai true jika a <
b.
<= If (a <= b) Logika lebih kecil sama dengan dari. Menghasilkan nilai
true jika a ≤ b.
> If (a > b) Logika lebih besar dari. Menghasilkan nilai true jika a >
b.
>= If (a >= b) Logika lebih beser sama dengan dari. Menghasilkan nilai
true jika a ≥ b.
! If (!a) NOT
&& If (a = = b && AND
a= = c)
|| If (a = = b | | a = OR
=c)

10. Manipulasi Bit


Tabel 4. Manipulasi Bit
~ A=~b Complement.
b = 1100; a = 0011.
& c=a&b AND untuk manupulasi bit.
a = 1100; b = 1001; c = 1000.
| c=a |b OR untuk manipulasi bit.
a = 1100; b = 1001; c = 0101.
<< c = a << n Shift left, manipulasi bit menggeser kekiri sejauh n bit
a = 1101; n = 2; maka c = 110100.
>> c = a >> n Shift Right, manipulasi bit menggeser kekanan sejauh n bit
a = 11010;n = 2; c = 0110.
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 5 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

11. Percabangan
 if – then
bentuk umum dari percabangan ini adalah:

if (kondisi) {
// pernyataan
};

Artinya adalah pernyataan akan dijalankan jika kondisi terpenuhi. Perhatikan contoh
dibawah ini:

if (a<0x50) {
PORTC=0x55;
};

Dalam contoh ini PORTC akan dikirim data 0x55 (ingat mode heksa) jika nilai a
lebih kecil dari 0x50.

 if – then – else
bentuk umum dari percabangan ini adalah:

if (kondisi)
{
// pernyataan a
}
else
{
// pernyataan b
};

Artinya adalah pernyataanya akan dijalankan jika kondisi terpenuhi dan pernyataan b
akan dijalankan jika kondisi tidak terpenuhi. 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.

 switch – case
Pernyataan switch – case digunakan jika terjadi banyak percabangan. Struktur
penulisan pernyataan ini adalah sebagai berikut:
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 6 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

…..
switch (ekspresi)
{
pernyataan1
`break;
case konstanta2:
pernyataan2
break;
……
case konstantaN:
pernyataanN
break;
}
…….

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.

 switch – case – default


Pernyataan switch – case – default hampir sama dengan switch – case. Hal yang
membedakannya adalah bahwa dengan adanya default maka jika tidak terdapat kondisi
case yang sesuai dengan ekspresi switch maka akan menuju pernyataan yang terdapat
pada bagian default. Struktur penulisan pernyataan ini adalah sebagai berikut:

switch (ekspresi)
{
case konstanta1
break;
case konstanta2:
pernyataan2
break;
….
case konstantaN:
pernyataanN
break;
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 7 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

default:
Pernyataan-pernyataan;
}

Perhatikan potongan program dibawah ini:

……
switch (a) {
case 1 :
PORTC=0x01;
break;
case 2 :
PORTC=0x02;
break;
case 3 :
PORTC=0x04;
break;
default:
PORTC=0XFF;
}
…..

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 dan jika kondisi case tidak
sesuai dengan ekspresi maka pernyataan di default akan dijalankan.

 Perulangan for
Pernyataan for akan melakukan perulangan berapa kali sesuai yang diinginkan.
Struktur penulisan perulangan for adalah sebagai berikut:

….
For (mulai ; kondisi ; penambahan atau pengurangan)
{
Pernyataan-pernyataan;
};

Mulai adalah pemberian nilai awal, kemudian kondisi adalah pengondisi dalam for
yaitu jika kondisi bernilai true maka pernyataan dalam for akan dijalankan. Penambahan
atau pengurangan adalah penambahan atau pengurangan terhadap nilai awal. Perhatikan
contoh dibawah:

…..
a=1;
for (i=1; i<50; i++)
{
a=a*2;
PORTC=a;
};
…..
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 8 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

Contoh program di atas akan melakukuan perulangan 40 kali, yaitu dari 1 hingga 50
dengan penambahan 1 (i++, lihat operator aritmatik). Hasilnya PORTC akan dikirim data
1, kemudian data 2,4,8, …..

 while
Bentuk dari 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. Perhatikan
contoh dibawah ini:
…..
i=1;
a=1;
while (i<50)
{
a=a*2;
PORTC=a;
i++ ;
};
……

 do – while
Bentuk perulangan ini kebalikan dari while – do, yaitu pernyataan dilakukan terlebih
dahulu kemudian diuji kondisinya

do
{
pernyataan-pernyataan;
} while (kondisi);

Perhatikan contoh berikut ini:

…..
i=1;
a=1;
do
{
a=a*2;
PORTC=a;;
i++ ;
}
while (i<50);
……
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 9 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

12. Konversi pola (%)


Karakter % dipakai sebagai operator konversi pola. Konversi pola akan sangat
berguna pada saat kita menampilkan hasil ke LCD.
 %d menampilkan bilangan bulat positif.
Contoh: Sprintf(buf,”angka%d”,14);
 %o menampilkan bilangan octal bulat.
 %x menampilkan bilangan heksadesimal bulat.
 %u menampilkan bilangan decimal tanpa tanda.
 %f menampilkan bilangan pecahan.
 %i menampilkan bilangan integer.
 %c menampilkan karakter yang ditunjukkan bilangan ASCII.

13. Prosedur dan fungsi


Seringkali dalam sebuah program akan menemukan kelompok instruksi untuk suatu
keperluan tertentu yang sering dijalankan. Kelompok instruksi ini bisa dibuat sebagai
prosedur atau fungsi. Langkah ini akan dapat menghemat memori dibanding bila instruksi-
instruksi tersebut ditulis berulang-ulang.

14. Prosedur
Prosedur adalah suatu kumpulan instruksi untuk mengerjakan suatu keperluan tertentu
tanpa mengembalikan suatu nilai.
…..
void nama_prosedur (parameter1, parameter2,……parameterN)
{
}
…..

Perhatikan contoh dibawah ini:

…..
void delay(unsigned char i)
{
while (i--) {
/* penulisan untuk bahasa assembly*/
/*akan dibahas tersendiri */

#asm
nop
nop
#endasm
};
}
…..
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 10 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

15. Fungsi
Fungsi adalah suatu kumpulan instruksi untuk mengerjakan suatu keperluan tertentu
dengan hasil akhir pengembalian nilai dari keperluan tersebut.

…..
Type data nama_fungsi (parameter1, parameter2, ….parameterN)
{
Pernyataan-pernyataan;
return variable_hasil;
}
….

Perhatikan contoh dibawah:

…..
int luas(int pj, int lb)
{
luas = pj*lb;
return luas;
}
….

Pemanggilan prosedur atau fungsi dilakukan dengan langsung menuliskan prosedur atau
fungsinya. Perhatikan contoh dibawah:

….
delay(150); // cara memanggil prosedur
dt = luas (5,10); // cara menggunakan fungsi
}
…..

16. Memasukkan Bahasa Assembly


Sering disebut juga dengan in-line assembly. Pemrograman dengan bahasa C ini
masih dapat memasukkan bahasa assembly ke dalam program C. Struktur penulisannya juga
mudah, yaitu:

#asm //dimulai dengan #asm
nop // blok bahasa assembly
nop //
#endasm // diakhiri dengan #endasm
….

Atau jika hanya beberapa instruksi maka kita bisa melakukannya dengan cara:

….
#asm(“nop\nop\nop”)
….
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 11 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

17. Pernyataan kendali lainnya


 Break
Pernyataan ini akan menghentikan dan menyebabkan keluar dari suatu blok program.
 Continue
Pernyataan ini akan menyebabkan kendali melakukan kembali proses perulangan
dari awal.
 Goto – label
Pernyataan ini akan melakukan loncatan ke label yang dituju. Penulis tidak
menyarankan menggunakan pernyataan ini.

B. Rangkaian
-

C. Program
Program 1
#include <mega16.h>
#include <delay.h>

unsigned char out1=0x01;


void main(void)
{

int i;
DDRC=0xFF;
PORTC=0x00;

while (1)
{
for(i=1;i<=8;i++)
{
PORTC=out1;
delay_ms(200);
out1<<=1;
}
out1=0x01;
};
}

Program 2

#include <mega16.h>
// Declare your global variables here

void main(void)
{
PORTB=0xFF;
DDRB=0xFF;

PORTC=0x00;
DDRC=0xFF;
while (1)
{
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/02 Revisi : 01 Kamis 010218 Hal. 12 dari 12 hal.
Sem.:Genap Codevision AVR 4 x 50 menit

if(PINB.0==0) {PORTC=0x01;}
if(PINB.1==0) {PORTC=0x02;}
if(PINB.2==0) {PORTC=0x04;}
if(PINB.3==0) {PORTC=0x08;}
if(PINB.4==0) {PORTC=0x10; }
if(PINB.5==0) {PORTC=0x20;}
if(PINB.6==0) {PORTC=0x40;}
if(PINB.7==0) {PORTC=0x80;}
else {}
};
}

D. Tugas
1. Tulislah program 1 dan program 2 dengan CVAVR
2. Lakukan konversi menjadi file yang berextensi .c menjadi berextensi .COF dan .HEX
yang siap dimasukan ke dalam mikrokontroller
3. Masukan file yang berextensi COF atau HEX ke dalam mikrokontroller ATMEGA16,
yang telah digambar pada labsheet 1, pertemuan sebelumnya
4. Lakukan penekanan Tombol PLAY pada proteus amati apa yang terjadi
5. Buatlah program yang sama untuk mikrokontroller ATMEGA32

Anda mungkin juga menyukai