Anda di halaman 1dari 12

MODUL I I/O DASAR

Irham Mulkan Rodiana (132 13 039)


Asisten: Tengku Ahmad M.P. (132 12 098)
Tanggal Percobaan: 29/02/2016
EL3214-Praktikum Sistem Mikroprosesor

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB
Abstrak
ATMega8535 adalah salah satu mikrokontroler yang sering
digunakan untuk beberapa fungsi tertentu dan sering juga
digunakan untuk pengenalan awal mikrokontroler. Pada
ATMega8535 terdapat pin input output yang digunakan
untuk jalan masuk dan keluar dari mikrokontroler ke
dunia luar. Pada praktikum modul ini akan dicoba
beberapa percobaan mengenai fungsi input output dasar
dengan menggunakan LED sebagai indikatornya.
Konfigurasi yang dibuat dengan LED ini adalah hasil dari
source code yang dimasukan pada winAVR dengan Bahasa
C.

2.
2.1

STUDI PUSTAKA
SKEMATIK I/O

Kata kunci: ATMega8535, LED, winAVR.

1.

Gambar 2-1 Skematik I/O

PENDAHULUAN

ATMega8535 adalah mikrokontroler CMOS 8 bit


daya rendah berbasis arsitektur RISC. Instruksi
dikerjakan pada satu siklus clock, ATMega8535
mempunyai throughput mendekati 1 MIPS per
MHz, hal ini membuat ATMega8535 dapat bekerja
dengan kecepatan tinggi walaupun dengan
penggunaan
daya
rendah.
Mikrokontroler
ATmega8535 memiliki beberapa fitur atau
spesifikasi yang menjadikannya sebuah solusi
pengendali yang efektif untuk berbagai keperluan.
Fitur-fitur tersebut antara lain saluran I/O
sebanyak 32 buah, yang terdiri atas Port A, B, C
dan
Pada modul I ini, ada beberapa tujuan yang harus
tercapai, diantaranya :

Praktikan memahami datasheet ATMega


8535
Praktikan mampu membuat aplikasi input
dan output pada AVR dengan
menggunakan bahasa pemprograman C
pada WinAVR
Praktikan memahami pengesetan fuse
yang berkaitan dengan penggunakan
besar dan jenis kristal

Pada sistem minimum dengan chip AVR, terdapat


beberapa penamaan yang digunakan sebagai
acuan dalam penggunaan suatu pin atau port.
pada chip AVR, biasanya disebut dengan PORTxn,
dimana x adalah nama port yang digunakan dan n
adalah nomor bit port yang digunakan. Sebagai
contoh, PORTA1 artinya pin 1 dari PORT A yang
digunakan. pada I/O ini terdapat tiga deklarasi
yang perlu diperhatikan yaitu Data Register
PORTx, Data Direction Register DDRx, dan Port
Input Pins PINx. Port Input Pins ini digunakan
untuk membaca data saja, sedangkan data register
dan data direction digunakan untuk menentukan
arah sinyal read/write. Selain itu terdapat PUD
dalam SFIOR dimana berfungsi sebagai kondisi
pull-up pada suatu port.

2.2

KONFIGURASI PIN PORT


Tabel 2-1 Konfigurasi Pin Port

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

Pada tabel diatas ini, terlihat beberapa konfigurasi


dan keluaran sistem yang digunakan. jik DDxn
bernilai 0 maka akan bertindak sebagai input,
ketika bernilai 1 akan bertindak sebagai output.

2.3

FUSE BIT ATMEGA8535

Gambar 2-1 Diagram Blok sistem dengan umpan balik

Fuse merupakan pengaturan dasar dari bit pada


ATMega yang digunakan. sebelum melakukan
pemrograman, chip harus diset agar dapat bekerja
sesuai dengan keinginan. Seperti contoh, ketika
diinginkan sismin dengan osilator eksternal maka
harus dilakukan pengesetan pada fuse. Untuk
Atmega 8535 yang digunakan, terdapat tabel yang
menyatakan bit yang digunakan pada saat fuse
dan beberapa fungsinya seperti terlihat pada tabel
dibawah ini :
Tabel 2-2 Fuse High Byte

Blok A merupakan fungsi transfer maju dan blok


