You are on page 1of 46

LAPORAN

PRAKTIKUM MIKROPROSESSOR

Oleh :
NAMA

: SAM SAHRI SAHARUDDIN

STAMBUK

: E1D1 12 004

KELOMPOK

: IV (EMPAT)

PROGRAM STUDI S-I TEKNIK ELEKTRO


FAKULTAS TEKNIK
UNIVERSITAS HALU OLEO
KENDARI
2014

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN


FAKULTAS TEKNIK
UNIVERSITAS HALU OLEO
Jl. H. E. A Mokodompit Kampus Hijau Bumi Tridarma, Kendari

LEMBAR PENGESAHAN
LAPORAN LENGKAP
PRAKTIKUM MIKROPROSESSOR
OLEH :

SAM SAHRI SAHARUDDIN


Telah diperiksa dengan teliti dan disetujui
Asisten Pembimbing Praktikum yang bersangkutan.
Asisten Pembimbing,

SYARIF ASYKIN., ST.

Kendari,
Mengetahui,
Ketua Program Studi
S-1 Teknik Elektro

BUNYAMIN, ST., MT
NIP. 19740418 200112 1 001

Oktober 2014

Menyetujui,
Kepala Laboratorium Elektronika,
Kontrol dan Telekomunikasi

LUTHER PAGILING, ST., MT


NIP. 19660305 199802 1 002

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN


FAKULTAS TEKNIK
UNIVERSITAS HALU OLEO
Jl. H. E. A Mokodompit Kampus Hijau Bumi Tridarma, Kendari

KARTU KONTROL
NAMA

: SAM SAHRI SAHARUDDIN

STAMBUK

: E1D1 12 004

Photo

KELOMPOK

