Вы находитесь на странице: 1из 12

MODUL 01 MODUL I/O DASAR

Tsaqif Alfatan Nugraha (13214036)


Asisten: Adinda Rana T.
Tanggal Percobaan: 07/02/2017
EL3124-Praktikum Sistem Mikroprosessor
Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB

Abstrak
2. STUDI PUSTAKA
Praktikum modul 1 praktikum sistem mikroprosesor akan
membahas lebih dalam mengenai komponen input output 2.1 SKEMATIK I/O
dasar pada board ATMega 8535. Praktikan akan
mempelajari bagaimana cara port untuk dijadikan sebagai
input ataupun output. Aplikasi input output akan dibuat
dengan menggunakan software WinAVR dalam bahasa C.
Selain itu praktikum juga bertujuan untuk memahami
pengesetan Ude yang berkaitan dengan penggunakan besar
dan jenis kristal.
Kata kunci: ATMega 8535, Input, Output, Fuse,
WinAVR

1. PENDAHULUAN
Praktikum terdiri dari beberapa sub percobaan.
Semua register dan referensi bit pada bagian ini
Percobaan perta ma berkaitan dengan penggunaan
ditulis dalam ben tuk umum. Huruf x
Port A seba gai output. Progra m akan dibuat
merepresentasikan nomor untuk port dan
sedemikian rupa sehingga menghasilkan
huruf n merepresentasikan nomor bit n ya.
konfigurasi output port A yang telah ditentukan. Bagaimanapun, ketika menggunakan register atau
Kemudian port A akan dihubungkan ke LED
bit yang ditetapkan di program, maka bentuk
sebagai representasi biner dari port A.
tepatnya harus digunakan. Sebagai contoh,
Kedua, pra ktikan akan menga mati penggunaan PORTB3 untuk n omor 3 di Port B, ditulis secara
delay pada AVR gcc. Delay bertujuan untuk general sebagai PORTxn. I/O Registers dan lokasi
mengatur seberapa cepat lampu LED hidup dan bit secara fisik terdaftar di Register Description
mati. Sama seperti percobaan sebelumnya, port A for I/O-Ports di halaman 66.
akan digunakan sebagai output. Nilai biner port A Tiga lokasi alamat memori I/O dialokasikan
akan berubah dari kondisi satu ke kondisi dua
untuk tiap port, satu untuk tiap Data Register
dalam selang delay yang telah ditentukan.
PORTx, Data Direction Register DDRx, dan Port
Kemudian representasi biner bisa dilihat pada
Input Pins PINx. I/O Port Input Pins adalah
nyala dan matinya LED.
read only, sedangkan Data Register dan Data
Ketiga, praktikan akan mulai menggunakan Direction Register adalah read/write. Sebagai
sebuah port s ebagai input. Port D a kan digunakan tambahan, bit Pull-up Disable PUD pada SFIOR
sebagai input di mana port D akan dihubungkan menonaktifkan fungsi pull-up untuk semua pin di
langsung dengan toggle/switch. Kon figurasi dari semua port saat diaktifkan.
toggle yang nyala atau mati akan
merepresentasikan biner dari port D. Port A akan 2.2 KONFIGURASI PIN PORT
juga digunakan kembali sebagai output dan
dihubungkan ke LED untuk menga mati keluaran
progra m. Program akan diatur sedemikian rupa
sehingga untuk konfigurasi input tertentu akan
menghasilkan konfigurasi output yang sesuai
dengan apa yang telah ditentukan.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 1


2.3 PUD PADA SFIOR 3.2 PERCOBAAN 1.A PORT A SEBAGAI OUTPUT

Buat program Jalankan program dan


