Anda di halaman 1dari 8

Percobaan I

I/O DASAR

Gomgom Silalahi (14S16048)


Tanggal Percobaan : 22/02/2019
[ELS3203] [Praktikum Sistem Mikroprosessor]
[Lab Dasar teknik Elektro] – Teknik Elektro
Institut Teknologi Del

II. LANDASAN TEORETIS


Abstrak— In this module 1 practicum, the practitioner will
do a practicum about basic I / O. The purpose of this
ATMEGA 8535
practicum is to understand the ATMega 8535 datasheet, the
practitioner is able to make input and output applications on
the AVR using C programming language on CV AVR.
CVAVR software

Keyword : CVAVR , ATmega 8535

I. PENDAHULUAN
ATMega adalah sebuah sistem minimum yang sering
digunakan sebagai prosesor sebuah sistem sederhana.
Dalam hal ini, sistem minimum ATMega, khususnya
ATMega 8535 digunakan sebagai kit praktikum, sehingga
diharapkan setelah melakukan percobaan, mahasiswa
dapat:
Gambar 1.1 ATMega 8535, [4]
a. memahami datasheet ATMega 8535
b. membuat aplikasi input dan output pada AVR
dengan bahasa pemrograman C pada WinAVR ATMega 8535 merupakan salah satu mikro kontroler 8 bit
buatan Atmel untuk keluarga AVR yang diproduksi secara
c. memahami pengesetan fuse yang berkaitan dengan massal pada tahun 2006. Karena merupakan keluarga AVR,
penggunaan besar dan jenis kristal maka ATMega 8535 juga menggunakan arsitektur RISC.
Secara singkat, ATMega 8535 memiliki beberapa kemampuan:
a. Sistem mikrokontroler 8 bit berbasis RISC dengan
kecepatan maksimal 16 MHz.
b. Memiliki memori flash 8 KB, SRAM sebesar 512 byte dan
EEPROM (Electrically Erasable Programmable Read
Only Memory) sebesar 512 byte.
c. Memiliki ADC (pengubah analog-ke-digital) internal
dengan ketelitian 10 bit sebanyak 8 saluran.
d. Memiliki PWM (Pulse Width Modulation) internal
sebanyak 4 saluran.
e. Portal komunikasi serial (USART) dengan kecepatan
maksimal 2.5 Mbps.
f. Enam pilihan mode sleep, untuk menghemat penggunaan III. HASIL DAN ANALISIS
daya listrik. 3.1 TUGAS 1.A PORT A SEBGAI OUTPUT
Mikrokontroler ATMega8535 memiliki 40 pin untuk model
PDIP, dan 44 pin untuk model TQFP dan PLCC. Nama-nama Tugas 1.A.1
pin pada mikrokontroler ini adalah:
Tugas 1.A.1 akan menggunakan Port A sebagai output dari
a. VCC untuk tegangan pencatu daya positif. progra m yang sudah dibuat pada CVAVR. Flow chart dari
program dapat dilihat sebagai berikut
b. GND untuk tegangan pencatu daya negatif.
c. PortA (PA0 – PA7) sebagai port Input/Output dan
memiliki kemampuan lain yaitu sebagai input untuk ADC. Pre-processing

d. PortB (PB0 – PB7) sebagai port Input/Output dan juga


memiliki kemampuan yang lain. Main Program

e. PortC (PC0 – PC7) sebagai port Input/Output untuk


ATMega8535.
Set DDRA to
f. PortD (PD0 – PD7) sebagai port Input/Output dan juga 0xFF (PORTA
memiliki kemampuan yang lain. as Output)

g. RESET untuk melakukan reset program dalam mikro


