SlideShare a Scribd company logo
CopyRigh@Eka Budi.2018
MODUL SIMULASI PEMOGRAMAN MIKROKONTROLER
DALAM PROGRAM BAHASA C
PENDAHULUAN
Compiler Bahasa C menghasilkan file hex yang akan digunakan dalam memori Flash
Mikrokontroler. Ukuran file hex yang dihasilkan oleh compiler merupakan hal yang penting
perlu diperhatikan karena mikrokontroler mempunyai memori on chip flash yang terbatas.
Pemograman dengan Bahasa C lebih mudah daripada dibandingkan dengan Bahasa
Assembly, karena Bahasa C lebih mudah dimodifikasi dan diperbaruhui, serta kodenya bersifat
portable terhadap berbagai mikrokontroler.
6. 1 DASAR – DASAR PENULISAN BAHASA C
1. Metode dan Struktur Penulisan bahasa C :
a) Pernyataan
Satu atau beberapa ekspresi yang diakhiri dengan tanda titik koma (;).
b) Blok Pernyataan
Terdiri dari satu atau beberapa pernyataan yang diawali dengan tanda { dan
diakhiri dengan tanda }. Blok pernyataan selalu diawali dengan suatu instruksi.
c) Blok fungsi
Terdiri dari satu atau beberapa pernyataan yang dirancang untuk melakukan proses
tertentu. Blok fungsi dimulai dengan nama fungsi dan diikuti tanda () dan tanda { diakhiri
tanda }.
#include < mega16.h>
/* directive #include digunakan jika mengambil fungsi-fungsi library*/
// Deklarasi variabel global
....
void main() /* Variabel fungsi sbg awal program */
{ /*blok awal*/
// Deklarasi variabel local
....
// Pernyataan – pernyataan dan kode – kode yang dihasilkan
.....
} /*blok akhir*/
while (1) /* Fungsi program utama */
{
// Fungsi Pernyataan – pernyataan dari program utama
....
}
CopyRigh@Eka Budi.2018
- #include < .... >
 Bukanlah merupakan pernyataan, sehingga tidak diakhiri dengan titik koma (;).
Baris tersebut miminta kompiler untuk menyertakan file yang namanya ada di
antara < ....> dalam proses kompilasi. File – file ini (yang berekstensi. h) berisi
deklarasi fungsi ataupun variabel, file ini disebut header. File ini digunakan
semacam perpustakaan (library) bagi pernyataan yang ada ditubuh program.
#include merupakan salah satu jenis pengarah praprosesor (preprocessor
directive). Preprosesor directive adalah bagian yang berisi pengikutsertaan file
atau berkas-berkas fungsi maupun pendefinisian konstanta
Contoh :
#include <mega16.h>, #include <stdio.h>, #include <math.h> dan lain – lain
2. Tipe Data
No Tipe Data Ukuran
1 Unsigned char 8 bit
2 Char 8 bit
3 Unsigned int 16 bit
4 int 16 bit
5 Long 32 bit
6 Unsigned Long 32 bit
7 Float 32 bit
8 Double 32 bit
 Untuk penggunaan mikrokontroler AVR yang 8 bit baiknya menggunakan tipe
data yang 8 bit juga, seperti penggunaan tipe data Unsigned char, Char yang
mempunyai rentang nilai 0 s/d 255 (0x00 s/d 0Xff)
- Variable
 Variabel adalah identifier yang nilainya dapat berubah atau diubah selama
program berjalan (dieksekusi). Pengubahnya adalah user atau proses.
- Deklarasi variabel (tipe_data nama_variabel;)
Variabel yang akan digunakan dalam program haruslah dideklarasikan terlebih
dahulu. Pengertian deklarasi di sini berarti memesan memori dan menentukan
jenis data yang bisa disimpan di dalamnya.
Contoh : int a, b, c;
CopyRigh@Eka Budi.2018
- Inisialisasi variabel (tipe_data nama_variabel = nilai;)
Contoh : int a = 10 ;
- Konstanta
 Konstanta adalah identifier yang nilainya tetap selama program berjalan/
dieksekusi. Cara untuk mengubahnya hanya melalui source codenya saja seperti
halnya variabel, konstanta juga memiliki tipe. Penulisan konstanta mempunyai
aturan tersendiri, sesuai dengan tipe masing-masing.
Contoh : #define PHI 3.14, #define max_data 50
3. Deklarasi
 Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier) dalam program.
Identifier dapat berupa konstanta, variable dan fungsi.
- Deklarasi Fungsi
 Fungsi merupakan bagian yang terpisah dari program dan dapat diaktifkan atau
dipanggil di manapun di dalam program
Contoh : float luas_lingkaran(int jari), void tampil() dan lain – lain
4. Operator
 Operator merupakan intruksi khusus yang dikenai untuk variable. Ada beberapa jenis
operator, yaitu :
a. Operator Penugasan (Assignment Operator)
=> Operator penugasan dalam bahasa C++ berupa tanda sama dengan atau “=”.
Contoh : nilai = 70 , A = x * y
b. Operator Aritmatika
=> Operator Aritmatika merupakan operator yang digunakan untuk fungsi/operasi
matematika, adapun operator aritmatika dasar tersebut adalah :
* : untuk perkalian
/ : untuk pembagian
% : untuk sisa hasil bagi (modulus)
+ : untuk penjumlahan
- : untuk pengurangan
CopyRigh@Eka Budi.2018
Contoh : Program penggunaan operator penjumlahan
Contoh : Penggunaan Operator sisa pembagian (modulus)
c. Operator Perbandingan
=> Operator pembanding digunakan untuk membandingkan antara dua buah variabel.
Operator pembanding sering pada saat pengecekan atau statemen if, perulangan atau
statemen for, while, do while.
#include <mega16.h>
void main(void)
{
char A;
char B;
DDRA = 0xFF;
PORTA = 0xFF;
A= 8;
B= 1;
PORTA = A+B;
}
#include <mega16.h>
void main(void)
{
char A;// Penerapan A sebagai variabel
char B;
DDRA = 0xFF; // Inisialisasi PORT A sebagai Output
PORTA = 0xFF;
A= 8; // variabel A di inisialisasi dengan bilangan 8
B= 3;
PORTA = A%B; // modulus 8 dan 3, hasilnya di kirim ke PORT A
}
CopyRigh@Eka Budi.2018
d. Operator Logika
=> Operator logika merupakan operator yang membandingkan hubungan antara dua
hasil dari operasi pembanding. Operator logika membandingkan logika hasil
dari dua operasi pembanding dan akan melakukan operasi khusus apabila
bernilai benar dan apabila bernilai salah maka akan melakukan sebaliknya.
Operator yang digunakan dalam operasi logika ada tiga yaitu :
Contoh : Penggunaan Operator logika
e. Operator Bitwise
Operator bitwise dalam bahasa C :
- << : Pergeseran bit ke kiri
#include <mega16.h>
// Declare your global variables here
void main(void)
{
char A;// Penerapan A sebagai variabel
char B;
DDRA = 0xFF; // Inisialisasi PORT A sebagai Output
PORTA = 0xFF;
A= 0xfc; // variabel A di inisialisasi dengan bilangan hexa 0xfc
B= 0x30; // variabel B di inisialisasi dengan bilangan hexa 0x30
if ((A==0xfc) && (B==0x30)) // Jika A AND B benar maka
{
PORTA = 0x4b; // PORT A diisi dengan 0x4b
}
}
CopyRigh@Eka Budi.2018
 Operasi geser kiri merupakan operasi yang akan menggeser bit – bit kekiri,
sehingga bit 0 akan berpindah ke bit 1 kemudian bit 1 berpindah ke bit 2 dan
seterusnya.
Contoh :
A = A << 1; // Isi variabel A digeser kekiri 1 bit, hasil disimpan kembali di A
Contoh : Penggunaan Operator geser kiri
- >> : Pergeseran bit ke kanan
 Operasi geser kanan merupakan operasi yang akan menggeser bit – bit kekanan
sehingga bit 7 akan berpindah ke bit 6, kemudian bit 6 akan berpindah ke bit 5
dan seterusnya.
Contoh :
A = A >> 1; // Isi variabel A digeser kekanan 1 bit, hasilnya disimpan lagi di A
- & : Bitwise AND
- ^ : Bitwise XOR (exclusive OR)
- | : Bitwise OR
- ~ : Bitwise NOT
#include <mega16.h>
// Declare your global variables here
void main(void)
{
char A, LED;// Penerapan A sebagai variabel
DDRA = 0xFF; // Inisialisasi PORT A sebagai Output
PORTA = 0xFF;
LED = 0b00000001;
for (A=0; A<8; A++)
{
PORTA = LED;
LED= LED<<1 ;
}
}
CopyRigh@Eka Budi.2018
f. Operator Unary
=> Operator Unary merupakan operator yang hanya membutuhkan satu operand saja.
Dalam bahasa C terdapat beberapa operator unary, yaitu :
6.2 Seleksi Kondisi
=> Seleksi kondisi digunakan untuk mengarahkan perjalanan suatu proses. Fungsi
penyeleksian kondisi penting, terutama untuk program yang kompleks.
Jenis – jenis pemilihan kondisi:
a) Pilihan Tunggal (IF)
 Bentuk umum :
Contoh :
if (kondisi)
{
true statement;
}
#include <mega16.h>
void main(void)
{
char A;// Penerapan A sebagai variabel
DDRA = 0xFF; // Inisialisasi PORT A sebagai Output
DDRB = 0xFF;
A = PORTB;
if (A==0x25)
{
PORTA = 0x19 ;
}
}
CopyRigh@Eka Budi.2018
b) Pilihan Ganda (IF ... ELSE ...)
 Digunakan untuk menentukan tindakan yang akan digunakan bila kondisi
bernilai benar dan salah. Bentuk umum:
Contoh :
c) Struktur Case
 Untuk masalah dengan dua pilihan atau lebih, struktur CASE dapat
menyederhanakan penulisan IF yang bertingkat-tingkat. Bentuk umum:
if kondisi
{
true statement;
}
else
{
false statement;
}
#include <mega16.h>
void main(void)
{
char A;// Penerapan A sebagai variabel
DDRA = 0xFF; // Inisialisasi PORT A sebagai Output
DDRB = 0xFF;
A = PORTB;
if (A==0x25)
{
PORTA = 0x19 ;
}
else
{
PORTA = 0x12;
}
}
Switch(kondisi)
{
case konstanta1 : {Statement-statement ; break}
case konstanta1 : {Statement-statement ; break}
case konstanta1 : {Statement-statement ; break}
.......
}
CopyRigh@Eka Budi.2018
Contoh :
6.3 Perulangan (Looping)
Dalam bahasa C tersedia suatu fasilitas yang digunakan untuk melakukan proses
yang berulang – ulang sebanyak yang diinginkan. Struktur perulangan dalam bahasa C
mempunyai bentuk yang bermacam – macam, yaitu :
1. Struktur Perulangan “FOR”
 Struktur perulangan For bisa digunakan untuk mengulang suatu proses yang telah