seperti yang amati keluaran pada
tertera di modul. LED. Analisa kode
Rekomendasi untuk inisialisasi pada pin input Atur target program dan catat hasil
makefile sesuai pada BCL
Jika ada pin yang tidak terpakai, nama file
direkomendasikan agar tiap pin ini terdefinisikan. percobaan
Walaupun kebanyakan input digital
dinonaktifkan dalam mode deep sleep seperti Ubah kode program
yang dideskripsikan diatas, input yang sehingga keluaran
menga mbang harus dihindari untuk men gurangi LED sesuai dengan
representasi biner dari
konsumsi arus pada semua mode lain di mana
kelompok praktikan.
input digital diaktifkan (Reset, Active mode, and
Idle mode).
Metode paling sederhana untuk mendefinisikan
suatu pin yang tidak digunakan adalah untuk
mengaktifkan pull-up internal pada kasus ini, 3.3 PERCOBAAN 1.B FASILITAS DELAY PADA
pull-up akan dinonaktifkan saat reset. Jika AVR GCC
konsumsi daya rendah ketika reset itu penting,
Buat program seperti Jalankan program dan
maka disarankan untuk menggunakan pull-up
yang tertera di modul. amati keluaran pada
atau pull-down eksternal. Menghubun gkan pin- Atur target makefile LED. Analisa kode
pin yang tidak digunakan ke Vcc atau GND sesuai nama file program dan catat hasil
langsung tidak disarankan karena dapat percobaan pada BCL
mengakibatkan kelebihan arus jika pin secara
tidak sengaja dikonfigurasikan sebagai output.
Untuk tugas 1.B.3 buat
2.4 DESKRIPSI REGISTER (UNTUK PORT A) kembari program Modifikasi kode
seperti yang tertera di program sehingga
modul. Jalankan keluaran LED secara
program dan amati bergantian sesuai
keluaran pada LED. dengan representasi
Analisa kode program biner dari tiga angka
dan catat hasil pada terakhir. Catat hasil pada
BCL BCL

Modifikasi kode
program 1.B.3 sehingga
3. METODOLOGI keluaran LED nyala
dari kiri ke kanan
3.1 L ANGKAH UMUM PRAKTIKUM kemudian kembali lagi
ke kiri.Catat hasil
keluaran pada BCL
Peng-install-an Membuat New Project
WinAVR , Driver pada WinAVR dan Add
give IO, dan program untuk masing-
Driver USBasp
3.4 PERCOBAAN 1.C PORT A SEBAGAI OUTPUT
masing percobaan
DAN PORT D SEBAGAI INPUT
Buat program seperti Jalankan program dan
yang tertera di modul. amati keluaran pada
Atur target makefile LED. Analisa kode
Lakukan pengesetan sesuai nama file program dan catat hasil
fuse sesuai Membuat Makefile percobaan pada BCL
pengesetan yang ada dengan pengesetan :
di modul. MCU :ATMega8535
Hubungkan port F_CPU : 7372800 Hz
input ke toggle port AVRDUDE
ouptut ke LED. Programmer : USBasp
Hubungkan board Target : disesuaikan
ke komputer untuk tiap percobaan

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 2


semua bit port A secara langsung. Misalnya
sebagai berikut.
Modifikasi kode program sehingga kondisi PORTA = 0b01010101
berikut terpenuhi :
1. Jika input sama dengan representasi biner Pengesetan cara ini menunjukkan hal serupa
tiga angka NIM Anda, maka kondisi LED dengan pengesetan sebelumnya di mana nilai bit
sama seperti tugas 1.B.2
2. Jika input sama dengan representasi biner ke-6, 4, 2, dan bit ke-0 dari port A bernilai satu
tiga angka NIM terakhir teman sekelompok, sementara bit lainnya bernilai nol.
maka kondisi les seperti tugas 1.B.A
3. Jika input tidak sama dengan kedua Selanjutnya, setelah terhubung dengan board
representasi di atas, maka kondisi les seperti ATMega 8535 maka akan dihasilkan konfigurasi
tugas 1.A.2 output pada LED sebagai berikut.
Catat hasil keluaran LED pada BCL.
LED 7 6 5 4 3 2 1 0

4. HASIL DAN ANALISIS Kotak hitam menunjukkan LED mati dan kotak
merah menunjukkan LED nyala.
4.1 TUGAS 1.A PORT A SEBGAI OUTPUT
Hasil konfigurasi LED sudah sesuai dengan
Tugas 1.A.1 perintah pada progra m di mana LED yang hidup
Tugas 1.A.1 akan menggunakan Port A sebagai hanya LED nomor ke 6, 4, 2, dan nol.
output dari progra m yang sudah dibuat pada
WinAVR. Flow chart dari program dapat dilihat
sebagai berikut. Tugas 1.A.2
Flow chart program dapat dilihat sebagai berikut.
START START