: IV (EMPAT

3X4

PRAKTIKUM

: MIKROPROSESSOR

NO
1
2
3

NAMA PERCOBAAN

TANGGAL MASUK
PRAKTEK LAPORAN

ASISTEN

KET

INPUT/OUTPUT
INTERRUPSI
TIMER/COUNTER

Kendari,

Oktober 2014

Kepala
Laboratorium
Telekomunikasi

Elektronika,

Kontrol

LUTHER PAGILING, ST., MT


NIP. 19660305 199802 1 002

dan

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN


FAKULTAS TEKNIK
UNIVERSITAS HALU OLEO
Jl. H. E. A Mokodompit Kampus Hijau Bumi Tridarma, Kendari

Nama

: Sam Sahri Saharuddin

NIM

: E1D1 12 004

Mata kuliah

: Praktikum Mikroprosessor

Kelompok

: IV (Empat)

No

Hari/tanggal

Uraian

Paraf

Kendari,

Oktober 2014

Assisten Dosen

Syarif Asykin., ST

KATA PENGANTAR
Assalamu'alaikum Wr.Wb
Puji syukur kita panjatkan kehadirat Allah SWT. karena atas segala rahmat-Nya sehingga laporan
Praktikum Mikroprosessor tahun 2014/2015 ini dapat terselesaikan. Dalam laporan praktikum ini
terdapat hasil percobaan yang telah dilakukan pada praktikum mikroprosessor sebelumnya.
Laporan praktikum ini berisi mengenai semua hasil percobaan yang sesuai dengan teori yang
telah diajarkan dalam praktikum di laboratorium. Laporan ini berisi 3 bab dengan masing masing
percobaannya. Tiga bab tersebut adalah : Input/Output, Interupsi dan Timer/Counter.
Dengan selesainya laporan praktikum ini, penulis mengucapkan terima kasih kepada Dosen
Praktikum Mikroprosessor Bapak Luther Pagiling, ST,. MT dan asisten dosen praktikum
mikroprosessor Bapak Syarif Asykin, ST.
Dan teman-teman anggota kelompok IV serta seluruh pihak yang telah terlibat dalam penyusunan
laporan ini baik secara langsung maupun tak langsung.
Penulis menyadari sepenuhnya bahwa laporan ini masih banyak memiliki kekurangan. Oleh
karena itu, dengan lapang dada dan hati terbuka penulis mengharapkan pada pembaca untuk
memberikan saran dan kritik yang sifatnya membangun demi sempurnanya laporan ini.

Kendari,

Oktober 2014

Penyusun

DAFTAR ISI
Halaman Judul .. i
Halaman Pengesahan ii
Kartu Kontrol iii
Kartu Asistensi . iv
Kata Pengantar ..v
Daftar Isi ...vi
Bab I Input/Output ....1
1.1 Teori Dasar ....
1.2 Tujuan Percobaan ..
1.3 Alat dan Bahan ..
1.4 Prosedur Percobaan ...
1.5 Analisa ...
1.5.1
....
1.5.2
...

1
5
5
5
8
Percobaan

..

8
Percobaan 2 ...
9

Bab II Interupsi .....13


2.1 Teori Dasar ....
2.2 Tujuan Percobaan ..
2.3 Alat dan Bahan ..
2.4 Prosedur Percobaan ...
2.5 Analisa ...
2.5.1
....
2.5.2
...

13
17
17
18
21
Percobaan

..

21
Percobaan 4 ...
22

Bab III Timer/Counter ...... 24


3.1 Teori Dasar ....
3.2 Tujuan Percobaan ..
3.3 Alat dan Bahan ..
3.4 Prosedur Percobaan ...

24
25
25
25

3.5 Analisa ...


3.5.1
....

28
Percobaan
28

Penutup . 30
Daftar Pustaka .. 32

..

BAB I
INPUT/OUTPUT
1.1 Teori Dasar
AVR merupakan seri mikrokontroler CMOS 8-bit buatan
Atmel, berbasis arsitektur RISC (Reduced Instruction Set
Computer). Hampir semua instruksi dieksekusi dalam satu
siklus clock. AVR mempunyai 32 register general -purpose,
timer/counter fleksibel dengan mode compare, interrupt
internal dan eksternal, serial UART, programmable Watchdog
Timer, dan mode power saving, ADC dan PWM internal. AVR
juga mempunyai In-System Programmable Flash on-chip yang
mengijinkan memori program untuk diprogram ulang dalam
system menggunakan hubungan serial SPI. ATMega16.
ATMega16 mempunyai throughput mendekati 1 MIPS per
MHz membuat disainer sistem untuk mengoptimasi konsumsi
daya versus kecepatan proses. 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 tiga buah
register

bit,

yaitu

DDxn,

PORTxn,

dan

PINxn.

Huruf

xmewakili nama huruf dari port sedangkan huruf n


mewakili nomor bit. Bit DDxn 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 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.

Gambar 1.1 Pin-Out ATmega16

Mikrokontroler AVR mempunyai 3 register yang berkaitan


dengan port I/O diantaranya adalah :
1. Register DDRx
Tanda x pada register DDRx meunjukkan port yang
digunakan

misalkan

menggunakan

PORT

berarti

registernya DDRA.
Register ini berfungsi untuk mengatur arah PIN/PORT mikrokontroler.
Apakah dipakai sebagai input atau output. Nilai register ini sebesar 8 bit.
Setiap bit mewakili masing-masing pin kaki mikrokontroler. Jika pin kaki
mikrokontroler digunakan sebagai input maka register DDRx nya harus
bernilai 0. Jika pin kaki micro digunakan sebagai output maka register
DDRx nya harus bernilai 1.
Misal Port A akan digunakan sebagai input/output maka untuk
mensetnya digunakan perintah:

DDRA=0x00;//ini berarti seluruh pin-pin pada Port A digunakan sebagai


input.
DDRA=0xFF;//ini berarti seluruh pin-pin pada Port A digunakan sebagai
Output.
DDRA = 0b11011010

Gambar 1.2 Contoh register DDRA

2. Register PORTx
Tanda x juga menunjukkan port mikrokontroler yang digunakan.Jika
PORT digunakan sebagai input register ini berfungsi sebagai penentu
apakah kondisi PORT di Pull Up atau Floating. Dan jika PORT digunakan
sebagai Output register ini menentukan kondisi PORT High atau
Low.Untuk memahami arti pull up, dapat dililhat pada gambar berikut.

Gambar 1.3 Contoh Pull-up

Jika PIN 1 dihubungkan ke VCC melalui resistor (R) maka


inilah yang dimaksud dengan kondisi PULL-UP. Ketika tidak
ada tegangan dari luar PIN 1, maka kondisi logika yang
terbaca pada PIN 1 adalah HIGH (Logik 1), tetapi jika
terhubung dengan tegangan luarannya 0 (ground) maka
PIN 1 akan terbaca sebagai kondisi LOW (logik 0).
Sedangkan PIN.2 dibiarkan begitu saja sehingga kondisi
logik

dari

PIN.2

begitu

rentan

terhadap

pengaruh

disekitarnya. PIN.2 bisa berlogika HIGH, bisa juga berlogika


LOW, ini artinya logika PIN.2 mengambang (floating).Berikut
adalah contoh programnya.
#include <mega8535.h>
void main()
{
DDRC= 0xFF; //Port C sebagai Output
PORTC= 0x BB; //mengeluarkan nilai 0x BB ke Port C
}
3. Register PINx
Register PINx digunakan membaca kondisi logika pada
pin-pin yang dijadikan sebagai masukan dari port terkait.
Untuk mempermudah proses pembacaan data dari pin,

sebaiknya pin tersebut di-set ke kondisi pull-up aktif.Berikut


adalah contoh programnya.
DDRC = 0b11110000; //pin PC0-PC3 dari PORTC sebagai
input(masukan)
PORTC = 0b00001111; //pull-up pin PC0-PC3 diaktifkan.
1.2 Tujuan Percobaan
Adapun tujuan dari percobaan ini adalah sebagai berikut :
1) Dapat memahami fungsi dari register register untuk mengakses port
AVR ATMega16.
2) Dapat mengakses Port pada mikrokontroler AVR ATMega16.
3) Dapat menggunakan aplikasi CodevisionAVR untuk mendesain program.
4) Dapat mendownload program ke dalam chip AVR ATMega16.
1.3 Alat dan Bahan
Adapun alat dan bahan yang digunakan pada percobaan ini adalah
sebagai berikut :
1)
2)
3)
4)