kontroler.
h. XTAL1 dan XTAL2 untuk input pembangkit sinyal clock. Set PORTA to
0b01010101
i. AVCC untuk pin masukan tegangan pencatu daya untuk (1A1) or
ADC. 0b00010111
(1A2)
j. AREF untuk pin tegangan referensi ADC.
Untuk melakukan pemrograman dalam mikro kontroler AVR,
Atmel telah menyediakan software khusus yang dapat diunduh
dari website resmi Atmel. Software tersebut adalah LED Formation
AVRStudio. Software ini menggunakan bahasa assembly as Gambar 1.2
sebagai bahasa perantaranya. Selain AVRStudio, ada beberapa (1A1) or
software pihak ketiga yang dapat digunakan untuk membuat Gambar 1.3
program pada AVR. Software dari pihak ketiga ini (1A2)
menggunakan bahasa pemrograman tingkat tinggi seperti
bahasa C, Java, atau Basic. Untuk melakukan pemindahan dari Flowchart percobaan 1A1 dan 1A2
komputer ke dalam chip, dapat digunakan beberapa cara seperti PAda percobaan 1A , port A akan di set sebagai input dan kita
menggunakan kabel JTAG atau menggunakan STNK buatan mengatur register DDR pada port tersebut. Nilai dari DDRA
Atmel. harus diisi nilai untuk seluruh bitnya yaitu 0xFF dan berarti
port tersebut bekerja sebagai input.
Nilai representasi biner dari port A akan merepresentasikan
keluaran pada LED. Oleh karena itu kita harus terlebih dahulu
mengeset nilai masing-masing bit pada port A. Pengesetan bit
bisa dilakukan dengan operasi bitwise OR. Jika port A diset
sebagai berikut
PORTA = 0b01010101
Ini menunjukkan bahwa untuk bit ke -6, 4, 2, dan bit ke-0 dari
port A bernilai satu sementara bit lainnya bernilai nol.
Pengesetan bit juga dapat dilakukan dengan cara memberi nilai
untuk semua bit port A secara langsung.
Selanjutnya, setelah terhubung dengan board ATMega 8535
maka akan dihasilkan konfigurasi output pada LED sebagai
berikut.
Keluaran LED sudah sesuai dengan apa yang diinput pada
program dimana nilai BIT yang ON hanya pada bit ke-1 dan ke-
3.
4.2 TUGAS 1.B FASILITAS DELAY PADA
AVR GCC
Pada percobaan ini, seluruh kode progra m memanfaatkan
fasilitas delay yang ada pada ATMega8535. Pada dasarnya, di
dalam ATMega8535 sudah terdapat clock internal dengan
frekuensi clock 1 MHz. Namun, pada sistem minimum yang
digunakan, clock yang ingin digunakan adalah clock eksternal
dengan frekuensi clock 7572800 Hz. Untuk mengubah clock
yang digunakan menjadi clock eksternal, maka perlu
dilakukan pengubahan pada nilai-nlai bit dari fuse
ATMega8535.
Analisis :
Dapat dilihat bahwa LED yang menyala berselang-seling , Tugas 1.B.1
mulai dari LED pada bit ke-0, ke-2, ke-4 dan ke-6 , hal
Flowchart program dapat dilihat sebagai berikut.
tersebut sesuai dengan nilai yang di assign kedalam port A
yang mana hanya PAx yang mana x yang bernilai genap
START
yang diberi nilai 1 berarti on.

Tugas 1.A.2
Flow chart program dapat dilihat sebagai berikut DDRA = 0xFF

START

DDRA = 0xFF

PORTA = 0b00110011

PORTA= 0 b 0 0 0 0 1 0 1 0 END

Delay_ms(500)

END
PORTA = 0b11001100

Sama seperti sebelumnya, untuk mengeset port A