DDRA = 0xFF DDRA = 0xFF

PORTA = (1<<PA6)|(1<<PA4)|(1<<PA2)|(1<<PA0) PORTA= (1<<PA2)|(1<<PA1)

END END

Port A akan di set sebagai input. Oleh karena itu Sama seperti sebelumnya, untuk men geset port A
kita harus men gatur register DDR pada port sebagai output maka register DDR port A akan
tersebut. Nilai DDRA harus diisi nilai untuk diset bernilai satu atau 0xFF. Selanjutnya port A
seluruh bitnya, artinya diisi 0xFF. Pengisian nilai akan diset bernilai 0b00000110. Representasi biner
ini pada register DDR sebuah port maka akan ini menunjukkan angka 6 di mana merupakan
menjadikan port tersebut sebagai input. Namun, nomor kelompok praktikan. Selanjutnya akan
jika nilai register DDR diset nol atau 0x00 maka ditampilkan output sebagai berikut.
akan menjadikan port tersebut sebagai input. LED 7 6 5 4 3 2 1 0
Nilai representasi bin er dari port A akan
merepresentasikan keluaran pada LED. Oleh Keluaran LED sudah menunjukkan hal yang
karena itu kita harus terlebih dahulu mengeset sesuai dengan apa yang diperintah pada progra m
nilai masing-masing bit pada port A. Pengesetan di mana nilai bit yang ON hanya bit ke-2 dan bit
bit bisa dilakukan dengan operasi bitwise OR. Jika pertama LED.
port A diset sebagai berikut
4.2 TUGAS 1.B FASILITAS DELAY PADA
PORTA = (1<<PA6)|(1<<PA4)|(1<<PA2)|(1<<PA0)
AVR GCC
Ini menunjukkan bahwa untuk bit ke -6, 4, 2, dan Pada percobaan ini, seluruh kode progra m
bit ke-0 dari port A bernilai satu semen tara bit
memanfaatkan fasilitas delay yang ada pada
lainnya bernilai nol. Pengesetan bit juga dapat ATMega8535. Pada dasarnya, di dalam
dilakukan dengan cara memberi nilai untuk
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 3
ATMega8535 sudah terdapat clock internal progra m akan mengalami delay selama 5s
dengan frekuensi clock 1 MHz. Namun, pada (5000ms) di mana lampu LED a kan mati pada saat
sistem minimum yang digunakan, clock yang ini. Setelah delay, port A akan diset bernilai
ingin digunakan adalah clock eksternal dengan 0b11001100. Ini akan membuat lampu LED ke
frekuensi clock 7572800 Hz. Untuk mengubah 2,3,6,7 menyala. Setelah itu progra m akan delta
clock yang digunakan menjadi clock eksternal, kembali selama 5 detik dan melajutkan langkah
maka perlu dilakukan pengubahan pada nilai-nlai looping seperti sebelumnya. Jadi, progra m ini
bit dari fuse ATMega8535. akan membuat lampu LED akan menyala
bergantian dari kon figurasi satu (0b00110011) ke
Secara default, ketika clock yang digunakan
konfigurasi dua (0b11001100) dan seterusnya
adalah clock internal, maka nilai high fuse dan low
sampai tak hingga looping.
fuse adalah 0b11011001 (0xD9) dan 0b11100001
Selanjutnya, output yang ditampilkan LED akan
(0xE1). Untuk mengubah clock menjadi clock
nampak seperti berikut.
eksternal, maka nilai high fuse dan low fuse perlu
LED 7 6 5 4 3 2 1 0
diubah menjadi 0xD9 dan 0xEF. Pengubahan ini
dilakukan men ggunakan avrdude melalui LED 7 6 5 4 3 2 1 0
command prompt. Setelah nilai fuse diatur
demikian, maka clock yang digunakan selama LED 7 6 5 4 3 2 1 0
proses penggunakan sistem minimum adalah LED 7 6 5 4 3 2 1 0
clock eksternal. Dengan demikian, semua kode
progra m pada tugas-tugas di bawah ini akan
Keluaran ini akan berlangsung terus menerus.
selalu mendefinisikan clock sebesar 7372800 Hz, Output yang dikeluarkan sudah sesuai dengan
bukan lagi 1 MHz. apa yang diminta pada program
Tugas 1.B.1 Tugas 1.B.2
Flowchart program dapat dilihat sebagai berikut. Flowchart program dapat dilihat sebagai berikut.