PC yang dilengkapi dengan software CodevisionAVR.


Development Board AVR ATMega 16.
Downloader
Adaptor 9 12 volt DC

1.4 Prosedur Percobaan


Adapun prosedur percobaan dalam percobaan ini adalah sebagai berikut :
1) Membuat sebuah project baru menggunakan aplikasi CodevisionAVR
dengan cara membuka aplikasi CodevisionAVR kemudian klik menu File
| New

2) Pilih Project, lalu klik tombol OK.

3) Kemudian

klik

tombol

Yes

untuk

menggunakan

fasilitas

CodewizardAVR.

4) Lakukan konfigurasi berikut pada CodeWizardAVR.


Tab Chip :
Chip : ATMega16
Clock : 12,000000 MHz
Tab Ports :
Port C : pada kolom Data Direction bit 0 s/d 7 di set sebagai output,
pada kolom Pull Up/Output Value bit 0 s/d 7 di set 1.
5) Pada jendela CodewizardAVR, klik menu program | Generate, Save and
Exit untuk menyimpan project.

6) Ketikkan kode program berikut ini pada bagian while (1)


PORTC.0=0;
6a) Untuk Percobaan 2 : Pada header program, tambahkan kode berikut.
#include<delay.h>
6b) Untuk Percobaan 2 : Pada program utama, ketikkan kode berikut.
PORTC=0x00;
delay_ms(500);
PORTC=0xFF;
delay_ms(800);

7) Melakukan proses kompilasi program dengan cara mengklik tombol


Compile, kemudian klik tombol Build.

8) Setelah itu akan muncul jendela konfirmasi berikut.

9) Hubungkan PC dengan Development Board menggunakan Downloader.


10) Download program yang telah di compile ke dalam chip.
11) Lakukan pengamatan pada nyala lampu LED.

1.5 Analisa
1.5.1
Percobaan 1 (Menyalakan Led)
A. Penjelasan Program
PORTC.0=0;
Program diatas menandakan pada PORT C bit ke 0
akan dinyalakan sementara PORT C bit ke-1 s/d 7
dipadamkan.

B. Flowchart Program
Mulai

Inisialisasi port

Nyalakan LED1
PORTC.0=0

Berakhir
1.5.2
Percobaan 2 (Flashing LED dan Running Led)
A. Penjelasan Program
Flashing LED
#include<delay.h>
Kode

program

diatas

adalah

file

library

pada

compiler bahasa C, yang harus dimasukkan kedalam

10

program apabila kita menginginkan waktu jeda


untuk menyalakan LED.
PORTC=0x00;
Jika dalam sususan
0b00000000.Artinya
menyala.
delay_ms(500);
Dilakukan waktu

bilangan
semua

tunda

biner

LED

selama

menjadi

pada

500

ms

PORTC

atau

terserah keinginan bagi yang memprogram.


PORTC=0xFF;
Jika dalam susunan biner menjadi 0b11111111.
Artinya semua LED pada PORTC padam.
delay_ms(800);
Kemudian dilakukan lagi penundaan untuk beralih
ke