diketahui jumlah perulangannya.
Bentuk Umum :
Keterangan :
- Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variabel kontrol.
- Syarat : ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan
- Penambahan : pengatur perubahan nilai variabel kontrol
#include <mega16.h>
// Declare your global variables here
void main(void)
{
char a;// Penerapan A sebagai variabel
DDRA = 0xFF; // Inisialisasi PORT A sebagai Output
DDRB = 0xFF;
a = PORTA;
switch (a)
{
case 0: PORTB=5; break;
case 1: PORTB=10; break;
case 2: PORTB=15; break;
default: PORTB=0; break;
}
}
For (inisialisasi; syarat; penambahan)
Pernyataan ;
CopyRigh@Eka Budi.2018
Contoh : Perulangan FOR
2. Struktur Perulangan “WHILE”
 Perulangan WHILE banyak digunakan pada program terstruktur. Perulangan ini
banyak digunakan bila jumlah perulangannya belum diketahui. Prose perulangan
akan terus berlanjut selama kondisinya bernilai benar (true) dan akan berhenti
bila kondisinya bernilai salah (false).
Bentuk Umum :
Contoh :
#include <mega16.h>
// Declare your global variables here
void main(void)
{
char a;// Penerapan A sebagai variabel
DDRA = 0xFF; // Inisialisasi PORT A sebagai Output
for (a=10; a>0; a--)
PORTA =a ;
}
While (ekspresi)
{
Pernyataan – 1 ;
Pernyataan – 2 ;
}
#include <mega16.h>
// Declare your global variables here
void main(void)
{
char a=10;// Penerapan A sebagai variabel
DDRA = 0xFF; // Inisialisasi PORT A sebagai Output
while (a >= 0 )
{
PORTA =a ;
a--;
}
}
CopyRigh@Eka Budi.2018
3. Struktur Perulangan “ 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 diatas, sementara pada perulangan do ... while seleksi while berada
dibawah batas perulangan. Jadi dengan menggunakan struktur do ... while
sekurang – kurangnya akan terjadi satu kali perulangan.
Bentuk Umum :
Contoh :
6.4 Pengenalan Mikrokontroler AVR
AVR (Alf and Vegard‟s Risc Processor) merupakan salah satu jenis mikrokontroler yang
di dalamnya terdapat berbagai macam fungsi. AVR memiliki keunggulan dibandingkan dengan
mikrokontroler jenis lain, keunggulannya yaitu AVR memiliki kecepatan eksekusi program yang
lebih cepat karena sebagian besar instruksi dieksekusi dalam 1 siklus clock, lebih cepat bila
dibandingkan dengan mikrokontroler jenis MCS51 yang memiliki arsitektur CISC (Complex
Instruction Set Compute) dimana mikrokontoller MCS51 membutuhkan 12 siklus clock untuk
Do
{
Pernyataan – 1 ;
Pernyataan – 2 ;
}
While (ekspresi)
#include <mega16.h>
// Declare your global variables here
void main(void)
{
char a=10;// Penerapan A sebagai variabel
DDRA = 0xFF; // Inisialisasi PORT A sebagai Output
do
{
PORTA = a;
a--;
}
while (a >= 0);
}
CopyRigh@Eka Budi.2018
mengeksekusi 1 instruksi (Heri Andrinto, 2008:2). Selain itu kelebihan mikrokontroler AVR
memiliki POS (Power On Reset), yaitu tidak perlu adanya tombol reset dari luar karena cukup
hanya dengan mematikan supply, maka secara otomatis AVR akan melakukan reset.Antar seri
mikrokontroler AVR memiliki beragam tipe dan fasilitas, namun kesemuanya memiliki arsitektur
yang sama, dan juga set instruksi yang relatif tidak berbeda. Berikut tabel perbandingan beberapa
seri mikrokontroler AVR buatan Atmel.
Tabel . perbandingan beberapa seri mikrokontroler AVR buatan Atmel
Seri
Flash
(KBytes)
RAM
(Bytes)
EEPROM
(KBytes)
Pin
I/O
Timer
16-bit
Timer
8-bit
UART PWM
ADC 10-
bit
SPI ISP
ATmega8 8 1024 0.5 23 1 1 1 3 6/8 1 Ya
ATmega8535 8 512 0.5 32 2 2 1 4 8 1 Ya
ATmega16 16 1024 0.5 32 1 2 1 4 8 1 Ya
ATmega162 16 1024 0.5 35 2 2 2 6 8 1 Ya
ATmega32 32 2048 1 32 1 2 1 4 8 1 Ya
ATmega128 128 4096 4 53 2 2 2 8 8 1 Ya
ATtiny12 1 - 0.0625 6 - 1 - - - - Ya
ATtiny2313 2 128 0.125 18 1 1 1 4 - 1 Ya
ATtiny44 4 256 0.25 12 1 1 - 4 8 1 Ya
ATtiny84 8 512 0.5 12 1 1 - 4 8 1 Ya
Keterangan:
 Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program hasil
buatan manusia yang harus dijalankan oleh mikrokontroler
 RAM (Random Acces Memory) merupakan memori yang membantu CPU untuk
penyimpanan data sementara dan pengolahan data ketika program sedang running
 EEPROM (Electrically Erasable Programmable Read Only Memory) adalah memori untuk
penyimpanan data secara permanen oleh program yang sedang running
 Port I/O adalah kaki untuk jalur keluar atau masuk sinyal sebagai hasil keluaran ataupun
masukan bagi program
 Timer adalah modul dalam hardware yang bekerja untuk menghitung waktu/pulsa
 UART (Universal Asynchronous Receive Transmit) adalah jalur komunikasi data khusus
secara serial asynchronous
CopyRigh@Eka Budi.2018
 PWM (Pulse Width Modulation) adalah fasilitas untuk membuat modulasi pulsa
 ADC (Analog to Digital Converter) adalah fasilitas untuk dapat menerima sinyal analog
dalam range tertentu untuk kemudian dikonversi menjadi suatu nilai digital dalam range
tertentu
 SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial secara
serial synchronous
 ISP (In System Programming) adalah kemampuan khusus mikrokontroler untuk dapat
diprogram langsung dalam sistem rangkaiannya dengan membutuhkan jumlah pin yang
minimal
1. Mengenal ATmega16
Mikrokontroler ini menggunakan arsitektur Harvard yang memisahkan memori program
dari memori data, baik bus alamat maupun bus data, sehingga pengaksesan program dan data
dapat dilakukan secara bersamaan (concurrent), adapun blog diagram arsitektur ATMega16.
Secara garis besar mikrokontroler ATMega16 terdiri dari :
1. Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16Mhz.
2. Memiliki kapasitas Flash memori 16Kbyte, EEPROM 512 Byte, dan SRAM 1Kbyte
3. Saluran I/O 32 buah, yaitu Port A, Port B, Port C, dan Port D.
4. CPU yang terdiri dari 32 buah register.
5. User interupsi internal dan eksternal
6. Port antarmuka SPI dan Port USART sebagai komunikasi serial
7. Fitur Peripheral
- Dua buah 8-bit timer/counter dengan prescaler terpisah dan mode compare
- Satu buah 16-bit timer/counter dengan prescaler terpisah, mode compare, dan mode
capture
- Real time counter dengan osilator tersendiri
- Empat kanal PWM dan Antarmuka komparator analog
- 8 kanal, 10 bit ADC
- Byte-oriented Two-wire Serial Interface
- Watchdog timer dengan osilator internal
CopyRigh@Eka Budi.2018
2. Konfigurasi Pin ATMega16
Gambar 2. Konfigurasi PIN ATMega16
Dengan deskripsi Pin sebagai berikut :
 VCC:Sumber Tegangan
 Ground : Ground
 Port A (PA0..PA7):Pin ini berfungsi sebagai port masukan ke A/D Converter. Port ini juga
bertindak sebagai Port I/O 8-bit dua arah, jika A/D Converter itu tidak digunakan. Pin - pin
Port dapat menyediakan resistor internal pull-up (yang dipilih untuk masing-masing bit).
Keluaran Port A memiliki karakteristik-karakteristik pengarah simetris dengan sitem dua
arah dan sumber yang tinggi. Port A bersifat tri-stated yaitu ketika kondisi reset akan aktif,
sekali pun clock tidak menjalankan.
 Port B (PB0..PB7):Port B adalah satu Port I/O 8-bit dua arah dengan resistor-resistor pull-up
internal (yang terpilih untuk masing-masing bit). Keluaran buffer Port B mempunyai
karakteristik-karakteristik pengarah simetris dengan kedua kemampuan sumber yang tinggi.
Pada input, Port B menggunakan sumber arus rendah jika resistor-resistor pull-up diaktifkan.
Port B bersifat tri-stated, yaitu reset akan aktif walaupun clock tidak dijalankan.
 Port C (PC0..PC7):Port C adalah satu Port I/O 8-bit dua arah dengan resistor-resistor pull-up
internal (yang terpilih untuk masing-masing bit). Keluaran Port C mempunyai karakteristik-
karakteristik pengarah simetris dengan kedua kemampuan sumber tinggi. Pada input, Port C
menggunakan sumber arus rendah jika resistor-resistor pull-up diaktifkan. Port C bersifat tri-
stated ketika reset aktif, walaupun clock tidak aktif. Jika antar muka JTAG adalah
CopyRigh@Eka Budi.2018
dimungkinkan, resistor-resistor pull-up pin PC5(TDI), PC3(TMS) dan PC2(TCK) akan
diaktifkan walaupun reset aktif.
 Port D (PD0..PD7):Port D adalah satu Port I/O 8-bit dua arah dengan resistor-resistor pull-
up internal (yang terpilih untuk masing-masing bit). Pin - pin output Port D mempunyai
karakteristik-karakteristik pengarah simetris dengan kedua kemampuan sumber tinggi. Pada
input, Port D secara eksternal menggunakan sumber arus rendah yang dengan mengaktifkan
resistor-resistor pull-up. Port D bersifat tri-stated, yaitu reset menjadi aktif walaupun clock
tidak diaktifkan.
 RESET:Pada Input Reset, besarnya amplitude yang dibutuhkan untuk mengaktifkan reset
adalah lebih besar dari panjang pulse minimum untuk mengatur ulang (sesuai datasheet),
sekali pun clock itu tidak diaktifkan. Pulsa yang lebih pendek belum tentu dapat
mengaktifkan reset.
 XTAL1:Input pembalik / pembangkit Oscillator penguat dan input rangkaian operasi clock
internal.
 XTAL2:Output dari pembalik / pembangkit Oscillator penguat.
 AVCC:AVCC adalah pin sumber tegangan untuk Port A dan A/D Converter. Pin harus