START
START

DDRA = 0xFF
DDRA = 0xFF

1
1

PORTA = 0b00100100
PORTA = 0b00110011
END
END
Delay_ms(5000)
Delay_ms(5000)

PORTA = 0b00100111
PORTA = 0b11001100

Delay_ms(5000)
Delay_ms(5000)

Sama seperti sebelumnya, register DDR akan diset Flowchart progra m tugas 1.B.2 menyerupai
bernilai 0xFF sehingga port A bisa digunakan
dengan tugas 1.B.1 hanya saja port A akan diset
sebagai output. Kemudian program akan masuk bergantian bernilai 0b00100100 dan 0b00100111.
ke looping dengan while-loop. Loop akan Kedua representasi biner ini bernilai 036 10 dan
berlangsung selama tak hingga kali karena 03910 yang mana merupakan tiga angka terakhir
variabel syarat looping selalu bernilai satu. Loop dari NIM praktikan.
akan berguna un tuk mengulangi tiap siklus nyala
matinya LED. Selanjutnya, pada awal loop, port A Selanjutnya, output yang dita mpilkan LED akan
akan bernilai 0b00110011. Ini akan membuat nampak seperti berikut.
lampu LED ke 0,1,4,5 menyala. Setelah itu
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 4
LED 7 6 5 4 3 2 1 0 Jika operasi ini men galami overflow, ma ka nilai
bit port A kembali ke nilai awal bernilai
LED 7 6 5 4 3 2 1 0 0b11111110. Proses ini akan dilakukan selama
LED 7 6 5 4 3 2 1 0 looping yang tak hingga karena syarat loop selalu
bernilai satu. Jadi, progra m ini bertujuan untuk
LED 7 6 5 4 3 2 1 0 menunjukkan nyala-mati LED yang memutar dari
kiri ke kanan.
Keluaran ini akan berlangsung terus menerus.
Selanjutnya, output yang ditampilkan LED akan
Output yang dikeluarkan sudah sesuai dengan
nampak seperti berikut.
apa yang diminta pada program
LED 7 6 5 4 3 2 1 0
Tugas 1.B.3
LED 7 6 5 4 3 2 1 0
Flowchart program dapat dilihat sebagai berikut.
LED 7 6 5 4 3 2 1 0
START LED 7 6 5 4 3 2 1 0

LED 7 6 5 4 3 2 1 0
DDRA = 0xFF
LED 7 6 5 4 3 2 1 0

LED 7 6 5 4 3 2 1 0
i = 0xFE LED 7 6 5 4 3 2 1 0

LED 7 6 5 4 3 2 1 0

1 LED 7 6 5 4 3 2 1 0

LED 7 6 5 4 3 2 1 0
PORTA = i

END Keluaran ini akan berlangsung terus menerus.


Delay_ms(5000) Output yang dikeluarkan sudah sesuai dengan
apa yang diminta pada program.
Tugas 1.B.4
i = (i<<1)|(i>>7)
START

(Garis merah menyimbolkan alur FALSE pada


DDRA = 0xFF
proses decission sementara garis oranye
menyimbolkan alur TRUE pada proses decission)
i = 0xFE
Perta ma-tama jelas bahwa kita harus mengeset END
nilai register DDR bernilai satu agar port A dapat
digunakan sebagai output. Selanjutnya kita 1
mengeset nilai i bernilai 0xFE atau 0b11111110.
Variabel i akan berguna sebagai variabel di dalam
looping yang mengubah-ubah nilai biner dari port i != 0b01111111
A. Pertama diset bernilai 0b11111110 agar pada
mula-mula LED yang ma ti hanya LED pada bit ke
nol dan yang lainnya hidup. Kemudian masuk ke PORTA =
dalam looping dan terlihat bahwa nilai biner port i
i != 0b01111111
A akan sama dengan variabel i. Selanjutnya ,
Delay_ms(5000)
progra m a kan mengalami delay selama 5 detik.
Kemudian variabel i akan diset dengan operasi. PORTA =
i = (i<<1)|(i>>7) i
i = (i<<1)|(i>>7)
Delay_ms(5000)
operasi ini bertujuan untuk menggeser bit bernilai
nol dari satu posisi ke kekiri posisi bit ters ebut.
Misal tadinya i bernilai 0b11111110 maka setelah i = (i>>1)|(i<<7)
dilakukan operasi ini nilai bit bernilai 0b11111101.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 5