program

PORTC=0x00.

Dan

hasilnya

akan

menjadi kedap-kedip atau istilahnya flashing LED.

Running LED
PORTC=0b11111110;
Artinya semua LED pada PORTC padam kecuali pada
PORTC.0 atau LED1.
delay_ms(500);
Kemudian dilakukan lagi penundaan untuk beralih
ke program selanjutnya.
PORTC=0b11111101;
Artinya LED yang nyala tadi pada LED 1 akan padam
dan LED 2 yang berpindah nyala.
delay_ms(500);
Kemudian dilakukan lagi penundaan untuk beralih
ke program selanjutnya.
PORTC=0b11111011;
delay_ms(500);
PORTC=0b11110111;
delay_ms(500);
PORTC=0b11101111;
delay_ms(500);
PORTC=0b11011111;
delay_ms(500);

11

PORTC=0b10111111;
delay_ms(500);
PORTC=0b01111111;
delay_ms(500);
Seperti cara 2 LED tadi, secara berturut-turut
dipindahkan ke LED yang disampingnya sampai
pada LED terakhir atau pada PORTC.7 dengan
masing-masing waktu tunda sama, namun boleh
juga diubah sesuai keinginan.
B. Flowchart Program
Flashing LED

12

Mulai

Inisialisasi Port

Nyalakan LED1s/d7
PORTC=0x00

Delay 500 ms

Padamkan LED1s/d7
PORTC=0xFF

Delay 500 ms

Berakhir

Running LED

13

Mulai

Inisialisasi port

Nyalakan LED1
PORTC=0b11111110
Delay 500 ms

Padamkan LED1
Nyalakan LED2
PORTC=0b11111101
Delay 500 ms

Padamkan LED2
Nyalakan LED3
Seterusnya s/d LED 8
PORTC=0b11111011
Delay_ms(500)
PORTC=0b11110111
Delay_ms(500)
PORTC=0b11101111Delay_ms(500)
PORTC=0b11111111
Delay_ms(500)
PORTC=0b11011111
Delay_ms(500)
PORTC=0b10111111
Delay_ms(500)
PORTC=0b01111111
Delay_ms(500)
Berakhir

14

BAB II
INTERUPSI
2.1 Teori Dasar
AVR merupakan seri mikrokontroler CMOS 8-bit buatan
Atmel, berbasis arsitektur RISC (Reduced Instruction Set
Computer). Hampir semua instruksi dieksekusi dalam satu
siklus clock. AVR mempunyai 32 register general-purpose,
timer/counter fleksibel dengan

mode compare, interrupt

internal dan eksternal, serial UART, programmable Watchdog


Timer, dan mode power saving, ADC dan PWM internal.
Interupsi dalam teknologi

informasi merujuk

kepada

sebuah permintaan terhadap layanan dari CPU yang dibuat


baik secara eksternal oleh sebuah perangkat keras (sebagai
contoh: oleh disk drive, atau port I/O) atau secara internal
oleh CPU itu sendiri. Interupsi perangkat keras eksternal
digunakan untuk beberapa situasi seperti halnya ketika
sebuah karakter telah diterima dari sebuah port I/O tertentu
dan harus diproses oleh CPU, disk drive yang telah siap untuk
mentransfer

sekumpulan data,

atau system

timer yang

berdetak.
Interrupt adalah suatu kejadian atau peristiwa yang
menyebabkan

mikrokontroler

berhenti

sejenak

untuk

melayani interrupt tersebut. Yang harus diperhatikan untuk


menguanakan interupsi adalah, kita harus tau sumbersumber

interupsi,

vektor

layanan

interupsi

dan

yang

terpenting rutin lyanan interupsi, yaitu subrutin yang akan


dikerjakan bila terjadi interupsi.
Interupsi

eksternal

merupakan

fitur

tambahan

dari

mikrokontroler AVR ATMEGA 16 yang khusus difungsikan

15

untuk interupsi. Interupsi eksternal adalah jenis interupsi


asinkron

yang

timer/counter,

pengaktifannya
ADC,

bukan

komparator

dipicu

analog

dari

fitur:

ataupun

dari

komunikasi antarmuka, tetapi dipicu secara logika dari luar


mikrokontroler (eksternal) mikrokontroler AVR ATMEGA 16
mempunyai 3 buah pemicu interupsi eksternal, yaitu pada pin
INT0 (PORTD2), pin INT1 (PORTD3), pin INT2 (PORTB2).