disambungkan secara eksternal ke VCC, walaupun konverter analog-digital tidak digunakan.
Jika konverter analog-digital digunakan, Pin harus dihubungkan ke VCC melalui suatu Low-
Pass Filter.
 AREF:AREF berfungsi sebagai pin referensi analog untuk A/D Converter.
3. Port sebagai input/output digital
ATMega16 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD.
Keempat port tersebut merupakan jalur bidirectional dengan pilihan internal pull-up. Tiap port
mempunyai tigabuah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf „x‟mewakilinama
huruf dari port sedangkan huruf „n‟ mewakili nomor bit. BitDDxn terdapat pada I/O address
DDRx, bit PORTxn terdapat padaI/O address PORTx, dan bit PINxn terdapat pada I/O address
PINx.
Bit DDxn dalam register DDRx (Data Direction Register) menentukan arah pin. Bila
DDxn diset 1 maka Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi
sebagai pin input.Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin input, maka
CopyRigh@Eka Budi.2018
resistor pull-up akan diaktifkan. Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau
pin dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi reset. Bila PORTxn
diset 1 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila
PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 0.
Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high
(DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled
(DDxn=0, PORTxn=1) atau kondisi output low (DDxn=1, PORTxn=0).
Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama lingkungan
impedansi tinggi tidak memperhatikan perbedaan antara sebuah strong high driver dengan
sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset 1
untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input dengan pull-up
ke kondisi output low juga menimbulkan masalah yang sama. Kita harus menggunakan kondisi
tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi
transisi.
Tabel . Konfigurasi pin port
Bit 2 – PUD :Pull-up Disable
Bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan walaupun register DDxn dan
PORTxn dikonfigurasikan untuk menyalakan pull-up (DDxn=0, PORTxn=1).
CopyRigh@Eka Budi.2018
6.5 Persiapan Percobaan Penerapan Mikrokontroler AVR
1) Percobaan Dengan Proteus 7 dan CodeVision AVR
a) Projek Pengontrolan Lampu LED
Contoh 1 : Simulasi Program Blinking LED
 Langkah – langkah :