Progra m ini lebih sulit daripada tugas 1.B.3 karena
4.3 TUGAS 1.C PORT A SEBAGAI OUTPUT
nyala mata lampu tidak memutar satu arah saja
PORT D SEBAGAI INPUT
namun bolak-balik.Jadi pertama la mpu yang mati
ialah lampu ke-0 dan menerus kekiri hingga ke-7 Tugas 1.C.1
setelah itu tidak kembali ke-0 namun lampu mati
Flowchart program bisa dilihat sebagai berikut.
ialah lampu ke-6 terus ke kanan hingga kembali
ke lampu ke-0. Oleh karena itu pada loop besar
START
progra m terdapat dua sub loop di mana satu
untuk mengatur nyala-mati ke kiri dan nyala-mati
ke kanan. Untuk yang kekiri, loop ini akan DDRA = 0xFF
berlangsung hingga kondisi lampu ke 7 saja mati
atau di dalam represen tasi biner ialah 0b011111111
maka dari itu jika syarat ini tidak terpenuhi maka DDRD = 0x00
progra m masuk ke loop kedua. Untuk loop
pertama pengesetan nilai i sama seperti tugas 1.B.3
yakni i = (i<<1)|(i>>7) yang berguna agar SFIOR = 0 << PUD
mengatur nyala mati lampu ke arah kiri.
Sedangkan untuk loop kedua, looping hanya PORTA = 0xFF
dilakukan jika kondisi lampu tidak bernilai
0b11111110 dengan kata lain jika bernilai tersebut
maka program akan keluar dari loop.
1
Selanjutnya, output yang ditampilkan LED akan
nampak seperti berikut.
LED 7 6 5 4 3 2 1 0 i = PIND

LED 7 6 5 4 3 2 1 0 END

LED 7 6 5 4 3 2 1 0 PORT A = i

LED 7 6 5 4 3 2 1 0 PORT A akan digunakan sebagai output oleh


LED 7 6 5 4 3 2 1 0 karena itu register DDRA akan di set 0xFF.
Sementara, port D akan digunakan sebagai input
LED 7 6 5 4 3 2 1 0 sehingga register DDRD akan di set 0x00. Langkah
berikutnya adalah men gaktifkan resistor pull up.
LED 7 6 5 4 3 2 1 0
Resistor pull up berfun gsi untuk memaksa nilai
LED 7 6 5 4 3 2 1 0 pin selalu 1 atau HIGH ketika tidak ada input
yang masuk. Hal ini berkaitan dengan kondisi
melayang yang telah dijelaskan pada jawaban
pertanyaan sebelumnya. Cara mengaktifkan
LED 7 6 5 4 3 2 1 0 resistor pull up adalah dengan memberikan
LED 7 6 5 4 3 2 1 0 instruksi SFIOR = 0<<PUD. PUD adalah pull up
disable. Ketika nilai PUD dijadikan nol, maka
LED 7 6 5 4 3 2 1 0 resistor pull up menjadi aktif. Pin input sangat
tidak dianjurkan untuk dihubungkan secara
LED 7 6 5 4 3 2 1 0
langsung ke sumber tegangan atau ke ground
LED 7 6 5 4 3 2 1 0 untuk menghindari adanya arus berlebihan
mengalir melalui pin ters ebut. Bila ada arus yang
LED 7 6 5 4 3 2 1 0 melebihi kapasitas pin mengalir, maka pin akan
LED 7 6 5 4 3 2 1 0 rusak.
Pin input h endaknya selalu diberi nilai awal
(initial value) meskipun pada akhirnya belum tentu
setiap bit pada port input digunakan. Ketika
Keluaran ini akan berlangsung terus menerus.
seluruh bit diberi nilai awal, maka ia memiliki
Output yang dikeluarkan sudah sesuai dengan
nilai yang pasti. Bila ada beberapa bit yang tidak
apa yang diminta pada program.
diberi nilai awal, maka pada saat program berjalan
nilainya menjadi melayang (floating). Nilai

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 6