merupakan fungsi transfer umpan baliknya.
Pada sistem dengan umpan balik ini dapat
diturunkan penguatan tegangannya:

=
1 +

Secara umum persamaan di atas menunjukkan


adanya tiga keadaan yang ditentukan oleh
denominatornya. Salah satu keadaan tersebut
adalah saat denominator menjadi nol. Saat itu nilai
Af menjadi tak hingga. Secara matematis pada
keadaan ini bila diberikan sinyal input nol atau
vi=0 ini, akan menjadikan tegangan vo dapat
bernilai berapa saja. Keadaan seperti inilah yang
menjadi prinsip pembangkitan sinyal atau osilator
sinusoidal dengan umpan balik yang disebut
sebagai Kriteria Barkhausen. Dalam rangkaian
kriteria tersebut dilihat dari total penguatan loop
terbuka L sbb.:
() = () () = 1

Tabel 2-3 Fuse Low Byte

2.4

Pada kondisi awal, nilai dari fuse ini akan


mengikuti default value yang diberikan. Pada
pengaturan ini juga diperlukan kehati-hatian agar
chip yang digunakan tidak terlock ketika
mengganti internal clock. Jika hal ini terjadi, maka
chip harus high voltage program untuk mereset ke
kondisi awal lagi.Skematik I/O
Sistem dengan umpan balik secara umum dapat
digambarkan dengan diagram blok pada Gambar
2-1 berikut.

PULL UP RESISTOR

In electronic logic circuits, a pull-up resistor is a


resistor connected between a signal conductor and
a positive power supply voltage to ensure that the
signal will be a valid logic level if external devices
are disconnected or high-impedance is introduced.
They may also be used at the interface between
two different types of logic devices, possibly
operating at different logic levels and power
supply voltages.
A pull-up resistor pulls the voltage of the signal it
is connected to towards its voltage source level.
When the other components associated with the
signal are inactive, the voltage supplied by the
pull up prevails and brings the signal up to a
logical high level. When another component on
the line goes active, it overrides the pull-up
resistor. The pull-up resistor ensures that the wire
is at a defined logic level even if no active devices
are connected to it.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

A pull-down resistor works in the same way but is


connected to ground. It holds the logic signal at a
low logic level when no other active device is
connected. [3]

1
2
3

3.

METODOLOGI
4

Alat dan komponen yang digunakan pada


percobaan Modul I ini adalah :

a) 1 unit power supply


b) 1 unit PC
c)

Atur tegangan 9 volt pada power supply


Hubungkan PORT A dengan PORT OUTPUT
Gunakan WinAVR untuk mengupload file ke
mikroprosesor
Hubungkan sismin ke PC dengan usb asb
Modifikasi source code pada WinAVR, tampilan
LED bilangan biner kelompok
Amati output LED

1 unit sismin ATMega 8535

d) 1 unit DT-51 Trainer Board

e) Jumper DB9
f)

Tugas I.B.1

Downloader ke PC
1

g) Jumper antara sismin dan DT-51


Proses percobaan yang telah dilakukan adalah
sebagai berikut.

2
3

Tugas I.A.1
1
2
3
4
5
6

Atur tegangan 9 volt pada power supply

Hubungkan PORT A dengan PORT OUTPUT

Hubungkan PORT A dengan PORT OUTPUT


Gunakan WinAVR untuk mengupload file ke
mikroprosesor
Hubungkan sismin ke PC dengan usb asb
Ketikkan source code pada WinAVR
Amati output LED, seharusnya memiliki delay 0,5 s

Gunakan WinAVR untuk mengupload file ke


mikroprosesor
Hubungkan sismin ke PC dengan usb asb

Ketikan source code pada WinAVR

Tugas I.B.2
1

Amati output LED

2
3

Atur tegangan 9 volt pada power supply

Tugas I.A.2
4
5
6

Atur tegangan 9 volt pada power supply


Hubungkan PORT A dengan PORT OUTPUT
Gunakan WinAVR untuk mengupload file ke
mikroprosesor
Hubungkan sismin ke PC dengan usb asb
Modifikasi source code pada WinAVR, keluaran
LED dengan biner NIM anggota kelompok
Amati output LED, seharusnya memiliki delay 0,5 s

Tugas I.B.3

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

1
2
3

Atur tegangan 9 volt pada power supply