Gambar 1.1 Pin-Out ATmega16

Yang diberi tanda pada gambar diatas adalah tempat


lewat interupsi eksternal atau pemicu interupsi eksternal.
Pemicu interupsi eksternal yaitu pada pin INT0, pin INT1, dan
pin INT2.
Program yang dijalankan pada saat melayani interrupt
disebut Interrupt Service Routine. Analoginya adalah sebagai
berikut, seseorang sedang mengetik laporan, mendadak

16

telephone berdering dan menginterrupsi orang tersebut


sehingga menghentikan pekerjaan mengetik dan mengangkat
telephone.Setelah pembicaraan telephone yang dalam hal ini
adalah merupakan analogi dari Interrupt Service Routine
selesai

maka

pekerjaanya

orang

mengetik.

tersebut

kembali

Demikian

pula

meneruskan
pada

sistem

mikrokontroler yang sedang menjalankan programnya, saat


terjadi interrupt, program akan berhenti sesaat, melayani
interrupt tersebut dengan menjalankan program yang berada
pada alamat yang ditunjuk oleh vektor dari interrupt yang
terjadi hingga selesai dan kembali meneruskan program yang
terhenti oleh interrupt tadi. Seperti yang terlihat Gambar
dibawah ini, sebuah program yang seharusnya berjalan terus
lurus, tiba-tiba terjadi interrupt dan harus melayani interrupt
tersebut terlebih dahulu hingga selesai sebelum ia kembali
meneruskan pekerjaannya.

Pada ATMEGA16 terdapat 3 pin yang dapat digunakan


untuk interupsi eksternal, yaitu INT0, INT1 dan INT2.
Interupsi eksternal dapat dibangkitkan apabila terdapat
perubahan

logika

atau

logika

pada

pin

interupsi.

17

Pengaturan kondisi keadaan yang menyebabkan terjadinya


interupsi eksternal diatur oleh register MCUCR ( MCU Control
Register )

Bit penyusunnya akan dijelaskan sebagai berikut.


1. Bit ISC11 dan ISC10 bersama-sama menentukan kondisi
yang dapat menyebabkan interupsi eksternal pada pin
INT1.

ISC1

ISC1

Deskripsi

Logika 0 pada pin INT1 menyebabkan


interupsi

Perubahan

logika

menyebabkan interupsi

pada

pin

INT1

18

Perubahan Kondisi 1 ke 0 pada pin INT1


menyebabkan Interupsi

Perubahan kondisi 0 ke 1 pada pin INT1


menyebabkan interupsi

2.

Bit ISC01 dan ISC00 bersama-sama menentukan kondisi


yang dapat menyebabkan interupsi eksternal pada pin INT0.

ISC0

ISC0

Deskripsi

Logika 0 pada pin INT0 menyebabkan


interupsi

Perubahan

logika

pada

pin

INT0

menyebabkan interupsi

Perubahan Kondisi 1 ke 0 pada pin INT0


menyebabkan Interupsi

Perubahan kondisi 0 ke 1 pada pin INT0


menyebabkan interupsi

Pemilihan pengaktifan interupsi eksternal diatur oleh


register GICR (General Interrupt Control Register) yang
terlihat seperti gambar ini

19

Bit penyusunnya dapat dijelaskan sebagai berikut:


1.

Bit INT1 adalah bit untuk mengaktifkan interupsi eksternal


1. Apabila bit tersebut diberi logika 1 dan bit-I pada SREG (Status
Register) juga satu maka interupsi eksternal 1 akan aktif.

2.

Bit INT0 adalah bit untuk mengaktifkan interupsi eksternal


0. Apabila bit tersebut diberi logika 1 dan bit-I pada SREG (Status
Register) juga satu maka interupsi eksternal 1 akan aktif.

3.

Bit INT2 adalah bit untuk mengaktifkan interupsi eksternal


2. Apabila bit tersebut diberi logika 1 dan bit-I pada SREG (Status
Register) juga satu maka interupsi eksternal 1 akan aktif
2.2 Tujuan Percobaan
Adapun tujuan dari percobaan ini adalah sebagai berikut :
1) Dapat memahami fungsi dari register register pengendali interupsi
eksternal.
2) Dapat mengoperasikan interupsi eksternal pada mikrokontroler AVR
ATMega16.
2.3 Alat dan Bahan
Adapun alat dan bahan yang digunakan pada percobaan ini adalah
sebagai berikut :
1)
2)
3)
4)