melayang perlu dihindari un tuk menghindari Pada tugas 1.C.2 ada tiga konfigurasi input yang
adanya konsumsi daya yang berlebihan dalam akan memiliki output yang berbeda. Hal ini dapat
setiap keadaan. dinyatakan sebagai berikut.
Berikut ini hasil pengamatan yang dilakukan . Jika input sa ma dengan representasi biner angka
untuk tiap konfigurasi output yang diberikan 36 (0b00100100) , maka kondisi LED sama seperti
terhadap konfigurasi input yang diberikan. tugas 1.B.2
2. Jika input sama dengan representasi bin er 39
Kondisi 1
(0b00100111), maka kondisi LED seperti tugas
LED 7 6 5 4 3 2 1 0 1.B.A
3. Jika input tidak sama dengan kedua
Switch 7 6 5 4 3 2 1 0 representasi di atas, maka kondisi LED seperti
tugas 1.A.2
Untuk switch, biru menyimbolkan switch yang
aktif s ementara putih menyimbolkan switch yang Berikut ini output yang dihasilkan untuk tiap
mati. konfigurasi input.

Kondisi 2 Kondisi 1

LED 7 6 5 4 3 2 1 0 Switch 7 6 5 4 3 2 1 0

Switch 7 6 5 4 3 2 1 0
LED 7 6 5 4 3 2 1 0
Output LED memiliki konfigurasi yang sudah LED 7 6 5 4 3 2 1 0
sesuai dengan switch yang diberikan sehingga
program sudah berjalan dengan benar. LED 7 6 5 4 3 2 1 0
Tugas 1.C.2 LED 7 6 5 4 3 2 1 0
Flowchart program bisa dilihat sebagai berikut.
Keluaran ini akan berlangsung terus menerus.
START Output yang dikeluarkan sudah sesuai dengan
apa yang diminta pada program

DDRA = 0xFF Kondisi 2


Switch 7 6 5 4 3 2 1 0
DDRD = 0x00

LED 7 6 5 4 3 2 1 0
SFIOR = 0 << PUD
LED 7 6 5 4 3 2 1 0

PORTA = 0xFF LED 7 6 5 4 3 2 1 0

LED 7 6 5 4 3 2 1 0

END 1 LED 7 6 5 4 3 2 1 0

LED 7 6 5 4 3 2 1 0

i = PIND LED 7 6 5 4 3 2 1 0

LED 7 6 5 4 3 2 1 0

i= 0b00100100

LED 7 6 5 4 3 2 1 0
Tugas 1.B.2 i= 0b00100100
LED 7 6 5 4 3 2 1 0

LED 7 6 5 4 3 2 1 0

Tugas 1.B.2 LED 7 6 5 4 3 2 1 0


Tugas 1.B.2
LED 7 6 5 4 3 2 1 0

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 7


LED 7 6 5 4 3 2 1 0 Untuk membuat port berfungsi sebagai input
dengan cara mengeset DDRx nya dengan 0x00
LED 7 6 5 4 3 2 1 0
(semua pin jadi pin input). Switch digunakan
sebagai input dari user di Port D.
Untuk membuat port berfungsi sebagai output
Kondisi 3 dengan cara mengeset DDRx nya den gan 0xFF
Switch 7 6 5 4 3 2 1 0 (semua pin jadi pin output). LED digunakan
sebagai output di Port A.
Pengesetan fuse dilakukan dengan AVRdude
dengan mengeset frekuensi clock sesuai
LED 7 6 5 4 3 2 1 0
dengan clock eksternal
Keluaran LED sudah menunjukkan hal yang
sesuai dengan apa yang diperintah pada progra m
di mana nilai bit yang ON hanya bit ke-2 dan bit DAFTAR PUSTAKA
pertama LED.
[1] Jackstar H. S., Panduan Penulisan Laporan, Jacks
5. KESIMPULAN Publishing, Bandung, 2008.
ATMega 8535 memiliki 4 port (A,B,C,D) yang [2] Waskita Adijarto dkk. , Petujuk Praktikum
memiliki 8 pin tiap portnya. Keempat port Sistem Mikroprosessor, ITB, Bandung, 2016.
pada ATMega 8535 bisa digunakan sebagai
input atau output.
AVR GCC memiliki syntax delay untuk
membantu pemrogra man yang membutuhkan
fungsi waktu.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 8


