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.
1. PENDAHULUAN
2. STUDI PUSTAKA[1]
Gambar dan tabel konfigurasi berikut ini dikutip Gambar 2-2 SFIOR
dari datasheet ATMega 8535:
nyala mati
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
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.
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
} _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>
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;
PORTA = i;
6. Flowchart tugas IB1 dan IB2
_delay_ms(120);
i=(i<<1)|(i>>7);
return 0;
#include <util/delay.h>
int main(void)
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;}
int main(void)
unsigned char i;
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;
PORTA = 0xFF;
int state;
while(1)
_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;