- Membuat Scematik rangkaian di Proteus 7, seperti berikut :
Komponen :
- Mikrokontroler Atmega16
- LED 10 buah
- Resistor 220 R 10 buah
Untuk Reset :
- Push button
- Crystal
- Kapasitor 22p 2 buah
- Kapasitor 100n 1 buah
- Resistor 100 K 1 buah
- Membuat Program di CodeVision AVR
a) Buat Program ke dalam CV AVR. Setelah membuka Program CodeVision AVR
Pilih File → New→ Pilih Project
CopyRigh@Eka Budi.2018
Gambar . Membuat File baru
- Selanjutnya akan muncul window konfirmasi menggunakan AGP CodeWizardAVR
→ Yes
Gambar. Project baru menggunakan CodeWizardAVR
- Atur Konfigurasi Chip yang digunakan
CopyRigh@Eka Budi.2018
- Atur PORT sesuai dengan rangkaian, dimana PORT C sebagai Output
- Selanjutnya setelah pengaturan selesai, simpan file dengan memilih Program  Pilih
Generate, Save and Exit, seperti berikut :
- Selanjutnya isikan nama file yang ingin digunakan (File tersimpan dalam 3 file,
dalam hal ini File.c, File.prj, dan File.cwp, dengan masing – masing nama ditulis
sama, dan Klik Save, seperti berikut :
CopyRigh@Eka Budi.2018
- Selanjutnya akan terbentuk file untuk diisi logika program :
 Secara default semua variabel akan terbentuk dan komentar tentang program, baik
deklarasi variabel ataupun inisialisasi PORT yang digunakan.
Catatan :
- Hapus semua variabel dan komentar yang tidak digunakan
- // (tanda slas 2 tersebut menyatakan komentar untuk 1 baris), dalam hal ini
komentar tidak dieksekusi/ diproses oleh program
- /* ......... */ (menyatakan komentar dalam beberapa baris)
#include <mega16.h>
#include <delay.h> // menyatakan memanggil Library delay
void main(void)
{
// Mendefinisikan PORT Untuk Output
PORTC=0x00;
DDRC=0xFF; // PORT C sebagai Output
while (1)
{
// Untuk Fungsi
PORTC = 0x00; // Kondisi LED Menyala
delay_ms(1000); // LED Menyala selama 1 detik
PORTC = 0xFF; // Kondisi LED Mati
delay_ms(1000);
}
}
CopyRigh@Eka Budi.2018
- Jika tampa error, program siap diupload ke mikrokontroler yang digunakan dalam
rangkaian, seperti berikut :
 Cara mengcompile program CV AVR ke Proteus
a) Klik kanan di bagian mikrokontroler, kemudian Pilih Edit properties seperti
berikut :
b) Selanjutnya cari dimana tempat menyimpan program yang dibuat (dalam hal
ini file yang dibutuhkan adalah file.HEX ataupun file.COFF, seperti berikut :
CopyRigh@Eka Budi.2018
Contoh 2 : Simulasi Program Menyalakan LED dengan Tombol
 Jika gambar rangkaiannya adalah sebagai berikut :
Ditanya : Buatlah program untuk kondisi sebagai berikut :
- Jika tombol 1 ditekan maka LED 1 dan LED 2 menyala
- Jika tombol 2 ditekan maka LED 3 dan LED 4 menyala
Pembahasan Program :
 Langkah – langkah
- Buka aplikasi CV AVR seperti contoh 1
- Ketikan logika program seperti berikut :
.....Bersambung .....>>
#include <mega16.h>
void main(void)
{
// Mendefinisikan Tombol Input
DDRD.0 = 0;
DDRD.1 = 0;
// Mendefinisikan OUTPUT LED
//PORTC=0x00;
// Untuk kondisi LED MATI
DDRC.0=1;
DDRC.1=1;
DDRC.2=1;
DDRC.3=1;
// Mendefinisikan PORT Untuk OUTPUT
// Untuk semua LED MATI
PORTC.0=1;
PORTC.1=1;
PORTC.2=1;
PORTC.3=1;
CopyRigh@Eka Budi.2018
LATIHAN 1 : Dari berdasarkan contoh – contoh sebelumnya, jika rangkaiannya seperti berikut :
while (1)
{
// Penanganan Fungsi
if (PIND.0 == 0)
{
PORTC.0=0;
PORTC.1=0;
PORTC.2=1;
PORTC.3=1;
}
else if(PIND.1 == 0)
{
PORTC.0=1;
PORTC.1=1;
PORTC.2=0;
PORTC.3=0;
}
// Fungsi LED untuk kondisi awal atau mati
else
{
PORTC.0=1;
PORTC.1=1;
PORTC.2=1;
PORTC.3=1;
}
}
}
CopyRigh@Eka Budi.2018
Ditanya : Buatlah program untuk menggontrol kondisi sebagai berikut, dimana Output di PORT
C dan Input di PORT B :
- Jika Tombol 0 ditekan, maka LED 0 menyala
- Jika Tombol 1 ditekan, maka LED 1 menyala
- Sampai seterusnya Jika Tombol 7 ditekan, maka LED 7 menyala
LATIHAN 2 : Dari gambar rangkaian berikut, jika PORT C sebagai Output :
Ditanya :
Buatlah program untuk menampilkan LED berkedip selama 10 ms, dimana kondisi awal
LED 0 sampai LED 3 hidup selama 10 ms dan LED 4 sampai LED 7 mati selama 10 ms,
Selanjutnya LED 4 sampai LED 7 yang hidup selama 10 ms dan LED 0 sampai LED 3
yang mati selama 10 ms secara terus menerus.
CopyRigh@Eka Budi.2018
Daftar Referensi :
Albert Paul Malvino. Edisi Kedua.1994. ”Elektronika Komputer Digital Pengantar
Mikrokontroler.” Penerbit Erlangga
Syahrul. Cetakan Pertama. 2014. “ Pemograman Mikrokontroler AVR Bahasa Assembly dan
C “ Penerbit Informatika Bandung
Mada Sanjaya WS, Ph.D. 2013. “Membuat Robot bersama Profesor Bolabot.” Penerbit Gava
Media. Yogyakarta
Mada Sanjaya WS, Ph.D. 2016. “Panduan Praktis Pemograman Robot Vision Menggunakan
Matlab dan IDE Arduino.” Penerbit Andi. Yogyakarta
Muhamad Ali, M.T., dan TIM. Program Pengabdian Masyarakat (PPM).2013. ” MODUL
PROTEUS PROFESIONAL UNTUK SIMULASI RANGKAIAN DIGITAL DAN
MIKROKONTROLER (Materi Lanjutan Mikrokontroler).” PENDIDIKAN
TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA
Tim P2M Jurusan Teknik Elektro . 2016. “MODUL PELATIHAN MIKROKONTROLLER
UNTUK PEMULA DI SMK N I BANTUL.” FAKULTAS TEKNIK UNIVERSITAS
MUHAMMADIYAH YOGYAKARTA.

More Related Content

What's hot

Modul teknik-digital
Modul teknik-digitalModul teknik-digital
Modul teknik-digital
ecko gmc
 
Mikroprosesor Zilog Z80
Mikroprosesor Zilog Z80Mikroprosesor Zilog Z80
Mikroprosesor Zilog Z80
Habibullah Srg
 
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
KEN KEN
 
Register Instruksi dan Accumulator
Register Instruksi dan AccumulatorRegister Instruksi dan Accumulator
Register Instruksi dan Accumulator
Lusiana Diyan
 
Laporan Modulo Counter
Laporan Modulo CounterLaporan Modulo Counter
Laporan Modulo Counter
Kurniawan Suganda
 
Modul pengenalan proteus
Modul pengenalan proteusModul pengenalan proteus
Modul pengenalan proteus
Kukuh Adhi Rumekso
 
Praktikum iii lcd, servo motor, dan keypad dengan proteus
Praktikum iii lcd, servo motor, dan keypad dengan proteusPraktikum iii lcd, servo motor, dan keypad dengan proteus
Praktikum iii lcd, servo motor, dan keypad dengan proteus
Farichah Riha
 
ANALISIS PENCARIAN RUTE TERPENDEK PADA JARINGAN KOMPUTER DENGAN MENGGUNAKAN ...
ANALISIS  PENCARIAN RUTE TERPENDEK PADA JARINGAN KOMPUTER DENGAN MENGGUNAKAN ...ANALISIS  PENCARIAN RUTE TERPENDEK PADA JARINGAN KOMPUTER DENGAN MENGGUNAKAN ...
ANALISIS PENCARIAN RUTE TERPENDEK PADA JARINGAN KOMPUTER DENGAN MENGGUNAKAN ...
Simon Patabang
 
MODUL PLC (Programmable Logic Control) DIDIK
MODUL PLC (Programmable Logic Control) DIDIKMODUL PLC (Programmable Logic Control) DIDIK
MODUL PLC (Programmable Logic Control) DIDIK
Didik Supriyono
 
Siklus pengambilan (fetch cycle)
Siklus pengambilan (fetch cycle)Siklus pengambilan (fetch cycle)
Siklus pengambilan (fetch cycle)
Lusiana Diyan
 
Perbedaan mikroprosesor & mikrokontroler
Perbedaan mikroprosesor & mikrokontrolerPerbedaan mikroprosesor & mikrokontroler
Perbedaan mikroprosesor & mikrokontroler
M Cahyo Ardi Prabowo
 
Rangkaian Adder
Rangkaian AdderRangkaian Adder
Rangkaian Adder
Iskandar Tambunan
 
Makalah set instruksi
Makalah set instruksiMakalah set instruksi
Makalah set instruksi
ratna46
 
soal-latihan-logika-algoritma-semester1
soal-latihan-logika-algoritma-semester1soal-latihan-logika-algoritma-semester1
soal-latihan-logika-algoritma-semester1
Budi Kurniawan
 
Sensor dan transduser_2
Sensor dan transduser_2Sensor dan transduser_2
Sensor dan transduser_2
Mochamad Riduwan
 
Bab 5 komputer sederhana sap-1
Bab 5   komputer sederhana sap-1Bab 5   komputer sederhana sap-1
Bab 5 komputer sederhana sap-1
Universitas Putera Batam
 
01 Pendahuluan Robotika
01 Pendahuluan Robotika01 Pendahuluan Robotika
01 Pendahuluan Robotika
Rakhmi Khalida, M.M.S.I
 

What's hot (20)

Modul teknik-digital
Modul teknik-digitalModul teknik-digital
Modul teknik-digital
 
Mikroprosesor Zilog Z80
Mikroprosesor Zilog Z80Mikroprosesor Zilog Z80
Mikroprosesor Zilog Z80
 
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
 
Register Instruksi dan Accumulator
Register Instruksi dan AccumulatorRegister Instruksi dan Accumulator
Register Instruksi dan Accumulator
 
Laporan Modulo Counter
Laporan Modulo CounterLaporan Modulo Counter
Laporan Modulo Counter
 
Modul pengenalan proteus
Modul pengenalan proteusModul pengenalan proteus
Modul pengenalan proteus
 
Sap 2
Sap 2Sap 2
Sap 2
 
Praktikum iii lcd, servo motor, dan keypad dengan proteus
Praktikum iii lcd, servo motor, dan keypad dengan proteusPraktikum iii lcd, servo motor, dan keypad dengan proteus
Praktikum iii lcd, servo motor, dan keypad dengan proteus
 
ANALISIS PENCARIAN RUTE TERPENDEK PADA JARINGAN KOMPUTER DENGAN MENGGUNAKAN ...
ANALISIS  PENCARIAN RUTE TERPENDEK PADA JARINGAN KOMPUTER DENGAN MENGGUNAKAN ...ANALISIS  PENCARIAN RUTE TERPENDEK PADA JARINGAN KOMPUTER DENGAN MENGGUNAKAN ...
ANALISIS PENCARIAN RUTE TERPENDEK PADA JARINGAN KOMPUTER DENGAN MENGGUNAKAN ...
 
MODUL PLC (Programmable Logic Control) DIDIK
MODUL PLC (Programmable Logic Control) DIDIKMODUL PLC (Programmable Logic Control) DIDIK
MODUL PLC (Programmable Logic Control) DIDIK
 
Siklus pengambilan (fetch cycle)
Siklus pengambilan (fetch cycle)Siklus pengambilan (fetch cycle)
Siklus pengambilan (fetch cycle)
 
Perbedaan mikroprosesor & mikrokontroler
Perbedaan mikroprosesor & mikrokontrolerPerbedaan mikroprosesor & mikrokontroler
Perbedaan mikroprosesor & mikrokontroler
 
Rangkaian Adder
Rangkaian AdderRangkaian Adder
Rangkaian Adder
 
Makalah set instruksi
Makalah set instruksiMakalah set instruksi
Makalah set instruksi
 
soal-latihan-logika-algoritma-semester1
soal-latihan-logika-algoritma-semester1soal-latihan-logika-algoritma-semester1
soal-latihan-logika-algoritma-semester1
 
Sensor dan transduser_2
Sensor dan transduser_2Sensor dan transduser_2
Sensor dan transduser_2
 
Bab 5 komputer sederhana sap-1
Bab 5   komputer sederhana sap-1Bab 5   komputer sederhana sap-1
Bab 5 komputer sederhana sap-1
 
01 Pendahuluan Robotika
01 Pendahuluan Robotika01 Pendahuluan Robotika
01 Pendahuluan Robotika
 
root locus
root locusroot locus
root locus
 
Timer dan counter
Timer dan counterTimer dan counter
Timer dan counter
 

Similar to Modul simulasi pemograman mikrokontroler

Presentasi workshop cvavr
Presentasi workshop cvavrPresentasi workshop cvavr
Presentasi workshop cvavr
Priyo Harjiyono
 
Awal dasar belajar c++
Awal dasar belajar c++Awal dasar belajar c++
Awal dasar belajar c++farizky berian
 
Pengenalan bahasa C++
Pengenalan bahasa C++Pengenalan bahasa C++
Pengenalan bahasa C++
Andari Ursulla
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
windi1
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
Alvin Setiawan
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
Iie Srimaiyanti
 
6. variabel, tipe data, dan operator pada vb
6. variabel, tipe data, dan operator pada vb6. variabel, tipe data, dan operator pada vb
6. variabel, tipe data, dan operator pada vbAris Saputro
 
Pascal - Pendahuluan1.txt - Notepad.pdf
Pascal - Pendahuluan1.txt - Notepad.pdfPascal - Pendahuluan1.txt - Notepad.pdf
Pascal - Pendahuluan1.txt - Notepad.pdf
Jurnal IT
 
Modul c++
Modul c++Modul c++
Modul c++
Kiki MochRifki
 
C++ lengkap
C++ lengkap C++ lengkap
C++ lengkap
hidayatrudy
 
Modul praktikum c++
Modul praktikum c++Modul praktikum c++
Modul praktikum c++
Yunus Bati Al Tidore
 
Algoritma modul
Algoritma modulAlgoritma modul
Algoritma modul
Irwin andriyanto
 
Penjelasan Tentang Module Algo
Penjelasan Tentang Module AlgoPenjelasan Tentang Module Algo
Penjelasan Tentang Module Algo
APK BARU
 
Modul Praktikum Algoritma dan Pemrograman
Modul Praktikum Algoritma dan PemrogramanModul Praktikum Algoritma dan Pemrograman
Modul Praktikum Algoritma dan Pemrograman
Irwien Andriyanto
 
M04b dasar program c
M04b dasar program cM04b dasar program c
M04b dasar program c
Billy Alhamra
 
Dasar dasar turbo pascal
Dasar dasar turbo pascalDasar dasar turbo pascal
Dasar dasar turbo pascal
Duriani
 
Php 1
Php 1Php 1

Similar to Modul simulasi pemograman mikrokontroler (20)

Presentasi workshop cvavr
Presentasi workshop cvavrPresentasi workshop cvavr
Presentasi workshop cvavr
 
Awal dasar belajar c++
Awal dasar belajar c++Awal dasar belajar c++
Awal dasar belajar c++
 
Pengenalan bahasa C++
Pengenalan bahasa C++Pengenalan bahasa C++
Pengenalan bahasa C++
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
Pengenalan bahasa c++
Pengenalan bahasa c++Pengenalan bahasa c++
Pengenalan bahasa c++
 
6. variabel, tipe data, dan operator pada vb
6. variabel, tipe data, dan operator pada vb6. variabel, tipe data, dan operator pada vb
6. variabel, tipe data, dan operator pada vb
 
Kbp dengan-c
Kbp dengan-cKbp dengan-c
Kbp dengan-c
 
Pascal - Pendahuluan1.txt - Notepad.pdf
Pascal - Pendahuluan1.txt - Notepad.pdfPascal - Pendahuluan1.txt - Notepad.pdf
Pascal - Pendahuluan1.txt - Notepad.pdf
 
Modul c++
Modul c++Modul c++
Modul c++
 
C++ lengkap
C++ lengkap C++ lengkap
C++ lengkap
 
Modul praktikum c++
Modul praktikum c++Modul praktikum c++
Modul praktikum c++
 
Algoritma modul
Algoritma modulAlgoritma modul
Algoritma modul
 
Penjelasan Tentang Module Algo
Penjelasan Tentang Module AlgoPenjelasan Tentang Module Algo
Penjelasan Tentang Module Algo
 
Algoritma
AlgoritmaAlgoritma
Algoritma
 
Modul Praktikum Algoritma dan Pemrograman
Modul Praktikum Algoritma dan PemrogramanModul Praktikum Algoritma dan Pemrograman
Modul Praktikum Algoritma dan Pemrograman
 
M04b dasar program c
M04b dasar program cM04b dasar program c
M04b dasar program c
 
Dasar dasar turbo pascal
Dasar dasar turbo pascalDasar dasar turbo pascal
Dasar dasar turbo pascal
 
Php 1
Php 1Php 1
Php 1
 

More from personal

Kisi kisi
Kisi kisiKisi kisi
Kisi kisi
personal
 
Bab 8 kode konverter (pertemuan 11, 12)
Bab 8 kode konverter (pertemuan 11, 12)Bab 8 kode konverter (pertemuan 11, 12)
Bab 8 kode konverter (pertemuan 11, 12)
personal
 
Bab 7 rankaian kombinasional data transmisi
Bab 7 rankaian kombinasional data transmisiBab 7 rankaian kombinasional data transmisi
Bab 7 rankaian kombinasional data transmisi
personal
 
Bab 6 adder
Bab 6 adderBab 6 adder
Bab 6 adder
personal
 
Ketentuan quis dan informasi materi
Ketentuan quis dan informasi materiKetentuan quis dan informasi materi
Ketentuan quis dan informasi materi
personal
 
Bab 5 counter
Bab 5 counterBab 5 counter
Bab 5 counter
personal
 
Adc dan dac lanjutan
Adc dan dac lanjutanAdc dan dac lanjutan
Adc dan dac lanjutan
personal
 
Pertemuan 3 aljabar boole dan peta karnaugh
Pertemuan 3 aljabar boole dan peta karnaughPertemuan 3 aljabar boole dan peta karnaugh
Pertemuan 3 aljabar boole dan peta karnaugh
personal
 
Modul sistem digital bagian 1
Modul sistem digital bagian 1Modul sistem digital bagian 1
Modul sistem digital bagian 1
personal
 
Sistem digital bagian 2
Sistem digital bagian 2Sistem digital bagian 2
Sistem digital bagian 2
personal
 

More from personal (10)

Kisi kisi
Kisi kisiKisi kisi
Kisi kisi
 
Bab 8 kode konverter (pertemuan 11, 12)
Bab 8 kode konverter (pertemuan 11, 12)Bab 8 kode konverter (pertemuan 11, 12)
Bab 8 kode konverter (pertemuan 11, 12)
 
Bab 7 rankaian kombinasional data transmisi
Bab 7 rankaian kombinasional data transmisiBab 7 rankaian kombinasional data transmisi
Bab 7 rankaian kombinasional data transmisi
 
Bab 6 adder
Bab 6 adderBab 6 adder
Bab 6 adder
 
Ketentuan quis dan informasi materi
Ketentuan quis dan informasi materiKetentuan quis dan informasi materi
Ketentuan quis dan informasi materi
 
Bab 5 counter
Bab 5 counterBab 5 counter
Bab 5 counter
 
Adc dan dac lanjutan
Adc dan dac lanjutanAdc dan dac lanjutan
Adc dan dac lanjutan
 
Pertemuan 3 aljabar boole dan peta karnaugh
Pertemuan 3 aljabar boole dan peta karnaughPertemuan 3 aljabar boole dan peta karnaugh
Pertemuan 3 aljabar boole dan peta karnaugh
 
Modul sistem digital bagian 1
Modul sistem digital bagian 1Modul sistem digital bagian 1
Modul sistem digital bagian 1
 
Sistem digital bagian 2
Sistem digital bagian 2Sistem digital bagian 2
Sistem digital bagian 2
 

Recently uploaded

SOAL ASAS SENI MUSIK kelas 2 semester 2 kurikulum merdeka
SOAL ASAS SENI MUSIK kelas 2 semester 2 kurikulum merdekaSOAL ASAS SENI MUSIK kelas 2 semester 2 kurikulum merdeka
SOAL ASAS SENI MUSIK kelas 2 semester 2 kurikulum merdeka
NiaTazmia2
 
Modul Ajar PAI dan Budi Pekerti Kelas 8 Fase D Kurikulum Merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 8 Fase D Kurikulum MerdekaModul Ajar PAI dan Budi Pekerti Kelas 8 Fase D Kurikulum Merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 8 Fase D Kurikulum Merdeka
Fathan Emran
 
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28 Juni 2024
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28  Juni 2024Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28  Juni 2024
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28 Juni 2024
Kanaidi ken
 
Laporan Pembina Pramuka sd format doc.docx
Laporan Pembina Pramuka sd format doc.docxLaporan Pembina Pramuka sd format doc.docx
Laporan Pembina Pramuka sd format doc.docx
RUBEN Mbiliyora
 
Kebijakan PPDB Siswa SMA dan SMK DIY 2024
Kebijakan PPDB Siswa SMA dan SMK DIY 2024Kebijakan PPDB Siswa SMA dan SMK DIY 2024
Kebijakan PPDB Siswa SMA dan SMK DIY 2024
DrEngMahmudKoriEffen
 
GERAKAN KERJASAMA DAN BEBERAPA INSTRUMEN NASIONAL PENCEGAHAN KORUPSI.pptx
GERAKAN KERJASAMA DAN BEBERAPA INSTRUMEN NASIONAL PENCEGAHAN KORUPSI.pptxGERAKAN KERJASAMA DAN BEBERAPA INSTRUMEN NASIONAL PENCEGAHAN KORUPSI.pptx
GERAKAN KERJASAMA DAN BEBERAPA INSTRUMEN NASIONAL PENCEGAHAN KORUPSI.pptx
fildiausmayusuf1
 
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdfRANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
junarpudin36
 
ANALISIS PENCEMARAN UDARA AKIBAT PABRIK ASPAL
ANALISIS PENCEMARAN UDARA AKIBAT PABRIK ASPALANALISIS PENCEMARAN UDARA AKIBAT PABRIK ASPAL
ANALISIS PENCEMARAN UDARA AKIBAT PABRIK ASPAL
Annisa Syahfitri
 
SINOPSIS, TEMA DAN PERSOALAN NOVEL MENITI IMPIAN
SINOPSIS, TEMA DAN PERSOALAN NOVEL MENITI IMPIANSINOPSIS, TEMA DAN PERSOALAN NOVEL MENITI IMPIAN
SINOPSIS, TEMA DAN PERSOALAN NOVEL MENITI IMPIAN
NanieIbrahim
 
MODUL AJAR MAT LANJUT KELAS XI FASE F.pdf
MODUL AJAR MAT LANJUT KELAS XI FASE F.pdfMODUL AJAR MAT LANJUT KELAS XI FASE F.pdf
MODUL AJAR MAT LANJUT KELAS XI FASE F.pdf
sitispd78
 
Panduan Penggunaan Rekomendasi Buku Sastra.pdf
Panduan Penggunaan Rekomendasi Buku Sastra.pdfPanduan Penggunaan Rekomendasi Buku Sastra.pdf
Panduan Penggunaan Rekomendasi Buku Sastra.pdf
MildayantiMildayanti
 
FORMAT PPT RANGKAIAN PROGRAM KERJA KM 7.pptx
FORMAT PPT RANGKAIAN PROGRAM KERJA KM 7.pptxFORMAT PPT RANGKAIAN PROGRAM KERJA KM 7.pptx
FORMAT PPT RANGKAIAN PROGRAM KERJA KM 7.pptx
NavaldiMalau
 
Modul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Matematika Kelas 11 Fase F Kurikulum MerdekaModul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
Fathan Emran
 
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pptx
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pptxRANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pptx
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pptx
SurosoSuroso19
 
PENDAMPINGAN INDIVIDU 2 CGP ANGKATAN 10 KOTA DEPOK
PENDAMPINGAN INDIVIDU 2 CGP ANGKATAN 10 KOTA DEPOKPENDAMPINGAN INDIVIDU 2 CGP ANGKATAN 10 KOTA DEPOK
PENDAMPINGAN INDIVIDU 2 CGP ANGKATAN 10 KOTA DEPOK
GusniartiGusniarti5
 
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
PreddySilitonga
 
705368319-Ppt-Aksi-Nyata-Membuat-Rancangan-Pembelajaran-Dengan-Metode-Fonik.pptx
705368319-Ppt-Aksi-Nyata-Membuat-Rancangan-Pembelajaran-Dengan-Metode-Fonik.pptx705368319-Ppt-Aksi-Nyata-Membuat-Rancangan-Pembelajaran-Dengan-Metode-Fonik.pptx
705368319-Ppt-Aksi-Nyata-Membuat-Rancangan-Pembelajaran-Dengan-Metode-Fonik.pptx
nimah111
 
PPT LANDASAN PENDIDIKAN.pptx tentang hubungan sekolah dengan masyarakat
PPT LANDASAN PENDIDIKAN.pptx tentang hubungan sekolah dengan masyarakatPPT LANDASAN PENDIDIKAN.pptx tentang hubungan sekolah dengan masyarakat
PPT LANDASAN PENDIDIKAN.pptx tentang hubungan sekolah dengan masyarakat
jodikurniawan341
 
Aksi Nyata Disiplin Positif: Hukuman vs Restitusi vs Konsekuensi
Aksi Nyata Disiplin Positif: Hukuman vs Restitusi vs KonsekuensiAksi Nyata Disiplin Positif: Hukuman vs Restitusi vs Konsekuensi
Aksi Nyata Disiplin Positif: Hukuman vs Restitusi vs Konsekuensi
sabir51
 
Pelatihan AI GKA abdi Sabda - Apa itu AI?
Pelatihan AI GKA abdi Sabda - Apa itu AI?Pelatihan AI GKA abdi Sabda - Apa itu AI?
Pelatihan AI GKA abdi Sabda - Apa itu AI?
SABDA
 

Recently uploaded (20)

SOAL ASAS SENI MUSIK kelas 2 semester 2 kurikulum merdeka
SOAL ASAS SENI MUSIK kelas 2 semester 2 kurikulum merdekaSOAL ASAS SENI MUSIK kelas 2 semester 2 kurikulum merdeka
SOAL ASAS SENI MUSIK kelas 2 semester 2 kurikulum merdeka
 
Modul Ajar PAI dan Budi Pekerti Kelas 8 Fase D Kurikulum Merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 8 Fase D Kurikulum MerdekaModul Ajar PAI dan Budi Pekerti Kelas 8 Fase D Kurikulum Merdeka
Modul Ajar PAI dan Budi Pekerti Kelas 8 Fase D Kurikulum Merdeka
 
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28 Juni 2024
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28  Juni 2024Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28  Juni 2024
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28 Juni 2024
 
Laporan Pembina Pramuka sd format doc.docx
Laporan Pembina Pramuka sd format doc.docxLaporan Pembina Pramuka sd format doc.docx
Laporan Pembina Pramuka sd format doc.docx
 
Kebijakan PPDB Siswa SMA dan SMK DIY 2024
Kebijakan PPDB Siswa SMA dan SMK DIY 2024Kebijakan PPDB Siswa SMA dan SMK DIY 2024
Kebijakan PPDB Siswa SMA dan SMK DIY 2024
 
GERAKAN KERJASAMA DAN BEBERAPA INSTRUMEN NASIONAL PENCEGAHAN KORUPSI.pptx
GERAKAN KERJASAMA DAN BEBERAPA INSTRUMEN NASIONAL PENCEGAHAN KORUPSI.pptxGERAKAN KERJASAMA DAN BEBERAPA INSTRUMEN NASIONAL PENCEGAHAN KORUPSI.pptx
GERAKAN KERJASAMA DAN BEBERAPA INSTRUMEN NASIONAL PENCEGAHAN KORUPSI.pptx
 
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdfRANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
RANCANGAN TINDAKAN UNTUK AKSI NYATA MODUL 1.4 BUDAYA POSITIF.pdf
 
ANALISIS PENCEMARAN UDARA AKIBAT PABRIK ASPAL
ANALISIS PENCEMARAN UDARA AKIBAT PABRIK ASPALANALISIS PENCEMARAN UDARA AKIBAT PABRIK ASPAL
ANALISIS PENCEMARAN UDARA AKIBAT PABRIK ASPAL
 
SINOPSIS, TEMA DAN PERSOALAN NOVEL MENITI IMPIAN
SINOPSIS, TEMA DAN PERSOALAN NOVEL MENITI IMPIANSINOPSIS, TEMA DAN PERSOALAN NOVEL MENITI IMPIAN
SINOPSIS, TEMA DAN PERSOALAN NOVEL MENITI IMPIAN
 
MODUL AJAR MAT LANJUT KELAS XI FASE F.pdf
MODUL AJAR MAT LANJUT KELAS XI FASE F.pdfMODUL AJAR MAT LANJUT KELAS XI FASE F.pdf
MODUL AJAR MAT LANJUT KELAS XI FASE F.pdf
 
Panduan Penggunaan Rekomendasi Buku Sastra.pdf
Panduan Penggunaan Rekomendasi Buku Sastra.pdfPanduan Penggunaan Rekomendasi Buku Sastra.pdf
Panduan Penggunaan Rekomendasi Buku Sastra.pdf
 
FORMAT PPT RANGKAIAN PROGRAM KERJA KM 7.pptx
FORMAT PPT RANGKAIAN PROGRAM KERJA KM 7.pptxFORMAT PPT RANGKAIAN PROGRAM KERJA KM 7.pptx
FORMAT PPT RANGKAIAN PROGRAM KERJA KM 7.pptx
 
Modul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Matematika Kelas 11 Fase F Kurikulum MerdekaModul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
 
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pptx
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pptxRANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pptx
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pptx
 
PENDAMPINGAN INDIVIDU 2 CGP ANGKATAN 10 KOTA DEPOK
PENDAMPINGAN INDIVIDU 2 CGP ANGKATAN 10 KOTA DEPOKPENDAMPINGAN INDIVIDU 2 CGP ANGKATAN 10 KOTA DEPOK
PENDAMPINGAN INDIVIDU 2 CGP ANGKATAN 10 KOTA DEPOK
 
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
ATP Kimia Fase E Kelas X bisa deigunakan ditahun ajaran 2024/2025
 
705368319-Ppt-Aksi-Nyata-Membuat-Rancangan-Pembelajaran-Dengan-Metode-Fonik.pptx
705368319-Ppt-Aksi-Nyata-Membuat-Rancangan-Pembelajaran-Dengan-Metode-Fonik.pptx705368319-Ppt-Aksi-Nyata-Membuat-Rancangan-Pembelajaran-Dengan-Metode-Fonik.pptx
705368319-Ppt-Aksi-Nyata-Membuat-Rancangan-Pembelajaran-Dengan-Metode-Fonik.pptx
 
PPT LANDASAN PENDIDIKAN.pptx tentang hubungan sekolah dengan masyarakat
PPT LANDASAN PENDIDIKAN.pptx tentang hubungan sekolah dengan masyarakatPPT LANDASAN PENDIDIKAN.pptx tentang hubungan sekolah dengan masyarakat
PPT LANDASAN PENDIDIKAN.pptx tentang hubungan sekolah dengan masyarakat
 
Aksi Nyata Disiplin Positif: Hukuman vs Restitusi vs Konsekuensi
Aksi Nyata Disiplin Positif: Hukuman vs Restitusi vs KonsekuensiAksi Nyata Disiplin Positif: Hukuman vs Restitusi vs Konsekuensi
Aksi Nyata Disiplin Positif: Hukuman vs Restitusi vs Konsekuensi
 
Pelatihan AI GKA abdi Sabda - Apa itu AI?
Pelatihan AI GKA abdi Sabda - Apa itu AI?Pelatihan AI GKA abdi Sabda - Apa itu AI?
Pelatihan AI GKA abdi Sabda - Apa itu AI?
 

Modul simulasi pemograman mikrokontroler

  • 1. CopyRigh@Eka Budi.2018 MODUL SIMULASI PEMOGRAMAN MIKROKONTROLER DALAM PROGRAM BAHASA C PENDAHULUAN Compiler Bahasa C menghasilkan file hex yang akan digunakan dalam memori Flash Mikrokontroler. Ukuran file hex yang dihasilkan oleh compiler merupakan hal yang penting perlu diperhatikan karena mikrokontroler mempunyai memori on chip flash yang terbatas. Pemograman dengan Bahasa C lebih mudah daripada dibandingkan dengan Bahasa Assembly, karena Bahasa C lebih mudah dimodifikasi dan diperbaruhui, serta kodenya bersifat portable terhadap berbagai mikrokontroler. 6. 1 DASAR – DASAR PENULISAN BAHASA C 1. Metode dan Struktur Penulisan bahasa C : a) Pernyataan Satu atau beberapa ekspresi yang diakhiri dengan tanda titik koma (;). b) Blok Pernyataan Terdiri dari satu atau beberapa pernyataan yang diawali dengan tanda { dan diakhiri dengan tanda }. Blok pernyataan selalu diawali dengan suatu instruksi. c) Blok fungsi Terdiri dari satu atau beberapa pernyataan yang dirancang untuk melakukan proses tertentu. Blok fungsi dimulai dengan nama fungsi dan diikuti tanda () dan tanda { diakhiri tanda }. #include < mega16.h> /* directive #include digunakan jika mengambil fungsi-fungsi library*/ // Deklarasi variabel global .... void main() /* Variabel fungsi sbg awal program */ { /*blok awal*/ // Deklarasi variabel local .... // Pernyataan – pernyataan dan kode – kode yang dihasilkan ..... } /*blok akhir*/ while (1) /* Fungsi program utama */ { // Fungsi Pernyataan – pernyataan dari program utama .... }
  • 2. CopyRigh@Eka Budi.2018 - #include < .... >  Bukanlah merupakan pernyataan, sehingga tidak diakhiri dengan titik koma (;). Baris tersebut miminta kompiler untuk menyertakan file yang namanya ada di antara < ....> dalam proses kompilasi. File – file ini (yang berekstensi. h) berisi deklarasi fungsi ataupun variabel, file ini disebut header. File ini digunakan semacam perpustakaan (library) bagi pernyataan yang ada ditubuh program. #include merupakan salah satu jenis pengarah praprosesor (preprocessor directive). Preprosesor directive adalah bagian yang berisi pengikutsertaan file atau berkas-berkas fungsi maupun pendefinisian konstanta Contoh : #include <mega16.h>, #include <stdio.h>, #include <math.h> dan lain – lain 2. Tipe Data No Tipe Data Ukuran 1 Unsigned char 8 bit 2 Char 8 bit 3 Unsigned int 16 bit 4 int 16 bit 5 Long 32 bit 6 Unsigned Long 32 bit 7 Float 32 bit 8 Double 32 bit  Untuk penggunaan mikrokontroler AVR yang 8 bit baiknya menggunakan tipe data yang 8 bit juga, seperti penggunaan tipe data Unsigned char, Char yang mempunyai rentang nilai 0 s/d 255 (0x00 s/d 0Xff) - Variable  Variabel adalah identifier yang nilainya dapat berubah atau diubah selama program berjalan (dieksekusi). Pengubahnya adalah user atau proses. - Deklarasi variabel (tipe_data nama_variabel;) Variabel yang akan digunakan dalam program haruslah dideklarasikan terlebih dahulu. Pengertian deklarasi di sini berarti memesan memori dan menentukan jenis data yang bisa disimpan di dalamnya. Contoh : int a, b, c;
  • 3. CopyRigh@Eka Budi.2018 - Inisialisasi variabel (tipe_data nama_variabel = nilai;) Contoh : int a = 10 ; - Konstanta  Konstanta adalah identifier yang nilainya tetap selama program berjalan/ dieksekusi. Cara untuk mengubahnya hanya melalui source codenya saja seperti halnya variabel, konstanta juga memiliki tipe. Penulisan konstanta mempunyai aturan tersendiri, sesuai dengan tipe masing-masing. Contoh : #define PHI 3.14, #define max_data 50 3. Deklarasi  Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier) dalam program. Identifier dapat berupa konstanta, variable dan fungsi. - Deklarasi Fungsi  Fungsi merupakan bagian yang terpisah dari program dan dapat diaktifkan atau dipanggil di manapun di dalam program Contoh : float luas_lingkaran(int jari), void tampil() dan lain – lain 4. Operator  Operator merupakan intruksi khusus yang dikenai untuk variable. Ada beberapa jenis operator, yaitu : a. Operator Penugasan (Assignment Operator) => Operator penugasan dalam bahasa C++ berupa tanda sama dengan atau “=”. Contoh : nilai = 70 , A = x * y b. Operator Aritmatika => Operator Aritmatika merupakan operator yang digunakan untuk fungsi/operasi matematika, adapun operator aritmatika dasar tersebut adalah : * : untuk perkalian / : untuk pembagian % : untuk sisa hasil bagi (modulus) + : untuk penjumlahan - : untuk pengurangan
  • 4. CopyRigh@Eka Budi.2018 Contoh : Program penggunaan operator penjumlahan Contoh : Penggunaan Operator sisa pembagian (modulus) c. Operator Perbandingan => Operator pembanding digunakan untuk membandingkan antara dua buah variabel. Operator pembanding sering pada saat pengecekan atau statemen if, perulangan atau statemen for, while, do while. #include <mega16.h> void main(void) { char A; char B; DDRA = 0xFF; PORTA = 0xFF; A= 8; B= 1; PORTA = A+B; } #include <mega16.h> void main(void) { char A;// Penerapan A sebagai variabel char B; DDRA = 0xFF; // Inisialisasi PORT A sebagai Output PORTA = 0xFF; A= 8; // variabel A di inisialisasi dengan bilangan 8 B= 3; PORTA = A%B; // modulus 8 dan 3, hasilnya di kirim ke PORT A }
  • 5. CopyRigh@Eka Budi.2018 d. Operator Logika => Operator logika merupakan operator yang membandingkan hubungan antara dua hasil dari operasi pembanding. Operator logika membandingkan logika hasil dari dua operasi pembanding dan akan melakukan operasi khusus apabila bernilai benar dan apabila bernilai salah maka akan melakukan sebaliknya. Operator yang digunakan dalam operasi logika ada tiga yaitu : Contoh : Penggunaan Operator logika e. Operator Bitwise Operator bitwise dalam bahasa C : - << : Pergeseran bit ke kiri #include <mega16.h> // Declare your global variables here void main(void) { char A;// Penerapan A sebagai variabel char B; DDRA = 0xFF; // Inisialisasi PORT A sebagai Output PORTA = 0xFF; A= 0xfc; // variabel A di inisialisasi dengan bilangan hexa 0xfc B= 0x30; // variabel B di inisialisasi dengan bilangan hexa 0x30 if ((A==0xfc) && (B==0x30)) // Jika A AND B benar maka { PORTA = 0x4b; // PORT A diisi dengan 0x4b } }
  • 6. CopyRigh@Eka Budi.2018  Operasi geser kiri merupakan operasi yang akan menggeser bit – bit kekiri, sehingga bit 0 akan berpindah ke bit 1 kemudian bit 1 berpindah ke bit 2 dan seterusnya. Contoh : A = A << 1; // Isi variabel A digeser kekiri 1 bit, hasil disimpan kembali di A Contoh : Penggunaan Operator geser kiri - >> : Pergeseran bit ke kanan  Operasi geser kanan merupakan operasi yang akan menggeser bit – bit kekanan sehingga bit 7 akan berpindah ke bit 6, kemudian bit 6 akan berpindah ke bit 5 dan seterusnya. Contoh : A = A >> 1; // Isi variabel A digeser kekanan 1 bit, hasilnya disimpan lagi di A - & : Bitwise AND - ^ : Bitwise XOR (exclusive OR) - | : Bitwise OR - ~ : Bitwise NOT #include <mega16.h> // Declare your global variables here void main(void) { char A, LED;// Penerapan A sebagai variabel DDRA = 0xFF; // Inisialisasi PORT A sebagai Output PORTA = 0xFF; LED = 0b00000001; for (A=0; A<8; A++) { PORTA = LED; LED= LED<<1 ; } }
  • 7. CopyRigh@Eka Budi.2018 f. Operator Unary => Operator Unary merupakan operator yang hanya membutuhkan satu operand saja. Dalam bahasa C terdapat beberapa operator unary, yaitu : 6.2 Seleksi Kondisi => Seleksi kondisi digunakan untuk mengarahkan perjalanan suatu proses. Fungsi penyeleksian kondisi penting, terutama untuk program yang kompleks. Jenis – jenis pemilihan kondisi: a) Pilihan Tunggal (IF)  Bentuk umum : Contoh : if (kondisi) { true statement; } #include <mega16.h> void main(void) { char A;// Penerapan A sebagai variabel DDRA = 0xFF; // Inisialisasi PORT A sebagai Output DDRB = 0xFF; A = PORTB; if (A==0x25) { PORTA = 0x19 ; } }
  • 8. CopyRigh@Eka Budi.2018 b) Pilihan Ganda (IF ... ELSE ...)  Digunakan untuk menentukan tindakan yang akan digunakan bila kondisi bernilai benar dan salah. Bentuk umum: Contoh : c) Struktur Case  Untuk masalah dengan dua pilihan atau lebih, struktur CASE dapat menyederhanakan penulisan IF yang bertingkat-tingkat. Bentuk umum: if kondisi { true statement; } else { false statement; } #include <mega16.h> void main(void) { char A;// Penerapan A sebagai variabel DDRA = 0xFF; // Inisialisasi PORT A sebagai Output DDRB = 0xFF; A = PORTB; if (A==0x25) { PORTA = 0x19 ; } else { PORTA = 0x12; } } Switch(kondisi) { case konstanta1 : {Statement-statement ; break} case konstanta1 : {Statement-statement ; break} case konstanta1 : {Statement-statement ; break} ....... }
  • 9. CopyRigh@Eka Budi.2018 Contoh : 6.3 Perulangan (Looping) Dalam bahasa C tersedia suatu fasilitas yang digunakan untuk melakukan proses yang berulang – ulang sebanyak yang diinginkan. Struktur perulangan dalam bahasa C mempunyai bentuk yang bermacam – macam, yaitu : 1. Struktur Perulangan “FOR”  Struktur perulangan For bisa digunakan untuk mengulang suatu proses yang telah diketahui jumlah perulangannya. Bentuk Umum : Keterangan : - Inisialisasi : pernyataan untuk menyatakan keadaan awal dari variabel kontrol. - Syarat : ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan - Penambahan : pengatur perubahan nilai variabel kontrol #include <mega16.h> // Declare your global variables here void main(void) { char a;// Penerapan A sebagai variabel DDRA = 0xFF; // Inisialisasi PORT A sebagai Output DDRB = 0xFF; a = PORTA; switch (a) { case 0: PORTB=5; break; case 1: PORTB=10; break; case 2: PORTB=15; break; default: PORTB=0; break; } } For (inisialisasi; syarat; penambahan) Pernyataan ;
  • 10. CopyRigh@Eka Budi.2018 Contoh : Perulangan FOR 2. Struktur Perulangan “WHILE”  Perulangan WHILE banyak digunakan pada program terstruktur. Perulangan ini banyak digunakan bila jumlah perulangannya belum diketahui. Prose perulangan akan terus berlanjut selama kondisinya bernilai benar (true) dan akan berhenti bila kondisinya bernilai salah (false). Bentuk Umum : Contoh : #include <mega16.h> // Declare your global variables here void main(void) { char a;// Penerapan A sebagai variabel DDRA = 0xFF; // Inisialisasi PORT A sebagai Output for (a=10; a>0; a--) PORTA =a ; } While (ekspresi) { Pernyataan – 1 ; Pernyataan – 2 ; } #include <mega16.h> // Declare your global variables here void main(void) { char a=10;// Penerapan A sebagai variabel DDRA = 0xFF; // Inisialisasi PORT A sebagai Output while (a >= 0 ) { PORTA =a ; a--; } }
  • 11. CopyRigh@Eka Budi.2018 3. Struktur Perulangan “ 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 diatas, sementara pada perulangan do ... while seleksi while berada dibawah batas perulangan. Jadi dengan menggunakan struktur do ... while sekurang – kurangnya akan terjadi satu kali perulangan. Bentuk Umum : Contoh : 6.4 Pengenalan Mikrokontroler AVR AVR (Alf and Vegard‟s Risc Processor) merupakan salah satu jenis mikrokontroler yang di dalamnya terdapat berbagai macam fungsi. AVR memiliki keunggulan dibandingkan dengan mikrokontroler jenis lain, keunggulannya yaitu AVR memiliki kecepatan eksekusi program yang lebih cepat karena sebagian besar instruksi dieksekusi dalam 1 siklus clock, lebih cepat bila dibandingkan dengan mikrokontroler jenis MCS51 yang memiliki arsitektur CISC (Complex Instruction Set Compute) dimana mikrokontoller MCS51 membutuhkan 12 siklus clock untuk Do { Pernyataan – 1 ; Pernyataan – 2 ; } While (ekspresi) #include <mega16.h> // Declare your global variables here void main(void) { char a=10;// Penerapan A sebagai variabel DDRA = 0xFF; // Inisialisasi PORT A sebagai Output do { PORTA = a; a--; } while (a >= 0); }
  • 12. CopyRigh@Eka Budi.2018 mengeksekusi 1 instruksi (Heri Andrinto, 2008:2). Selain itu kelebihan mikrokontroler AVR memiliki POS (Power On Reset), yaitu tidak perlu adanya tombol reset dari luar karena cukup hanya dengan mematikan supply, maka secara otomatis AVR akan melakukan reset.Antar seri mikrokontroler AVR memiliki beragam tipe dan fasilitas, namun kesemuanya memiliki arsitektur yang sama, dan juga set instruksi yang relatif tidak berbeda. Berikut tabel perbandingan beberapa seri mikrokontroler AVR buatan Atmel. Tabel . perbandingan beberapa seri mikrokontroler AVR buatan Atmel Seri Flash (KBytes) RAM (Bytes) EEPROM (KBytes) Pin I/O Timer 16-bit Timer 8-bit UART PWM ADC 10- bit SPI ISP ATmega8 8 1024 0.5 23 1 1 1 3 6/8 1 Ya ATmega8535 8 512 0.5 32 2 2 1 4 8 1 Ya ATmega16 16 1024 0.5 32 1 2 1 4 8 1 Ya ATmega162 16 1024 0.5 35 2 2 2 6 8 1 Ya ATmega32 32 2048 1 32 1 2 1 4 8 1 Ya ATmega128 128 4096 4 53 2 2 2 8 8 1 Ya ATtiny12 1 - 0.0625 6 - 1 - - - - Ya ATtiny2313 2 128 0.125 18 1 1 1 4 - 1 Ya ATtiny44 4 256 0.25 12 1 1 - 4 8 1 Ya ATtiny84 8 512 0.5 12 1 1 - 4 8 1 Ya Keterangan:  Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program hasil buatan manusia yang harus dijalankan oleh mikrokontroler  RAM (Random Acces Memory) merupakan memori yang membantu CPU untuk penyimpanan data sementara dan pengolahan data ketika program sedang running  EEPROM (Electrically Erasable Programmable Read Only Memory) adalah memori untuk penyimpanan data secara permanen oleh program yang sedang running  Port I/O adalah kaki untuk jalur keluar atau masuk sinyal sebagai hasil keluaran ataupun masukan bagi program  Timer adalah modul dalam hardware yang bekerja untuk menghitung waktu/pulsa  UART (Universal Asynchronous Receive Transmit) adalah jalur komunikasi data khusus secara serial asynchronous
  • 13. CopyRigh@Eka Budi.2018  PWM (Pulse Width Modulation) adalah fasilitas untuk membuat modulasi pulsa  ADC (Analog to Digital Converter) adalah fasilitas untuk dapat menerima sinyal analog dalam range tertentu untuk kemudian dikonversi menjadi suatu nilai digital dalam range tertentu  SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial secara serial synchronous  ISP (In System Programming) adalah kemampuan khusus mikrokontroler untuk dapat diprogram langsung dalam sistem rangkaiannya dengan membutuhkan jumlah pin yang minimal 1. Mengenal ATmega16 Mikrokontroler ini menggunakan arsitektur Harvard yang memisahkan memori program dari memori data, baik bus alamat maupun bus data, sehingga pengaksesan program dan data dapat dilakukan secara bersamaan (concurrent), adapun blog diagram arsitektur ATMega16. Secara garis besar mikrokontroler ATMega16 terdiri dari : 1. Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16Mhz. 2. Memiliki kapasitas Flash memori 16Kbyte, EEPROM 512 Byte, dan SRAM 1Kbyte 3. Saluran I/O 32 buah, yaitu Port A, Port B, Port C, dan Port D. 4. CPU yang terdiri dari 32 buah register. 5. User interupsi internal dan eksternal 6. Port antarmuka SPI dan Port USART sebagai komunikasi serial 7. Fitur Peripheral - Dua buah 8-bit timer/counter dengan prescaler terpisah dan mode compare - Satu buah 16-bit timer/counter dengan prescaler terpisah, mode compare, dan mode capture - Real time counter dengan osilator tersendiri - Empat kanal PWM dan Antarmuka komparator analog - 8 kanal, 10 bit ADC - Byte-oriented Two-wire Serial Interface - Watchdog timer dengan osilator internal
  • 14. CopyRigh@Eka Budi.2018 2. Konfigurasi Pin ATMega16 Gambar 2. Konfigurasi PIN ATMega16 Dengan deskripsi Pin sebagai berikut :  VCC:Sumber Tegangan  Ground : Ground  Port A (PA0..PA7):Pin ini berfungsi sebagai port masukan ke A/D Converter. Port ini juga bertindak sebagai Port I/O 8-bit dua arah, jika A/D Converter itu tidak digunakan. Pin - pin Port dapat menyediakan resistor internal pull-up (yang dipilih untuk masing-masing bit). Keluaran Port A memiliki karakteristik-karakteristik pengarah simetris dengan sitem dua arah dan sumber yang tinggi. Port A bersifat tri-stated yaitu ketika kondisi reset akan aktif, sekali pun clock tidak menjalankan.  Port B (PB0..PB7):Port B adalah satu Port I/O 8-bit dua arah dengan resistor-resistor pull-up internal (yang terpilih untuk masing-masing bit). Keluaran buffer Port B mempunyai karakteristik-karakteristik pengarah simetris dengan kedua kemampuan sumber yang tinggi. Pada input, Port B menggunakan sumber arus rendah jika resistor-resistor pull-up diaktifkan. Port B bersifat tri-stated, yaitu reset akan aktif walaupun clock tidak dijalankan.  Port C (PC0..PC7):Port C adalah satu Port I/O 8-bit dua arah dengan resistor-resistor pull-up internal (yang terpilih untuk masing-masing bit). Keluaran Port C mempunyai karakteristik- karakteristik pengarah simetris dengan kedua kemampuan sumber tinggi. Pada input, Port C menggunakan sumber arus rendah jika resistor-resistor pull-up diaktifkan. Port C bersifat tri- stated ketika reset aktif, walaupun clock tidak aktif. Jika antar muka JTAG adalah
  • 15. CopyRigh@Eka Budi.2018 dimungkinkan, resistor-resistor pull-up pin PC5(TDI), PC3(TMS) dan PC2(TCK) akan diaktifkan walaupun reset aktif.  Port D (PD0..PD7):Port D adalah satu Port I/O 8-bit dua arah dengan resistor-resistor pull- up internal (yang terpilih untuk masing-masing bit). Pin - pin output Port D mempunyai karakteristik-karakteristik pengarah simetris dengan kedua kemampuan sumber tinggi. Pada input, Port D secara eksternal menggunakan sumber arus rendah yang dengan mengaktifkan resistor-resistor pull-up. Port D bersifat tri-stated, yaitu reset menjadi aktif walaupun clock tidak diaktifkan.  RESET:Pada Input Reset, besarnya amplitude yang dibutuhkan untuk mengaktifkan reset adalah lebih besar dari panjang pulse minimum untuk mengatur ulang (sesuai datasheet), sekali pun clock itu tidak diaktifkan. Pulsa yang lebih pendek belum tentu dapat mengaktifkan reset.  XTAL1:Input pembalik / pembangkit Oscillator penguat dan input rangkaian operasi clock internal.  XTAL2:Output dari pembalik / pembangkit Oscillator penguat.  AVCC:AVCC adalah pin sumber tegangan untuk Port A dan A/D Converter. Pin harus disambungkan secara eksternal ke VCC, walaupun konverter analog-digital tidak digunakan. Jika konverter analog-digital digunakan, Pin harus dihubungkan ke VCC melalui suatu Low- Pass Filter.  AREF:AREF berfungsi sebagai pin referensi analog untuk A/D Converter. 3. Port sebagai input/output digital ATMega16 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD. Keempat port tersebut merupakan jalur bidirectional dengan pilihan internal pull-up. Tiap port mempunyai tigabuah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf „x‟mewakilinama huruf dari port sedangkan huruf „n‟ mewakili nomor bit. BitDDxn terdapat pada I/O address DDRx, bit PORTxn terdapat padaI/O address PORTx, dan bit PINxn terdapat pada I/O address PINx. Bit DDxn dalam register DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1 maka Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin input.Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin input, maka
  • 16. CopyRigh@Eka Budi.2018 resistor pull-up akan diaktifkan. Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 0. Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0, PORTxn=1) atau kondisi output low (DDxn=1, PORTxn=0). Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama lingkungan impedansi tinggi tidak memperhatikan perbedaan antara sebuah strong high driver dengan sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset 1 untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input dengan pull-up ke kondisi output low juga menimbulkan masalah yang sama. Kita harus menggunakan kondisi tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi transisi. Tabel . Konfigurasi pin port Bit 2 – PUD :Pull-up Disable Bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan walaupun register DDxn dan PORTxn dikonfigurasikan untuk menyalakan pull-up (DDxn=0, PORTxn=1).
  • 17. CopyRigh@Eka Budi.2018 6.5 Persiapan Percobaan Penerapan Mikrokontroler AVR 1) Percobaan Dengan Proteus 7 dan CodeVision AVR a) Projek Pengontrolan Lampu LED Contoh 1 : Simulasi Program Blinking LED  Langkah – langkah : - Membuat Scematik rangkaian di Proteus 7, seperti berikut : Komponen : - Mikrokontroler Atmega16 - LED 10 buah - Resistor 220 R 10 buah Untuk Reset : - Push button - Crystal - Kapasitor 22p 2 buah - Kapasitor 100n 1 buah - Resistor 100 K 1 buah - Membuat Program di CodeVision AVR a) Buat Program ke dalam CV AVR. Setelah membuka Program CodeVision AVR Pilih File → New→ Pilih Project
  • 18. CopyRigh@Eka Budi.2018 Gambar . Membuat File baru - Selanjutnya akan muncul window konfirmasi menggunakan AGP CodeWizardAVR → Yes Gambar. Project baru menggunakan CodeWizardAVR - Atur Konfigurasi Chip yang digunakan
  • 19. CopyRigh@Eka Budi.2018 - Atur PORT sesuai dengan rangkaian, dimana PORT C sebagai Output - Selanjutnya setelah pengaturan selesai, simpan file dengan memilih Program  Pilih Generate, Save and Exit, seperti berikut : - Selanjutnya isikan nama file yang ingin digunakan (File tersimpan dalam 3 file, dalam hal ini File.c, File.prj, dan File.cwp, dengan masing – masing nama ditulis sama, dan Klik Save, seperti berikut :
  • 20. CopyRigh@Eka Budi.2018 - Selanjutnya akan terbentuk file untuk diisi logika program :  Secara default semua variabel akan terbentuk dan komentar tentang program, baik deklarasi variabel ataupun inisialisasi PORT yang digunakan. Catatan : - Hapus semua variabel dan komentar yang tidak digunakan - // (tanda slas 2 tersebut menyatakan komentar untuk 1 baris), dalam hal ini komentar tidak dieksekusi/ diproses oleh program - /* ......... */ (menyatakan komentar dalam beberapa baris) #include <mega16.h> #include <delay.h> // menyatakan memanggil Library delay void main(void) { // Mendefinisikan PORT Untuk Output PORTC=0x00; DDRC=0xFF; // PORT C sebagai Output while (1) { // Untuk Fungsi PORTC = 0x00; // Kondisi LED Menyala delay_ms(1000); // LED Menyala selama 1 detik PORTC = 0xFF; // Kondisi LED Mati delay_ms(1000); } }
  • 21. CopyRigh@Eka Budi.2018 - Jika tampa error, program siap diupload ke mikrokontroler yang digunakan dalam rangkaian, seperti berikut :  Cara mengcompile program CV AVR ke Proteus a) Klik kanan di bagian mikrokontroler, kemudian Pilih Edit properties seperti berikut : b) Selanjutnya cari dimana tempat menyimpan program yang dibuat (dalam hal ini file yang dibutuhkan adalah file.HEX ataupun file.COFF, seperti berikut :
  • 22. CopyRigh@Eka Budi.2018 Contoh 2 : Simulasi Program Menyalakan LED dengan Tombol  Jika gambar rangkaiannya adalah sebagai berikut : Ditanya : Buatlah program untuk kondisi sebagai berikut : - Jika tombol 1 ditekan maka LED 1 dan LED 2 menyala - Jika tombol 2 ditekan maka LED 3 dan LED 4 menyala Pembahasan Program :  Langkah – langkah - Buka aplikasi CV AVR seperti contoh 1 - Ketikan logika program seperti berikut : .....Bersambung .....>> #include <mega16.h> void main(void) { // Mendefinisikan Tombol Input DDRD.0 = 0; DDRD.1 = 0; // Mendefinisikan OUTPUT LED //PORTC=0x00; // Untuk kondisi LED MATI DDRC.0=1; DDRC.1=1; DDRC.2=1; DDRC.3=1; // Mendefinisikan PORT Untuk OUTPUT // Untuk semua LED MATI PORTC.0=1; PORTC.1=1; PORTC.2=1; PORTC.3=1;
  • 23. CopyRigh@Eka Budi.2018 LATIHAN 1 : Dari berdasarkan contoh – contoh sebelumnya, jika rangkaiannya seperti berikut : while (1) { // Penanganan Fungsi if (PIND.0 == 0) { PORTC.0=0; PORTC.1=0; PORTC.2=1; PORTC.3=1; } else if(PIND.1 == 0) { PORTC.0=1; PORTC.1=1; PORTC.2=0; PORTC.3=0; } // Fungsi LED untuk kondisi awal atau mati else { PORTC.0=1; PORTC.1=1; PORTC.2=1; PORTC.3=1; } } }
  • 24. CopyRigh@Eka Budi.2018 Ditanya : Buatlah program untuk menggontrol kondisi sebagai berikut, dimana Output di PORT C dan Input di PORT B : - Jika Tombol 0 ditekan, maka LED 0 menyala - Jika Tombol 1 ditekan, maka LED 1 menyala - Sampai seterusnya Jika Tombol 7 ditekan, maka LED 7 menyala LATIHAN 2 : Dari gambar rangkaian berikut, jika PORT C sebagai Output : Ditanya : Buatlah program untuk menampilkan LED berkedip selama 10 ms, dimana kondisi awal LED 0 sampai LED 3 hidup selama 10 ms dan LED 4 sampai LED 7 mati selama 10 ms, Selanjutnya LED 4 sampai LED 7 yang hidup selama 10 ms dan LED 0 sampai LED 3 yang mati selama 10 ms secara terus menerus.
  • 25. CopyRigh@Eka Budi.2018 Daftar Referensi : Albert Paul Malvino. Edisi Kedua.1994. ”Elektronika Komputer Digital Pengantar Mikrokontroler.” Penerbit Erlangga Syahrul. Cetakan Pertama. 2014. “ Pemograman Mikrokontroler AVR Bahasa Assembly dan C “ Penerbit Informatika Bandung Mada Sanjaya WS, Ph.D. 2013. “Membuat Robot bersama Profesor Bolabot.” Penerbit Gava Media. Yogyakarta Mada Sanjaya WS, Ph.D. 2016. “Panduan Praktis Pemograman Robot Vision Menggunakan Matlab dan IDE Arduino.” Penerbit Andi. Yogyakarta Muhamad Ali, M.T., dan TIM. Program Pengabdian Masyarakat (PPM).2013. ” MODUL PROTEUS PROFESIONAL UNTUK SIMULASI RANGKAIAN DIGITAL DAN MIKROKONTROLER (Materi Lanjutan Mikrokontroler).” PENDIDIKAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA Tim P2M Jurusan Teknik Elektro . 2016. “MODUL PELATIHAN MIKROKONTROLLER UNTUK PEMULA DI SMK N I BANTUL.” FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH YOGYAKARTA.