Anda di halaman 1dari 11

MODUL 1 I/O DASAR

Muhammad Iqbal Fauzan Aulia (13217051)

Asisten: Ellert Bryant Prima Widison (13216015)

Tanggal Percobaan: 06/02/2020

EL3214 - Praktikum Sistem Mikroprosesor

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB

Abstrak
2.1 SKEMATIK I/O (DATASHEET ATMEGA8535
Pada praktikum kali ini, akan dilakukan percobaan HAL. 51)
mengenai I/O dasar pada ATMEGA8535. Percobaan
dilakukan dengan mengetes PORTA sebagai output,
menggunakan fasilitas delay pada AVR GCC, dan
PORTD sebagai input. Simpulan dari percobaan ini adalah:
variabel DDRxn berfungsi sebagai pengatur input (diset 0)
atau output (diset 1); variabel PORTx (Pxn secara
individual) berfungsi mengeset nilai yang akan dikeluarkan
pada output; dan fuse dengan jenis kristal tertentu dapat
digunakan sebagai clock eksternal.

Kata kunci: ATMega8535, input, output Gambar 2-1 Skematik I/O

1. PENDAHULUAN

1.1 LATAR BELAKANG


Pada praktikum kali ini, akan dilakukan
pengenalan terhadap mikroprosesor ATMega8535
yang berkaitan dengan I/O dasar.
2.2 KONFIGURASI PIN PORT (DATASHEET
1.2 TUJUAN PERCOBAAN ATMEGA8535 HAL. 53)
Percobaan ini bertujuan agar praktikan: Tabel 2-1 Konfigurasi Pin Port

1. Praktikan memahami datasheet ATMega 8535


2. Praktikan mampu membuat aplikasi input dan
output pada AVR dengan
menggunakan bahasa pemprograman C pada
WinAVR
3. Praktikan memahami pengesetan fuse yang
2.3 PUD PADA SFIOR (DATASHEET
berkaitan dengan penggunakan besar dan jenis
ATMEGA8535 HAL. 59)
kristal

2. STUDI PUSTAKA[1]
Gambar dan tabel konfigurasi berikut ini dikutip Gambar 2-2 SFIOR
dari datasheet ATMega 8535:

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 1


2.4 REKOMENDASI UNTUK INISIALISASI PADA Pertanyaan-pertanyaan pada modul juga dijawab
PIN INPUT (DATASHEET ATMEGA8535 pada poin ini.
HAL. 56)
Pada laporan ini, akan digunakan konvensi berikut
unuk merepresentasikan LED:

nyala mati

Kode dan flowchart dari tugas-tugas di bawah


2.5 DESKRIPSI REGISTER (MISALNYA PORT A) dapat dilihat pada lampiran.
(DATASHEET ATMEGA8535 HAL. 66)
4.1 TUGAS IA1
Percobaan ini menampilkan output sesuai dengan
input pada kode. Pertama, variabel DDRA diassign
dengan nilai 0xFF untuk membuat PORTA sebagai
ouput. Variabel PA6, 4, 2, dan 0 diset 1 agar lampu
menyala sesuai variabelnya.

Gambar 2-3 Deskripsi register Port A Berikut representasi LED nya.

3. METODOLOGI LED
bit ke- 7 6 5 4 3 2 1 0
3.1 ALAT DAN KOMPONEN YANG
DIGUNAKAN
4.2 TUGAS IA2
1. Personal Computer (PC) yang terinstal
WinAVR Kode pada tugas IA1 dimodifikasi dengan
mengubah nilai yang diassign ke PORTA menjadi
2. Modul ATMega8535
0b00000011 (3 dalam desimal sebagai nomor
3. Sismin ATMega8535 kelompok). Didapatkan LED sebagi berikut:
4. DT-51 Trainer Board LED

3.2 LANGAKAH KERJA bit ke- 7 6 5 4 3 2 1 0


Berikut adalah langkah kerja yang dilakukan pada
praktikum kali ini. 4.3 TUGAS IB1
Pertama-tama clock di set supaya menggunakan
sumber eksternal. Lalu PORTA dibuat sebagai
OUTPUT. Pada loop while, nilai yang diassign ke
PORTA berganti-gantian setiap 500 ms (dengan
memanfaatkan delay) antara 0b00110011 dan
0b11001100. Didapatkan LED sebagai berikut:
500 ms pertama:

LED
bit ke- 7 6 5 4 3 2 1 0

500 ms kedua:
4. HASIL DAN ANALISIS LED
Berikut adalah data dan analisis pengaturan-
bit ke- 7 6 5 4 3 2 1 0
pengaturan yang dilakukan dan hasil percobaan.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 2


4.4 TUGAS IB2 bit 7 mati. State tersebut mengandung kode
i=(i<<7)|(i>>1) yang menyebabkan LED yang mati
Kode pada tugas IB1 dimodifikasi dengan
berjalan dari kiri ke kanan. Jika LED 0 mati, state
mengubah nilai yang diassign ke PORTA menjadi
akan kembali seperti sebelumnya dengan kode
0b00110010 dan 0b00110011 (50 dan 51 dalam
i=(i<<1)|(i>>7). LED yang didapatkan adalah
desimal sebagai NIM). Didapatkan LED sebagai
sebagai berikut
berikut:
500 ms pertama: Tahap
LED
ke-
LED
bit ke- 7 6 5 4 3 2 1 0 1

2
500 ms kedua:
3
LED
4
bit ke- 7 6 5 4 3 2 1 0
5
4.5 TUGAS IB3 6
Pertama-tama clock di set supaya menggunakan
sumber eksternal. Lalu PORTA dibuat sebagai 7
OUTPUT dan diinisialisasi dengan 0xFE (lampu 8
LED mati satu di paling kanan). Selanjutnya, pada
loop while, dengan cara shifting dan penjumlahan 9
variabel i=(i<<1)|(i>>7) , didapatkan LED sebagai
berikut 10

