Aplikasi Mikrokontroler
[KT015]
Oleh : Akhmad Musafa, M.T.
Teknik Elektro – Fakultas Teknik
Universitas Budi Luhur
Sesi 3 :
Teknik Pemrograman
Mikrokontroler AVR dengan
Bahasa C
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
3
Tujuan Pembelajaran
� Mahasiswa dapat memahami dan
menjelaskan teknik pemrograman
mikrokontroler AVR dengan bahasa C
� Mahasiswa dapat membuat program
mikrokontroler AVR ATmega16 dengan
bahasa C
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
4
Struktur Program C AVR ATmega#include<mega16.h>#include<delay.h>#define IRSensor
//variabel globalunsigned int i,j;
void main(void){
//deklarasi variabel lokalchar data_1;DDRA = 0xFF;PORTA = 0xFF;………………………………………..while(1) {……………………………………………………………..};
}
Program Utama
Inisialisasi
Preprocessor (#) :Digunakan untuk memasukkan(include) text dari file lain danmendefinisikan macro
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
5
Struktur Program C (1)
• Preprocessor(#) : digunakan untuk memasukkan (include) text dari file lain, mendefinisikan macro yang dapat mengurangi beban kerja pemrograman dan meningkatkan legibility source code (mudah dibaca)
• #define : digunakan untuk mendefinisikan macro– Contoh : #define ALFA 0xFF
#define SUM(a,b) a+b
#define sensor PINA.2
#define pompa PORTB.0
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
6
Struktur Program C (2)
• Komentar
– Penulisan untuk beberapa baris komentar
/*
…………komentar
*/
– Penulisan untuk satu baris komentar
// komentar
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
7
Struktur Program C (3)
• Identifiers
– Identifier adalah nama yang diberikan pada variabel, fungsi, label atau objek lain.
– Identifier dapat mengandung huruf (A..Z, a..z) dan angka (0..9) dan karakter (_).
– Identifier bersifat case sensitif.
– Identifier dapat mencapai maksimal 32 karakter.
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
8
Struktur Program C (4)
• Konstanta– Konstanta integer dan long integer ditulis dalam bentuk desimal (1234), dalam bentuk biner (0b01010101), heksadesimal (0x2F), atau dalam bentuk oktal (o657)
– Unsigned integer mempunyai akhiran U (10000U)
– Long integer mempunyai akhiran L (99L)
– Unsigned long integer mempunyai akhiran UL (99UL)
– Floating point mempunyai akhiran F (1.234F)
– Konstanta karakter harus dilingkungi oleh tanda kutip (‘a’)
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
9
Tipe Data
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
10
Operator (1)
• Operator Kondisi
Operator
Lebih dari>
Kurang dari<
Tdk sama dengan!=
Sama dengan==
Lebih dari atau sama dengan>=
Kurang dari atau sama dengan<=
Operasi
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
11
Operator (2)
• Operator Aritmatika
%
/
*
-
+
Operator
Bil. Bulat, realBil. Bulat, realPembagian
Bil. Bulat, realBil. Bulat, realPerkalian
Bil. Bulat, realBil. Bulat, realPengurangan
Bil. Bulat, realBil. Bulat, realPenjumlahan
Bil. bulatBil. bulatSisa pembagian
Tipe hasilTipe OperanOperasi
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
12
Operator (3)
• Operator Logika
Operator
Logika OR||
Logika AND&&
Boolean NOT!
OPERASI
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
13
Operator (4)
• Operator Bitwise
Operator
Bitwise OR|
Bitwise AND&
Komplemen Bitwise~
Pergeseran bit ke kanan>>
Pergeseran bit ke kiri<<
Bitwise XOR^
OPERASI
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
14
Teknik Percabangan
� Percabangan adalah teknik yang digunakan untuk
mengarahkan alur proses dalam program.
� Teknik percabangan banyak digunakan terutama
dalam pemrograman yang kompleks.
� Teknik Percabangan (dalam bahasa C) :
– Percabangan bentuk if-then [ if() ]
– Percabangan bentuk if-then-else [ if() … else … ]
– Percabangan Nested if [ if … else … if … else … ]
– Percabangan dengan [ switch … case … default ]
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
15
Struktur Percabangan if-then
• Percabangan ini digunakan untuk menyeleksi satu
kondisi tunggal
• Struktur :
if (syarat){
pernyataan;
- - -
- - -
}
syarat?
pernyataan
Ya
Tidak
next instruction
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
16
Struktur Percabangan
if-then-else
• Struktur :
if (syarat){
pernyataan jika benar;
- - -
}
else{
pernyataan jika salah;
- - -
}
syarat?
pernyataan
jika benar
YaTidak
next instruction
pernyataan
jika salah
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
17
Struktur Percabangan
Nested if
• Percabangan bersarang terjadi apabila pada cabang
terjadi kondisi yang menyebabkan terjadinya
percabangan kembali
syarat1TRUEFALSE
pernyataan1 syarat2
pernyataan2
FALSE
TRUE
if (syarat1){
if (syarat2){ pernyataan3;
}
else {penyataan2;}
}
else{
pernyataan1;
}pernyataan3
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
18
Struktur Percabangan switch (1)
• Statemen switch berguna untuk menangani kasus yang
memerlukan percabangan yang banyak
• Sebagai penyederhanaan dari percabangan dengan
Nested IF
• Statemen switch membutuhkan satu variabel yang dapat
mempunyai beberapa harga
• Harga ini ditempatkan di depan kata kunci case
• Statemen switch akan memberikan aksi yang berbeda
untuk harga variabel yang berbeda
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
19
Struktur Percabangan switch (2)
Kondisi_1
dipenuhi?
Kondisi_2
dipenuhi?
Kondisi_n
dipenuhi?
statemen_1
statemen_2
Statemen_n
next instruction
Tidak
Ya
Ya
Ya
Tidak
Tidak
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
20
Struktur Percabangan swicth (3)
switch (variabel)
{
case konstanta_1: {statemen_1; break;}
case konstanta_2: {statemen_2; break;}
- - - -
- - - -
- - - -
case konstanta_n: {statemen_n; break;}
default; {statemen default;}
}
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
21
Teknik Perulangan
• Statemen for
• Statemen while
• Statetmen do…while
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
22
Perulangan dengan Statemen for
• Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah diketahui jumlah perulangannya.
• Dari segi penulisannya, struktur perulangan for tampaknya lebih efisien karena susunannya lebih simpel dan sederhana.
• Bentuk umum perulangan for adalah sebagai berikut :
for (variabel=nilai_awal; syarat_loop; variabel++){
statemen_yang_diulang;
}
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
23
Struktur Perulangan Statemen for
• Melakukan inisialisasi (memberikan nilai awal kondisi)
• Memeriksa nilai kondisi– Jika benar, maka laksanakan
loop 3, setelah itu rubah kondisi 4, kemudian kembali ke no-2
– Jika salah, maka langsung keluar dari loop melaksanakan langkah 5 (loop selesai)
inisialisasi
kondisi
proses_dalam_loop
perubahan_indeks
for (inisialisasi; kondisi; perubahan_indeks){
proses_dalam_loop;
}
next instruction;N
Y
next instruction
1
2
3
4
5
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
24
Perulangan dengan Statemen while
• Perulangan while banyak digunakan pada
program yang terstruktur.
• Perulangan ini banyak digunakan bila
jumlah perulangannya belum diketahui.
• Proses perulangan akan terus berlanjut
selama kondisinya bernilai benar (true)
dan akan berhenti bila kondisinya bernilai
salah.
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
25
Struktur Perulangan Statemen while
• Cara kerja perulangan dengan
statemen while sama dengan
perulangan dengan statemen
for
inisialisasi
kondisi
Proses_dalam_loop
Perubahan_indeks
inisialisasi;
while (kondisi)
{
proses_dalam_loop;
perubahan_indeks;
}
next instruction;
N
Y
next instruction
1
2
3
4
5
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
26
Perulangan dengan Statemen
do…while
• Pada dasarnya struktur perulangan do....while sama saja dengan struktur while, hanya saja pada proses perulangan dengan while, seleksi berada di while yang letaknya di atas sementara pada perulangan do....while, seleksi while berada di bawah batas perulangan.
• Jadi dengan menggunakan struktur do…while sekurang-kurangnya akan terjadi satu kali perulangan.
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
27
Struktur Perulangan Statemen do while
inisialisasi
kondisi
proses_dalam_loop
perubahan_indeks
N
Y
next instruction
1
2
3
4
5
inisialisasi;
do
{
proses_dalam_loop;
perubahan_indeks;
}
while(kondisi);
next instruction;
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
28
Array
• Array adalah deretan variabel dengan nama dan tipe data sama.
• Setiap anggota deretan (elemen) diberi nomor yang disebut indeks (dimulai dari nol).
• Jenis Array :
– Satu dimensi
– Dua dimensi
– Multi dimensi
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
29
• Deklarasi Array :
• Contoh :
tipe_array nama_array[ukuran];
int nilai[5];
nilai[0]
70
nilai[1] nilai[2] nilai[3] nilai[4]
60 85 75 65
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
30
Fungsi
• Sebuah program yang besar dapat
dipecah menjadi beberapa sub program
yang terpisah untuk melakukan fungsi
tertentu.
• Sub program seperti ini disebut fungsi.
• Jenis fungsi :
– Fungsi dengan nilai balik
– Fungsi tanpa nilai balik
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
31
• Deklarasi fungsi :
– tipe
• Nilai yang dihasilkan oleh fungsi.
• Jika tidak dinyatakan, hasil fungsi dianggap bertipe integer.
• Deklarasi tipe void dapat digunakan untuk menghindari
terjadinya nilai balik.
– argumen
• Deklarasi variabel apa saja yang dibutuhkan oleh fungsi
• Bersifat optional
tipe nama_fungsi(argumen);
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
32
Fungsi dengan Nilai Balik
• Fungsi ini memberikan hasil berupa nilai
(return value)
• Contoh :
long luas_persegi_panjang()
{
int panjang =10;
int lebar = 5;
return(panjang*lebar);}
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
33
Fungsi tanpa Nilai Balik
• Fungsi ini tidak memberikan hasil berupa nilai
(return value), melainkan berua sebuah proses
• Fungsi ini bertipe void
• Contoh : void flip_flop()
{
PORTD = 0x00;
delay_ms(1000);
PORTD = 0xFF;
delay_ms(1000);
return;
}
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
34
Catatan
• Pernyataan return dapat menyatakan dua hal :
– return mengakhiri jalannya fungsi dan kembali ke
program utama
– Mengirim nilai balik
• Fungsi dapat ditulis diawal program atau diakhir
program (sebelum atau sesudah program
utama).
• Jika fungsi ditulis di akhir program, maka perlu
dilakukan deklarasi fungsi (prototype function)
di bagian awal program.
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
35
Parameter dalam sebuah fungsi
• Parameter formal
– Parameter pada saat fungsi itu dibuat
• Parameter actual
– Parameter yang terdapat pada saat
pemanggilan fungsi
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
36
Library Function pada
CodeVision AVR
• Fungsi Input/Output
• Fungsi Tipe Karakter
• Fungsi Standar
• Fungsi Matematika
• Fungsi Konversi BCD
• Fungsi LCD
• Fungsi Delay
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
37
Fungsi Input/Output (1)
• Terletak dalam file stdio.h (pada direktori
c:\cavr\inc\STDIO.h).
• Beberapa fungsi I/O dasar :
– char getchar(void)
• Fungsi ini digunakan untuk menerima data serial (dengan
sistem polling). Fungsi ini menghasilkan nilai balikan berupa
karakter yanf diterima dari UART.
– void putchar(char c)
• Fungsi ini digunakan untuk mengirimkan karakter ‘c’
menggunakan UART pada komunikasi serial menggunakan
sistem polling (mengirimkan data serial).
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
38
Fungsi Input/Output (2)
• void puts(char *str)– sebagai fungsi output, menggunakan putchar, nulldigunakan untuk mengakhiri karakter string, dan berlokasi di SRAM.
• void putsf(char flash *str)– sebagai fungsi output, menggunakan putchar, nulldigunakan untuk mengakhiri karakter string, dan berlokasi di memori flash.
• void printf(char flash *fmtstr[ , arg1, arg2, ...])– sebagai fungsi output untuk text yang terformat, menggunakan putchar, sesuai dengan format specifiers dalam fmtstr string.
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
39
Fungsi Tipe Karakter
• Berada di dalam file ctype.h yang terletak pada direktori c:\cavr\inc\ctype.h).
• Beberapa fungsi tipe karakter :– char toascii(char c)
• digunakan untuk konversi char c menjadi data ASCII.
– char toint(char c)• digunakan untuk menginterpretasikan karakter c sebagai digit heksadesimal dan mengkonversikannya menjadi unsigned char dari 0 sampai 15.
– char tolower(char c)• digunakan untuk mengubah karakter c menjadi huruf kecil.
– char toupper(char c)• digunakan untuk mengubah karakter c menjadi huruf besar.
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
40
Standard Library Function
• Terletak pada file stdlib.h (pada direktori c:\cavr\inc\stdlib.h)
• Beberapa fungsi pada file stdlib.h :– int atoi(char *str)
• digunakan untuk mengubah string str menjadi data integer.
– long atol(char *str)
• digunakan untuk mengubah string str menjadi data long integer.
– void itoa(int n, char *str)
• digunakan untuk mengubah integer n menjadi karakter pada string str.
– void ltoa(long int n,char *str)
• digunakan untuk mengubah long int n menjadi karakter pada stringstr.
– void float(float n,unsigned char decimal, char *str)
• digunakan untuk mengubah floating n menjadi karakter pada stringstr.
Aplikasi Mikrokontroler Sesi-3 : Pemrograman
Mikrokontroler AVR dengan C
41
Terima kasihTerima kasihTerima kasihTerima kasih…………!!!!