Hubungkan PORT A dengan PORT OUTPUT

Gunakan WinAVR untuk mengupload file ke


mikroprosesor

3
3

4
5
6

2
3
4
5
6

Hubungkan PORT D dengan PORT INPUT

Gunakan WinAVR untuk mengupload file ke mikroprosesor

Hubungkan sismin ke PC dengan usb asb


4

Ketikkan source code pada WinAVR


5

Amati output LED, seharusnya menjadi running


LED

Hubungkan sismin ke PC dengan usb asb

Modifikasi source code pada WinAVR

Apabila input samadengan representasi biner tiga angka NIM terakhir, maka
kondisi led seperti pada Tugas I.B.2

Apabila input samadengan representasi biner tiga angka NIM terakhir teman
sekelompok, maka kondisi led seperti pada Tugas I.B.4

Apabila input tidak-samadengan kedua representasi di atas, maka kondisi led


seperti pada Tugas I.A.2

Atur tegangan 9 volt pada power supply


Hubungkan PORT A dengan PORT OUTPUT
Gunakan WinAVR untuk mengupload file ke
mikroprosesor

2
3
3
4
5
6

4.

HASIL DAN ANALISIS

Tugas I.A.1

Hubungkan sismin ke PC dengan usb asb


Modifikasi source code pada WinAVR, buatlah LED
menjadi berjalan bolak balik

Gambar 4-1 kondisi LED tugas I.A.1

Amati output LED

Tugas I.C.1
1

Hubungkan PORT A dengan PORT OUTPUT

Tugas I.B.4
1

Atur tegangan 9 volt pada power supply

Atur tegangan 9 volt pada power supply

Pada source code, LED dikonfigurasi agar


menyala pada bit 0, bit 2, bit 4, bit 6. Sehingga
terbentuklah output LED seperti ilustrasi pada
gambar 4-1.
Source code pada tugas ini dapat dituliskan
menjadi flowchart seperti pada gambar 4-2
dibawah ini.

Hubungkan PORT A dengan PORT OUTPUT


Hubungkan PORT D dengan PORT INPUT
Gunakan WinAVR untuk mengupload file ke
mikroprosesor
Hubungkan sismin ke PC dengan usb asb
Ketikkan source code pada WinAVR

Gambar 4-2 Flowchart tugas I.A.1

Gerakkan switch pada board, amati output LED

Tugas I.C.2

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

Setelah dihitung menggunakan stopwatch, LED


benar berganti setiap kurang lebih 500ms atau
setengah detik.

TUGAS 1.A.2

Gambar 4-3 kondisi LED tugas I.A.2

Pada source code yang dimodifikasi, LED


dikonfigurasi agar menyala pada representasi
biner nomor kelompok. Kelompok kami adalah
kelompok 4 sehingga representasi pada bilangan
binernya
adalah
0b00000100.
Sehingga
terbentuklah output LED seperti ilustrasi pada
gambar 4-3.
Source code pada tugas ini dapat dituliskan
menjadi flowchart seperti pada gambar 4-4
dibawah ini.

Gambar 4-7 Flowchart tugas I.B.1

Tugas I.B.2

Gambar 4-4 Flowchart tugas I.A.2

Tugas I.B.1

Gambar 4-8 kondisi pertama LED tugas I.B.2

Gambar 4-5 kondisi pertama LED tugas I.B.1


Gambar 4-9 kondisi kedua LED tugas I.B.2

Pada tugas ini dilakukan penyalaan LED


berdasarkan tiga digit terakhir NIM praktikan.
037 = 0b00100101

Gambar 4-6 kondisi kedua LED tugas I.B.1

039 = 0b00100111

Pada tugas ini telah dilakukan pengenalan


mengenai delay. Setelah memasukan source code
yang ada di modul dan di upload maka pertama
akan keluar konfigurasi LED seperti gambar 4-5
dan setelah 500ms kemudian lalu berganti menjadi
konfigurasi LED seperti gambar 4-6.

Kedua konfigurasi itu di delay sama dengan tugas


sebelumnya yaitu 500ms. Hasil output LED
terlihat seperti ilustrasi diatas pada gambar 4-8
dan 4-9.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

Gambar 4-12 Flowchart tugas I.B.3

Tugas I.B.4

Gambar 4-13 kondisi running LED bolak balik tugas I.B.4