11
Tahap
LED
ke- 12

1 13

2 14

3 bit ke- 7 6 5 4 3 2 1 0

4 Setelah mencapai tahap 14, kondisi LED akan


kembali ke tahap 1.
5

6 4.7 TUGAS IC1


Pertama-tama, PORTA diset sebagai output dan
7
PORTD sebagai input yang akan menerima
8 masukan dari saklar. Lalu pada SFIOR, PUD diset
0 untuk menyalakan resistor pull-up internal.
bit ke- 7 6 5 4 3 2 1 0 Setelah nilai PORT A diinisialisasi, di dalam loop
while, nilai PORTA diatur agar selalu sama dengan
Dengan delay 120 ms antar tahap. Setelah sampai PIND sebagai input. Hasilnya, LED akan menyala
tahap ke 8, urutan LED akan kembali ke tahap 1. sesuai dengan input yang bersesuaian dengan
saklar.
4.6 TUGAS IB4
Kode pada tugas IB3 diubah. Ditambahkan
variabel state yang akan berganti ketika LED pada

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 3


4.8 TUGAS IC2 2. Variabel PORTx (Pxn secara individual)
berfungsi mengeset nilai yang akan
Kode pada tugas IC1 dimodifikasi. Ketika input
dikeluarkan pada output.
sama dengan 50 (0b00110010 dalam biner) maka
kondisi LED seperti IB2. Ketika input sama dengan 3. Fuse dengan jenis kristal tertentu dapat
51 (0b00110011 dalam biner) maka LED seperti IB4. digunakan sebagai clock eksternal.
Ketika input lain, maka LED sama dengan IA2.
DAFTAR PUSTAKA
5. SIMPULAN
[1] Mervin T. Hutabarat, dkk., Petunjuk Praktikum
Simpulan percobaan ini adalah sebagai berikut. Sistem Mikroprosesor, Laboratorium Dasar
Teknik Elektro, Institut Teknologi Bandung,
1. Variabel DDRxn berfungsi sebagai pengatur
2020.
input (diset 0) atau output (diset 1).

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 4


#include <util/delay.h>
LAMPIRAN
int main(void)
1. Kode tugas IA1
{
#include <avr/io.h>
DDRA = 0xFF;
int main(void)
PORTA = 0xFF;
{
while(1)
DDRA = 0xFF;//inisialisasi PORTA
sebagai OUTPUT {

PORTA = PORTA = 0b00110011;


(1<<PA6)|(1<<PA4)|(1<<PA2)|(1<<PA0);//nila
i OUTPUT _delay_ms(500);

return 0; PORTA = 0b11001100;

} _delay_ms(500);

}
2. Kode tugas IA2
return 0;
#include <avr/io.h>
}
int main(void)

{
5. Kode tugas IB2
DDRA = 0xFF;//inisialisasi PORTA
sebagai OUTPUT #include <avr/io.h>

PORTA = 0b00000011;//nilai OUTPUT #define F_CPU 7372800UL // sesuai dengan


nilai eksternal clock
return 0;
#include <util/delay.h>
}
int main(void)
3. Flowchart tugas IA {

DDRA = 0xFF;

PORTA = 0xFF;

while(1)

PORTA = 0b00110010;

_delay_ms(500);
4. Kode tugas IB1 PORTA = 0b00110011;
#include <avr/io.h> _delay_ms(500);
#define F_CPU 7372800UL // sesuai dengan }
nilai eksternal clock
return 0;

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 5


} {

PORTA = i;
6. Flowchart tugas IB1 dan IB2
_delay_ms(120);

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

return 0;

8. Flowchart tugas IB3

7. Kode tugas IB3


#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; 9. Kode tugas IB4


PORTA = i; #include <avr/io.h>
while(1)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 6


#define F_CPU 7372800UL // sesuai dengan
nilai eksternal clock
if(state==0){
#include <util/delay.h>
_delay_ms(120);
int main(void)
i=(i<<1)|(i>>7);
{
}
unsigned char i = 0xFE;

DDRA = 0xFF;
if(state==1){
PORTA = i;
_delay_ms(120);
int state;
i=(i<<7)|(i>>1);
while(1)
}
{

}
PORTA = i;
return 0;
if(PORTA == 0b11111110) {state=0;}
}
else if(PORTA == 0b01111111)
{state=1;}

10. Flowchart tugas IB4

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 7


Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 8
11. Kode tugas IC1
#include <avr/io.h>

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;
13. Kode tugas IC2
#include <avr/io.h>
}
#include <util/delay.h>
return 0;
#define F_CPU 7372800UL
}
int main(void)
12. Flowchart tugas IC1 {

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;

unsigned char j=0xFE;

int state;

while(1)

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 9


i = PIND;
_delay_ms(120);
if(i==0b00110010)//NIM
M.Naufal Abid
j=(j<<1)|(j>>7);
{
}
PORTA = 0b00110010;

_delay_ms(500);
if(state==1){
PORTA = 0b00110011;

_delay_ms(500);
_delay_ms(120);
}

j=(j<<7)|(j>>1);

else if(i==0b00110011)//NIM }
M.Iqbal F.
}
{
else {
PORTA=j;
PORTA = 0b00000011;
if(PORTA ==
}
0b11111110) {state=0;}

else if(PORTA ==
0b01111111) {state=1;}

if(state==0){ return 0;

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 1


0
14. Flowchart tugas IC2

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 11

Anda mungkin juga menyukai