Lampiran

Kode tugas I.A.1:


#include <avr/io.h>

int main (void)


{
DDRA = 0XFF ; //inisialisasi PORTA sebagai OUTPUT
PORTA = (1 << PA6) | (1 << PA4) | (1 << PA2) | (1 << PA0); // nilai
OUTPUT
return 0;
}

Kode tugas I.A.2:


#include <avr/io.h>

int main (void)


{
DDRA = 0XFF ; //inisialisasi PORTA sebagai OUTPUT
PORTA = 0b00001100; // nilai OUTPUT
return 0;
}

Kode tugas I.B.1:


#include <avr/io.h>
#define F_CPU 7372800UL
#include <util/delay.h>

int main (void)


{
DDRA = 0XFF;
PORTA = 0XFF;
while (1)
{
PORTA = 0b00110011;
_delay_ms(500);
PORTA = 0b11001100;
_delay_ms(500);
}
return 0;
}

Kode tugas I.B.2:


#include <avr/io.h>
#define F_CPU 7372800UL
#include <util/delay.h>

int main (void)


{
DDRA = 0XFF;
PORTA = 0XFF;
while (1)
{
PORTA = 0b00100100; //representasi biner menunjukkan angka 036
_delay_ms(500);
PORTA = 0b00100111; //representasi biner menunjukkan angka 039
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 9
_delay_ms(500);
}
return 0;
}

Kode tugas I.B.3:


#include <avr/io.h>
#define F_CPU 7372800UL
#include <util/delay.h>

int main (void)


{
unsigned char i=0xFE;
DDRA = 0xFF;
PORTA = i;
while (1)
{
PORTA = i;
_delay_ms(120);
i = (i<<1) | (i>>7);
}
return 0;
}

Kode tugas I.B.4:


#include <avr/io.h>
#define F_CPU 7372800UL
#include <util/delay.h>

int main (void)


{
unsigned char i=0xFE; //inisialisasi nyala LED
DDRA = 0xFF; //PORT A output
PORTA = i; //Inisialisasi nilai PORT A
while (1)
{
while (i != 0b01111111) //gerakan ke kiri
{
PORTA = i;
_delay_ms(120);
i = (i<<1) | (i>>7);
}
while (i != 0b11111110) //gerakan ke kanan
{
PORTA = i;
_delay_ms(120);
i = (i>>1) | (i<<7);
}
return 0;
}

Kode tugas I.C.1:


#include <avr/io.h>

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 1


0
int main (void)
{
unsigned char i;
DDRA = 0xFF;//inisialisasi PORTA sebagai output
DDRD = 0x00;//inisialisasi PORTD sebagai input
SFIOR = 0 << PUD; // aktivasi resistor pull-up internal
PORTA = 0xFF;
while (1)
{
i=PIND;
PORTA = i;
}
return 0;
}

Kode tugas I.C.2:


#include <avr/io.h>
#define F_CPU 7372800UL
#include <util/delay.h>

int main (void)


{
unsigned char masukan; //variabel penampung input dari switch
unsigned char i = 0XFE;//inisialisasi i
DDRA = 0xFF;
DDRD = 0x00;
SFIOR = 0 << PUD;
PORTA = 0xFF;
while (1)
{
masukan = PIND;
if (masukan == 0b00100100) //saat input nim 036
{
PORTA = 0b00100100;
_delay_ms(500);
PORTA = 0b00100111;
_delay_ms(500);
}
else if (masukan == 0b00100111) //saat input nim 039
{
while (i != 0b01111111 && masukan == 0b01110111)
{
PORTA = i;
_delay_ms(120);
i = (i<<1) | (i>>7);
}
while (i != 0b11111110 && masukan == 0b01110111)
{
PORTA = i;
_delay_ms(120);
i = (i>>1) | (i<<7);
}
else //saat input lainnya
{
PORTA = 0b00001100;
}
}
return 0;
}

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 11


Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB 12