Berbeda dari percobaan sebelumnya, pada tugas


ini running LED dibuat bolak balik, artinya dari
bit 7 yang mati bukan dilanjut ke bit 0 yang mati
namun lanjut ke bit 6 yang mati dan seterusnya
sehingga LED terlihat berjalan bulak balik. Delay
antar transisi masih sama yaitu 120ms.

Gambar 4-10 Flowchart tugas I.B.2

Tugas I.B.3

Gambar 4-11 kondisi running LED tugas I.B.3

Pada tugas ini hasil source code menampilkan


running LED dengan LED mati yang terlihat
berjalan. LED yang mati ini akan berpindah dari
bit 0 ke bit 1 dan seterusnya hingga pada saat di
bit 7 LED mati ini akan pindah ke bit 0 kembali
dan looping terus. Perpindahan tampilan LED ini
terjadi setiap 120ms.

Gambar 4-14 Flowchart tugas I.B.4

Tugas I.C.1

Gambar 4-15 kondisi LED ketika switch aktif

Tugas ini memanfaatkan input dari PORT D yang


berupa switch untuk menyalakan LED. Ketika
switch pada posisi ke atas artinya aktif. Pada
gambar 4-15 dapat dilihat ilustrasinya ketika
tombol ditekan maka LED akan ikut menyala.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

Dengan angka 1 berarti bagian pin tersebut


bernilai HIGH. Jika ingin pengesetan satu pin saja
dalam port A dapat digunakan kode seperti
berikut :
PORTA.4 = 1;
Untuk menyalakan bit ke 4 saja dalam port A.
Hal diatas berarti kita mengeset nilai pada register
port x data.
Gambar 4-16 Flowchart tugas I.C.1

Bagaimana rekomendasi untuk inisialisasi pada


pin input?

Tugas I.C.2

Tugas ini hanyalah tugas yang menyatukan


hampir semua fungsi yang telah kita buat.
Kondisi yang dibuat adalah :
Input = 039 = 0b00100111 Tugas I.B.2
Input = 036 = 0b00100101 Tugas I.B.4

Untuk inisialisasi sebagai pin input maka PORT x


harus diset sebagai input dengan kode :
DDRx = 0x00;
Dengan x adalah nama port yang ingin kita
jadikan input.
Selain itu agar kita mengaktifkan pull-up internal
digunakan kode :
SFIOR = 0<<PUD;

Input lain Tugas I.A.2

Pull-up internal lebih dipilih jika menggunakan


input berupa switch atau pushbutton karena
dengan pull-up internal memiliki kelebihan dari
pull-up eksternal. Kelebihannya adalah pull-up
internal tidak memerlukan rangkaian tambahan
sehingga produksi menjadi lebih murah.
Jelaskan bagaimana pengesetan pin input! Apa
pengaruh resistor pull up?
Sebagaimana yang dijelaskan sebelumnya,
pengesetan input dapat dilakukan dengan
mengatur register data direction (DDR).
Pull-up resistor membuat input memiliki nilai
HIGH ketika tidak dihubungkan ke ground. Hal
ini berguna karena kita mencegah nilai floating
pada input atau nilai yang tidak jelas logikanya.

Gambar 4-16 Flowchart tugas I.C.2

Tugas Analisis

Jelaskan mekanisme pengesetan pin output


sedemikian hingga mengeluarkan nyala lampu
sesuai dengan yang diinginkan. Lengkapi
dengan penjelasan register yg digunakan!

5.

Untuk inisialisasi pin untuk menjadi output


gunakanlah code inisialisasi seperti berikut :

ATMega 8535 memiliki port input output


yang digunakan untuk interaksi dengan dunia
luar.

Output dari sismin ATMega 8535 dapat kita


uji dengan LED supaya menjadi indicator
keluarnya nilai HIGH atau LOW.

Delay pada mikroprosesor sangat membantu


fungsi yang menggunakan timing pada
prosesnya. Delay yang keluar diatur dari
kecepatan clock mikroprosesor.

DDRx = 0xFF
Dengan x adalah port yang ingin kita pakai
sebagai output. DDR adalah data direction register
yang diisi untuk pengesetan input output.
Untuk penulisan nyala lampu yang kita inginkan
dapat digunakan contoh kode seperti berikut :
PORTA = 0b00110011;