PC yang dilengkapi dengan software CodevisionAVR.


Development Board AVR ATMega 16.
Downloader
Adaptor 9 12 volt DC

2.4 Prosedur Percobaan


Adapun prosedur percobaan dalam percobaan ini adalah sebagai berikut :
1) Membuat sebuah project baru menggunakan aplikasi CodevisionAVR.

20

2) Lakukan konfigurasi berikut pada CodeWizardAVR.


Tab Chip :
Chip : ATMega16
Clock : 12,000000 MHz

Tab Ports :
Port C : pada kolom Data Direction bit 0 s/d 7 di set sebagai output,
pada kolom Pull Up/Output Value bit 0 s/d 7 di set 0.

Tab Eksternal IRQ


Centang pada checkbox INT0
Pilih mode Rising Edge

21

3) Pada jendela CodewizardAVR, klik menu program | Generate, Save and


Exit untuk menyimpan project.

4) Pada header program, tambahkan kode berikut :


#include<delay.h>
5) Tambahakan kode program berikut pada fungsi ext_int0_isr(void)
PORTD=0x00;
delay_ms(500);
PORTD=0xFF;
5a)
Untuk Percobaan 4 : Tambahkan kode program berikut pada
program utama while(1)
PORTC=0b11111110;
delay_ms(500);
PORTC=0b11111101;
delay_ms(500);
PORTC=0b11111011;
delay_ms(500);
PORTC=0b11110111;
delay_ms(500);
PORTC=0b11101111;
delay_ms(500);
PORTC=0b11011111;
delay_ms(500);
PORTC=0b10111111;
delay_ms(500);
PORTC=0b01111111;
delay_ms(500);
6) Lakukanlah proses kompilasi program dengan cara mengklik tombol
Compile, kemudian klik tombol Build.

22

7) Apabila tidak ada kesalahan, maka program siap untuk di download ke


chip target..
8) Hubungkan PC dengan Development Board menggunakan Downloader.
9) Download program yang telah di compile ke dalam chip.
10) Tekanlah tombol push-button1 dan lakukan pengamatan.

2.5 Analisa
2.5.1
Percobaan 3 (Flashing LED oleh INT0)
A. Penjelasan Program
#include<delay.h>
Kode program diatas adalah file library pada compiler
bahasa C, yang harus dimasukkan kedalam program
apabila kita menginginkan waktu jeda untuk
menyalakan LED.
PORTD=0x00;
Semua LED dalam keadaan menyala. Alasan mengapa
yang diprogram pada PORTD bukan pada PORT C
karena
program

program flashing
utama,

tetapi

LED ini bukan sebagai


dimasukkan

pada

fungsi

23

ext_int0_isr(void) yang sudah dikonfigurasikan dari


awal supaya yang menginterupsi dari PORTD.
delay_ms(500);
Kemudian ditunda selama 500 ms.
PORTD=0xFF;
Semua LED dipadamkan.
B. Flowchart Program

24

Looping
forever

ya

25

2.5.2

Percobaan 4 (Running LED Program Utama dan Flashing

LED oleh INT1)


A. Penjelasan Program

tidak

#include<delay.h>
Kode program diatas adalah file library pada compiler
bahasa C, yang harus dimasukkan kedalam program
apabila kita menginginkan waktu jeda untuk
menyalakan LED.
PORTD=0x00;
Semua LED dalam keadaan menyala. Alasan mengapa
yang diprogram pada PORTD bukan pada PORT C
karena
program

program flashing
utama,

tetapi

LED ini bukan sebagai


dimasukkan

pada

fungsi

ext_int0_isr(void) yang sudah dikonfigurasikan dari


awal supaya yang menginterupsi dari PORTD.

Start

delay_ms(500);
Kemudian ditunda selama 500 ms.
PORTD=0xFF;

Inisialisasi port

Semua LED dipadamkan.


Pada Program utama

INT0

PORTC=0b11111110;
Artinya semua LED pada PORTC padam kecuali pada

PORTC.0 atau LED1.


Main Program
delay_ms(500);
Kemudian dilakukan lagi penundaan untuk beralih ke
program selanjutnya.
PORTC=0b11111101;
Artinya LED yang nyala tadi pada LED 1 akan padam
dan LED 2 yang berpindah nyala.
delay_ms(500);
Kemudian dilakukan lagi penundaan untuk beralih ke
program selanjutnya.
PORTC=0b11111011;
delay_ms(500);
PORTC=0b11110111;