sebagai output maka register DDR port A akan diset Delay_ms(500)
bernilai satu atau 0xFF. Selanjutnya port A akan diset
bernilai 0b00001010. Representasi biner ini Register DDR akan diset bernilai 0xFF sehingga port A
menunjukkan angka 10 di mana merupakan nomor bisa digunakan sebagai output. Kemudian program akan
kelompok praktikan. Selanjutnya akan ditampilkan masuk ke looping dengan while-loop. Loop akan
output sebagai berikut. berlangsung selama tak hingga kali karena variabel
syarat looping selalu bernilai satu. Loop akan berguna
untuk mengulangi tiap siklus nyala matinya LED.
Selanjutnya, pada awal loop, port A akan bernilai
0b00110011. Ini akan membuat lampu LED ke 0,1,4,5
menyala.setelah itu program akan mengalami delay
sebesar 500ms dan LED akan mati setelah itu. Setelah
delay, port A akan diset bernilai 0b11001100. Ini akan
membuat lampu LED ke 2,3,6,7 menyala. Setelah itu
progra m akan delta kembali selama 5 detik dan
melajutkan langkah looping seperti sebelumnya.
Selanjutnya, output yang ditampilkan LED akan
nampak seperti berikut.
Pada percobaan 1B2 meyerupai percobaan sebelumnya hanya
PortA akan set bergantian dan menapilkan output tiga angka
terakhir dari NIM anggota kelompok .
Selanjutnya, output yang dita mpilkan LED akan nampak
seperti berikut.

Figure 1 LED menyala pada bit ke 0,1,4,5

Figure 3 LED menampilkan biner

Figure 2 LED menyala pada bit ke 2,3,6,7

Tugas 1.B.2
Flowchart program dapat dilihat sebagai berikut.

START

Figure 4 LED menampilkan biner 48

DDRA = 0xFF Keluaran ini akan berlangsung terus menerus. Output


yang dikeluarkan sudah sesuai dengan apa yang
diminta pada program.
1

PORTA = 0b00110111

END

Delay_ms(500)

PORTA = 0b00110000

