Anda di halaman 1dari 6

PRAKTIKUM MKROPROSESOR

MODUL III
PEMROGRAMAN INPUT-OUTPUT
I. Tujuan Praktikum
1. Memahami pola pemrograman bahasa C untuk mikrokontroler.
2. Dapat mewujudkan program akses I/O.
3. Dapat menerapkan program akses I/O.
II. Alat dan Bahan
1. Sistem minimum AVR ATmega16.
III. Pengantar
Konfigurasi port I/O pada AVR mempergunakan tiga tingkat register yaitu
tingkat register port (PortX), register arah data (Data Direction Register, DDRX)
dan pin masukan (Pin Input, PINX), setiap register menempati alamatnya sendiri.
Pemberian data pada setiap register mempengaruhi proses I/O yang terjadi.
PortX merupakan register yang bersentuhan dengan kondisi diluar chip,
namun keadaan luar tidak serta merta dapat diakses melalui pembacaan PortX.
Hal ini karena arah I/O harus didefinitifkan terlebih dahulu dengan memberikan
data pada register DDRX. Gambar 2.25 menunjukkan konfigirasi register I/O
untuk PORTA.

Gambar 1

Konfigirasi register I/O untuk PORTA

Data bit berlogika 1 pada akan bit-bit pada portX sebagai output, dan
sebaliknya. Pemberian logika 1 pada bit DDRX membuat pull-up internal aktif,
demikian sebaliknya. Data membuat register PINX mengikuti data pada DDRX.
Data pada PINX inilah yang dapat dibaca melalui register R16 amapi R31. Proses
output data tidak serumit proses input data, output data dapat langsung dilakukan
dengan memberikan data ke PORTX.
IV. Cara Pengambilan Data
Catatlah setiap apa yang terjadi dari pelaksanaan langkah kerja.
IV. Langkah Kerja
A Percobaan output
1. Buat Project baru sekaligus foldernya pada AVRStudio, beri nama dengan
format [nomor mahasiswa_modul ke] tanpa spasi.
Sebagai contoh:

13210001_3

2. Tulis kode program dibawah ini.


#include "avr/io.h"

// AVR header file untuk IO ports

int main()
{unsigned char i;
DDRC=0xFF;
PORTC=0x00;

// set PORTC sebagai output


// PortC di beri nilai awal 0

i=0b00000001;
for (;;)
{
PORTC=i;
asm("nop");
i=i<<1;
if (i==0)
{i=0b00000001;}
}

// loop terus menerus


//
//
//
//
//
//

PORTC diberi nilai i


no operation
geser 1x kiri nilai i
apakah i=0?
jika ya i kembali bernilai
0b00000001

3. Compile program sampai tidak ada error dan warning!.


4. Simulasikan dan amati nilai pada PORTC

Nilai awal PORTC adalah . Setiap penekanan F11 nilai PORTC


...

Setelah

kali

penekanan,

nilai

PORTC

berubah

menjadi
Perubahan nilai PORTC adalah karena proses yang diakibatkan oleh perintah
..
5. Buka program Downloader, yaitu program Khazama.

Pilih chip mikrokontroler yang digunakan yaitu ATmega16.

Cari file yang yang akan didownload dengan menekan tombol Load Flash
Hex to Buffer.

Tekan tombol Auto Program.

6. Amati

nyala

LED

.
7. Tambahkan kode program include agar program dapat mempergunakan
delay.
Letakkan kode program #include

"avr/io.h"

dibawah #include

"avr/io.h".

Gantilah kode program asm("nop") dengan kode program _delay_ms(500).


8. Compile dan downloadkan ke mikrokontroler target.
9. Amati

nyala

LED

.
10. Ubah besaran delay menjadi 1000. Compile dan downloadkan ke
mikrokontroler target.
11. Amati

nyala

LED

.
12. Simpulkan

percobaan

berikut..

Anda

pada

baris-baris

..
..
..
..
..
..
..
B Percobaan input
13. Buat project baru dengan folder pada AVRStudio, beri nama dengan format
[nomor mahasiswa_program ke] tanpa spasi.
Sebagai contoh:

13210001_3

14. Tulis kode program dibawah ini.


#include "avr/io.h"
// AVR header file untuk IO ports
#include <util/delay.h> // AVR header file untuk delay
int main()
{unsigned char i;
DDRC = 0xFF;
PORTC = 0x00;
DDRA = 0x00;
PORTA &= 0xFF;
for (;;)
{
asm("nop");
asm("nop");
i=PINA;
i=i&0xFF;
asm("nop");
asm("nop");
PORTC=i;
}
}

//
//
//
//
//

set PORTC sebagai output


PortC di beri nilai awal 0
set PORTA sebagai intput
PortA di AND dengan nilai 1
loop terus menerus

// no operation
// i mendapat data dari PINA
// i di AND dengan 0xFF
// i diumpan ke PORTC

15. Compile dan simulasikan program, amati setiap kali menekan F11 atau tombol
Step Into.
16. Simulasikan sampai terjadi 1 kali perulangan, amati register PINA dan PORTC.
Register PINA bernilai awal .
Register PORTC bernilai awal .
Beri logika 1 pada salah satu bit PINA!. Tekan F11. Amati penunjukan data
pada PORTC.

Data PINA bernilai Data PORTC bernilai


17. Sambungkan kabel downloader ke mikrokontroler target.
18. Buka program Downloader, yaitu program Khazama.

Pilih chip mikrokontroler yang digunakan yaitu ATmega16.

Cari file yang yang akan didownload dengan menekan tombol Load Flash
Hex to Buffer.

Tekan tombol Auto Program.

19. Rubah posisi saklar input data dan amati tampilan lampu LED. Isilah tabel
berikut,
Input data

Output data

01010101
10101010
11001100
00110011
01010101
11111111
20. Apa yang dapat Anda simpulkan dari penggunaan PORT sebagai input?
Dari cara pendefinisian PORT sebagai input...
..
..
..
..
21. Proses perjalanan data diambil dari PIN sampai ditampilkan sebagai berikut
..
..
..
..
..
22. Apakah fungsi DIP switch pada percobaan tersebut?
..

..
..
V.

Tugas

Tulis dalam laporan Anda kesimpulan yang menghubungkan masing-masing


kesimpulan pada percobaan diatas!.

Anda mungkin juga menyukai