End

26

delay_ms(500);
PORTC=0b11101111;
delay_ms(500);
PORTC=0b11011111;
delay_ms(500);
PORTC=0b10111111;
delay_ms(500);
PORTC=0b01111111;
delay_ms(500);
Seperti

cara

LED

tadi,

secara

berturut-turut

dipindahkan ke LED yang disampingnya sampai pada


LED terakhir atau pada PORTC.7 dengan masingmasing waktu tunda sama, namun boleh juga diubah
sesuai keinginan.
B. Flowchart Program

27

Looping
forever

ya
28

tidak

Start

Inisialisasi po

INT0

Main Program
(Running LED

End

29

BAB III
TIMER/COUNTER
3.1 Teori Dasar
AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel, berbasis
arsitektur RISC (Reduced Instruction Set Computer). Hampir semua instruksi
dieksekusi dalam satu siklus clock. AVR mempunyai 32 register generalpurpose, timer/counter fleksibel dengan mode compare, interrupt internal dan
eksternal, serial UART, programmable Watchdog Timer, dan mode power
saving, ADC dan PWM internal.
Timer /Counter adalah suatu peripheral yang tertanam didalam
microcontroller yang berfungsi pewaktu.Dengan peripheral ini pengguna
microcontroller dapat dengan mudah menentukan kapan suatu perintah
dijalankan (delay), tentu saja fungsi timer tidak hanya untuk penundaan
perintah saja, timer juga dapat berfungsi sebagai oscilator, PWM, ADC, dan
lain-lain.
Cara kerja timer adalah dengan cara memberikan prescaling (membagi
frekuensi) pada clock yang terpasang pada microcontroller sehingga timer
dapat berjalan dengan frekuensi yang diinginkan. Timer dalam AVR ada
tiga macam yaitu:
1. Timer/Counter 0(8 bit)
2. Timer/Counter 1 (16 bit)
3. Timer/Counter 2 (8 bit)
Sebelum melakukan setting timer maka ditentukan dahulu nilai delay
yang diinginkan lalu bisa kita dapatkan nilai TCNTnya :

30

Keterangan :
TCNT

: Nilai timer (Hex)

fCLK

: Frekuensi clock (crystal) yang digunakan (Hz)

T timer

: Waktu timer yang diinginkan (detik)

: Prescaler (1, 8, 64, 256, 1024)

1+FFFFh : Nilai max timer adalah FFFFh dan overflow saat FFFFh ke
0000h
3.2 Tujuan Percobaan
Adapun tujuan dari percobaan ini adalah sebagai berikut :
1) Dapat memahami fungsi dari register register pengendali Timer.
2) Dapat menghasilkan waktu tunda menggunakan Timer.
3) Menerapkan penggunaan Timer pada program yang akan dibuat.
3.3 Alat dan Bahan
Adapun alat dan bahan yang digunakan pada percobaan ini adalah
sebagai berikut :
1)
2)
3)
4)

PC yang dilengkapi dengan software CodevisionAVR.


Development Board AVR ATMega 16.
Downloader
Adaptor 9 12 volt DC

3.4 Prosedur Percobaan


Adapun prosedur percobaan dalam percobaan ini adalah sebagai berikut :
1) Mula mula mencari terlebih dahulu nilai TCNT dengan menggunakan
rumus :
TCNT = (1 + 0xFFFF) (Waktu * (XTAL/Prescaler))
2) Membuat sebuah project baru menggunakan aplikasi CodewizardAVR.

3) Lakukan konfigurasi berikut pada CodeWizardAVR :


Tab Chip :
Port C : pada kolom Data Direction bit 0 s/d 7 di set sebagai

Output, pada kolom Pull Up/Output Value bit 0 s/d 7 di set 0.


Tab Ports :

31

Port C : pada kolom Data Direction bit 0 s/d 7 di set sebagai


Output, pada kolom Pull Up/Output Value bit 0 s/d 7 di set 0.

Tab Timers :
Pilih tab Timer1 dan lakukan konfigurasi berikut :
o Clock Value : 46,875 KHz
o Interrupt on : Centang pada Timer1 Overflow
o Value : h? (diisi dengan nilai dari register TCNT)
4) Pada jendela CodeWizardAVR, klik menu Program Generate, Save and

Exit untuk menyimpan project.