KESIMPULAN

Kesimpulan yang didapat dari beberapa


percobaan pada praktikum modul I ini adalah :

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

Input pada sismin ATMega 8535 dapat berupa


representasi digital HIGH atau LOW, dapat
diatur oleh switch yang digunakan untuk
mengatur fungsi keluaran.
Pull-up resistor membuat input memiliki nilai
HIGH ketika tidak dihubungkan ke ground.
Hal ini berguna karena kita mencegah nilai
floating pada input atau nilai yang tidak jelas
logikanya.

DAFTAR PUSTAKA
[1]

Hutabarat, Mervin T., dkk, Petunjuk Praktikum


Sistem Mikroprosesor, Sekolah Teknik Elektro
dan Informatika Institut Teknologi Bandung,
Bandung, 2015.

[2]

Datasheet ATMega 8535

[3]

https://en.wikipedia.org/wiki/Pullup_resistor, diakses 1 Meret 2016

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

Lampiran
1. 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;
}

2. Tugas I.A.2
#include <avr/io.h>
int main(void)
{
DDRA = 0xFF;//inisialisasi PORTA sebagai OUTPUT
PORTA = (1<<PA2);//nilai OUTPUT
return 0;
}

3. Tugas I.B.1
#include <avr/io.h>
#define F_CPU 7372800UL // sesuai dengan nilai eksternal clock
#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;
}

4. Tugas I.B.2
#include <avr/io.h>
#define F_CPU 7372800UL // sesuai dengan nilai eksternal clock
#include <util/delay.h>
int main(void)
{
DDRA = 0xFF;
PORTA = 0xFF;
while(1)
{
PORTA = 0b00100101; //biner 37
_delay_ms(500);
PORTA = 0b00100111; //biner 39
_delay_ms(500);
}
return 0;
}

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

5. Tugas I.B.3
#include <avr/io.h>
#define F_CPU 7372800UL // sesuai dengan nilai eksternal clock
#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;
}

6. Tugas I.B.4
#include <avr/io.h>
#define F_CPU 7372800UL // Menggunakan 8MHzclock Kristal
#include <util/delay.h>
int main(void)
{
unsigned char i = 0xFE;
int state = 0;
DDRA = 0xFF;
PORTA = i;
while(1)
{
if (i == 0b01111111) //kondisi bit 7 mati
{
state = 1;
}
else if (i == 0b11111110) //kondisi bit 0 mati
{
state = 0;
}
if (state == 0)
{
PORTA = i;
_delay_ms(120);
i=(i<<1)|(i>>7); //LED running ke kiri
if (state == 1)
{
PORTA = i;
_delay_ms(120);
i=(i>>1)|(i<<7); //LED running ke kanan
}
}
return 0;
}

7. Tugas I.C.1
#include <avr/io.h>
int main(void)
{
unsigned char i;
DDRA = 0xFF; //inisialisasi PORTA sebagai OUTPUT
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

1
0

DDRD = 0x00; //inisialisasi PORTD sebagai INPUT


SFIOR = 0<<PUD; //aktivasi resistor pull-up internal
PORTA = 0xFF;
while(1)
{
i = PIND;
PORTA = i;
}
return 0;
}

8. Tugas I.C.2
#include <avr/io.h>
#define F_CPU 7372800UL //MenggunakanInternal Clock1MHz
#include <util/delay.h>
int main(void)
{
unsigned char i,j;
int state = 0;
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;
if (i == 39) //kondisi Tugas I.B.2
{
PORTA = 0b00100101; //biner 37
_delay_ms(500);
PORTA = 0b00100111; //biner 39
_delay_ms(500);
}
else if (i == 37) //kondisi Tugas I.B.4
{
if (j == 0b01111111)
{
state = 1;
}
else if (j == 0b11111110)
{
state = 0;
}
if (state == 0)
{
PORTA = j;
_delay_ms(120);
j=(j<<1)|(j>>7);
}
if (state == 1)
{
PORTA = j;
_delay_ms(120);
j=(j>>1)|(j<<7);
}
}
else //kondisi Tugas I.A.2
{
PORTA = 4;
}
Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

11

}
return 0;
}

Laporan Praktikum - Laboratorium Dasar Teknik Elektro STEI ITB

12