Delay_ms(500
Tugas 1.B.3
Flowchart program dapat dilihat sebagai berikut.

START

DDRA = 0xFF

i = 0xFE

PORTA = i

END

Delay_ms(5000)

i = (i<<1)|(i>>7)

Pertama-tama kita harus mengeset nilai register DDR bernilai


satu agar port A dapat digunakan sebagai output. Selanjutnya
kita mengeset nilai I bernilai 0xFE.Variabel I akan berguna
sebagai variable didalam looping yang mengubah-ubah nilai
biner dan port 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 dalam looping dan
terlihat bahwa nilai biner port A akan sama dengan
variabel i. Selanjutnya , progra m a kan mengalami delay
selama 5 detik. Kemudian variabel i akan diset dengan
operasi.
i = (i<<1)|(i>>7)
Fungsi diatas berfungsi untuk menggeser bit bernilai nol ke
posisi kiri selanjutnya.Ketika sudah overflow maka nilai bit
port A akan kembali ke nilai awal.
Fungsi ini akan berlangsung tak hingga kerena loop di set
menjadi 1
Selanjutnya, output yang ditampilkan LED akan
nampak seperti berikut.

Keluaran ini akan berlangsung terus menerus. Output yang


dikeluarkan sudah sesuai dengan apa yang diminta pada
program.
Tugas 1.B.4
Berikut FlowChart untuk tugas 1.B.4

Pada tugas 1.B.4 ini berbeda dengan percobaan sebelumnya


karena pada percobaan ini nyala lampu tidak memutar satu arah
tetapi menjadi bolak-balik.
Pada program, terdapat dua program While yaitu yang pertama
Keluaran ini akan berlangsung terus menerus. Output yang
untuk mengatur nyala lampu ke kiri dan kemudian nyala lampu
dikeluarkan sudah sesuai dengan apa yang diminta pada
ke kanan.. Pada nyala lampu ke kiri, loop akan berlangsung program.
pada lampu ke 7 hingga lampu ke 7 mati atau dalam biner
adalah 0B011111111 lalu kemudian program akan masuk ke
dalam loop kedua.
Untuk loop kedua program akan sama dengan program pada
tugas 1.B.3.
Selanjutnya, output yang ditampilkan LED akan nampak
seperti berikut.
Simpulan
4.3 TUGAS 1.C PORT A SEBAGAI OUTPUT  ATmega 8535 memiliki 32 pin untuk Input dan
PORT D SEBAGAI INPUT Output.
 AVR GCC memiliki syntax delay untuk membantu
Tugas 1.C.1 program ketika membutuhkan delay waktu.
Flowchart program bisa dilihat sebagai berikut.  Untuk mengeset port berfungsi menjadi input maka
dapat dilakukan untuk mengeset DDRx nya dengan
0x00 dan ketika mau dibuat menjadi output maka
DDRx nya di set menjadi 0xFF
 Untuk mengeset fuse bit, digunakan perintah:
avrdude –c ponyser –p atmega8535 –P com1 –U hfuse:w:0xD9:m
–U lfuse:w:0xEF:m

pada command prompt yang terdapat pada MS


Windows. Dapat dilihat, untuk menggunakan clock
dari sumber eksternal, nilai low-fuse bitnya saja yang
diganti, yaitu dari yang bernilai 0xE1 atau
0b11100001 yang berarti masih menggunakan clock
internal menjadi 0xEF atau 0x11101111 yang berarti
sudah menggunakan clock eksternal (kristal, 8 MHz).

DAFTAR PUSTAKA
[1] Jackstar H. S., Panduan Penulisan Laporan, Jacks
Publishing, Bandung, 2008.
[2] Waskita Adijarto dkk. , Petujuk Praktikum Sistem
Mikroprosessor, ITB, Bandung, 2016.

Pada tugas ini , Port A akan digunakan sebagai output , oleh


karena itu DDRA di set menjadi 0xFF . Kemudian port D akan
digunakan sebagai input dan di set menjadi 0x00 , langkah ini
dinamakan resistor pull up dan berfungsi untuk membuat nilai
pin bernilai 1 ketika ada input yang diberikan dan sebaliknya.
Untuk mengaktifkan resistor pull up adalah dengan menambah
code SFIOR = 0<<00.
Berikut ini hasil pengamatan yang dilakukan untuk tiap
konfigurasi output yang diberikan terhadap konfigurasi input
yang diberikan.
Kondisi 1
LED 7 6 5 4 3 2 1 0
Switch 7 6 5 4 3 2 1 0

Untuk switch, biru menyimbolkan switch yang aktif s


ementara putih menyimbolkan switch yang mati.
Kondisi 2
LED 7 6 5 4 3 2 1 0
Switch 7 6 5 4 3 2 1 0

Output LED memiliki konfigurasi yang sudah sesuai dengan


switch yang diberikan sehingga program sudah berjalan
dengan benar.
LAMPIRAN

Kode tugas I.A.1: TUGAS I.B.3


#include <mega8535.h>
#include <avr/io.h>
#define F_CPU 8000000UL // Menggunakan 8MHz
clock Kristal
int main (void) #include <delay.h>
{ void main()
DDRA = 0XFF ; //inisialisasi {
PORTA sebagai OUTPUT unsigned char i = 0xFE;
PORTA = (1 << PA6) | (1 << PA4) |
(1 << PA2) | (1 << PA0); // nilai
OUTPUT DDRA = 0xFF;
return 0; PORTA = i;
} while(1)
{
PORTA = i;
Kode tugas I.A.2: delay_ms(120);
i=(i<<1)|(i>>7);
#include <mega8535.h> }
void main() }
{
DDRA = 0xFF;//inisialisasi PORTA sebagai
OUTPUT
PORTA = 0b00001010;//nilai OUTPUT
}

TUGAS I.B.1

#include <mega8535.h>
#define F_CPU 1000000UL // Menggunakan
Internal clock 1MHz
#include <delay.h>
void main()
{
DDRA = 0xFF;
PORTA = 0xFF;
while(1)
{
PORTA = 0b00110011;
delay_ms(500);
PORTA = 0b11001100;
delay_ms(500);
}
}

TUGAS I.B.2
#include <mega8535.h>
#define F_CPU 1000000UL // Menggunakan
Internal clock 1MHz
#include <delay.h>
void main()
{
DDRA = 0xFF;
PORTA = 0xFF;
while(1)
{
PORTA = 0b00110111;
delay_ms(500);
PORTA = 0b001100000;
delay_ms(500);
}
}

Anda mungkin juga menyukai