5) Pada header program, tambahkan kode berikut :
bit detik;

6) Tambahkan kode program berikut pada fungsi timer1_ovf_isr(void)


if (detik==1)
{
PORTC=0xFF;
Detik=0;
}
Else
{
PORTC=0x00;
Detik=1;
}
7) Lakukan komplikasi program dengan cara mengklik tombol Compile,
kemudian klik tombol Build

32

8) Apabila tidak ada kesalahan, maka program siap untuk di download ke


chip target.
9) Hubungkan PC dengan Development Board menggunakan Downloader.
10) Download program yang telah di compile ke dalam chip.

3.5 Analisa
3.5.1

Percobaan 6 (Delay Flashing LED 1 Detik dari

Timer1)
A. Penjelasan Program
bit detik;
Bit adalah tipe data pada bahasa C dan detikadalah
variabel yang mana harus dideklarasikan terlebih
dahulu

karena

tujuan program ini adalah

mendelay 1 detik dari timer1.


if (detik==1)
{
PORTC=0xFF;
Detik=0;
}
Else
{
PORTC=0x00;

untuk

33

Detik=1;
}
If-else

adalah

perintah

yang

menjalakan

dua

statement atau lebih dimana jika syarat kondisi


pertama pada if yaitu detik==1 tidak terpenuhi
maka

akan

dialihkan

ke

else

atau

statement

berikutnya, pada program diatas statement perintah if


yaitu

PORTC=0xFF;Detik=0;Maksud

dari

program

tersebut adalah LED pada PORTC dalam keadaan


padam dan detiknya 0. Kemudian else ada perintah
PORTC=0x00; detik=1;Artinya LED menyala selama 1
detik (karena kondisi terpenuhi yaitu detik=1).

B. Flowchart Program
START

Inisialisasi port

detik==1?

PORTC=0b00000000
detik=1

PORTC=0b11111111
detik=0

34

35

PENUTUP
A. Kesimpulan
AVR merupakan seri mikrokontroler CMOS 8-bit buatan
Atmel, berbasis arsitektur RISC (Reduced Instruction Set
Computer). Hampir semua instruksi dieksekusi dalam satu
siklus clock. AVR mempunyai 32 register general -purpose,
timer/counter fleksibel dengan mode compare, interrupt
internal dan eksternal, serial UART, programmable Watchdog
Timer, dan mode power saving, ADC dan PWM internal. AVR
juga mempunyai In-System Programmable Flash on-chip yang
mengijinkan memori program untuk diprogram ulang dalam
system menggunakan hubungan serial SPI. ATMega16.
Interrupt adalah suatu kejadian atau peristiwa yang
menyebabkan

mikrokontroler

berhenti

sejenak

untuk

melayani interrupt tersebut. Yang harus diperhatikan untuk


menguanakan interupsi adalah, kita harus tau sumbersumber

interupsi,

vektor

layanan

interupsi

dan

yang

terpenting rutin lyanan interupsi, yaitu subrutin yang akan


dikerjakan bila terjadi interupsi.
Timer /Counter adalah suatu peripheral yang tertanam didalam
microcontroller yang berfungsi pewaktu.Dengan peripheral ini pengguna
microcontroller dapat dengan mudah menentukan kapan suatu perintah
dijalankan (delay), tentu saja fungsi timer tidak hanya untuk penundaan
perintah saja, timer juga dapat berfungsi sebagai oscilator, PWM, ADC, dan
lain-lain.
Dari pembahasan materi di atas kita dapat menyimpulkan baik untuk
Input/Output, Interrupsi maupun Timer/Counter memiliki kode atau cara
tersendiri untuk mengaktifkannya. Dengan menggunakan program program,
kita dapat membuat berbagai cara untuk menyalakan LED

36

B. Saran
Saran yang bisa penulis sampaikan adalah selain karena kita kekurangan
alat, kita sebagai mahasiswa sebenarnya mesti mempunyai inisiatif sendiri
dengan segala kekurangan yang ada. Baik dengan mempunyai alat itu sendiri
contohnya, krena ilmu yang didapat tidak lain digunakan untuk kita sendiri.

37

DAFTAR PUSTAKA
http://allaboutmicrocontroller.blogspot.com/2011/04/timercounter-atmega-8535.html
http://sutondoscript.blogspot.com/2012/02/pengertian-definisiinterrupt-adalah.html
http://avrku.blogspot.com/2008/11/basic-input-output-io.html

You might also like