LAPORAN MIKROKONTROLER JOB 1 AKSES I/O
PRAKTIKUM
MIKROKONTROLER
AKSES I/O
Disusun
Oleh
Khairinnisa Siregar ( 16507134042)
TEKNIK ELEKTRONIKA
FAKULTAS TEKNIK
UNIVERSITAS
NEGERI YOGYAKARTA
A. Tujuan
Setelah melakukan praktik mahasiswa
diharapkan dapat:
1. Memahami
konfigurasi input AVR
2. Memahami
konfigurasi output AVR
B. Teori
Dasar
Secara
umum setiap mikrokontroler memiliki I/O port. Jumlahnya berbedabeda untuk
masingmasing mikrokontroler. Mikrokontroler AVR AT90SXXX juga memiliki I/O port
yang jumlahnya bervariasi, dari mulai satu port hingga lebih dari empat port.
Meskipun dari sisi jumlah berbeda, namun karakteristik I/O port mikrokontroler
AVR adalah sama. Untuk lebih jelasnya anda dapat membaca datasheet dari
mikrokontroler yang anda pakai.
Untuk
mengakses port pada mikrokontoler AVR maka anda harus mengenal register yang
ada pada I/O port. Ada tiga register bit pada
I/O port yaitu DDRx, PORTx dan PINx. Register DDRx digunakan untuk menentukan
apakah port tersebut akan dijadikan sebagai input atau output. Sedangkan
register PORTx dipakai untuk mengirim data keluar dari port ketika DDRx diset
sebagai output. Dan register PINx dipakai untuk membaca data pada port ketika
DDRx diset sebagai input.
Karena
ketiga register di atas adalah register bit maka masingmasing pin pada port
bisa diset secara bebas. Misalkan, kita menginginkan sebagian dari PORTA
dijadikan sebagai input dan sebagian yang lain dijadikan sebagai output. Hal
ini mudah dilakukan dengan mengatur register DDRA, sebagian sebagai input dan
sebagian yang lain sebagai output. Agar
pin pada port berfungsi sebagai input maka bit pada register DDRx diset 0.
Sedangkan, pin pada port akan berfungsi sebagai output ketika bit pada register
DDRx diset 1. Untuk lebih detailnya anda bisa membaca di datasheet.
C. Alat
dan Bahan
1. Modul
AVR Atmega8535/8/16/32
2.
PC (Personal computer)/laptop
3. Jumper
D. Skema
Rangkain
E. Langkah
Kerja
1. Buatlah alat dan bahan seperti rangkaian di atas;
2. Buatlah
program seperti yang tertulis berikut, uji cobakan/simulasikanlah di Proteus
lalu coba pada hardware
nyata;
3. Cobalah
list program berikut;
#include <mega8535.h>
#include <delay.h>
unsigned char kiri=0b00000001,
kanan=0b10000000;
void nyala_led() //menyalakan led selama
0.5 detikkemudian dimatikan
{ POTA = 0xffh delay_ms(500);
PORTA = 0×00;
}
void geser_led_kanan()
//fungsi untuk menggeser led berjalan
kearah kanan
{
if (kanan ==0b00000001) kanan =
0b10000000; else kanan >>= 1; PORT_led = kanan; delay_ms(500); }
void geser_led_kiri()
//fungsi untuk menggeser led berjalan
kearah kiri
{
if (kiri==0b10000000) kiri = 0b00000001;
else kiri <<= 1; PORT_led = kiri; delay_ms(500);
}
void tekan_tombol_led_nyala()
//jika tombol PORTBx ditekan maka akan
menyalakan led pada PORTAx {
PORTA = PINB;
}
void main(void) {
PORTA = 0xff;
//Port A diberikan logika high atau LED
mati
DDRA = 0xff;
//port A sebagai output
PORTB = 0x0f;
//PB.7-4 logika low, PB3-0 logika high
DDRB = 0×00;
// port B sebagai input while(1) {
geser_led_kiri() ; // pemanggilan fungsi
};
}
4. Selanjutnya
dengan cara yang sama coba program berikut;
while (1) {
if (PINB.0==0)
{PORTA=00xFF;}
};
}
5.
Selanjutnya dengan cara yang sama coba
program berikut;
while
(1) {
if (PINB.0==0)
PORTA=15;
delay_ms(1000);
PORTA=240;
delay_ms(1000); };
}
6. Selanjutnya
dengan cara yang sama coba program berikut;
#include <avr/io.h>
int main (void)
{
//Jadikan Semua PORTA Sebagai
Output
DDRA = 0xFF;
//Hidupkan
LED PORTA = 0x0F;
return 0;
}
7. Buatlah
kesimpulan dari hasil praktik saudara.
8.
Tugas, buatlah program jika SW1 ditekan
maka bit ganjil PORTA menyala, kemudian
jika SW2 ditekan bit genap PORTA padam.
9.
Tuliskan hasil praktikum ini dan
praktikum selanjutnya dengan format berikut;
F. Hasil
dan Analisa
Gambar
dibawah ini merupakan hasil simulation pada rangkaian.
Analisa : dari praktikum yang dilakukan dapat
dianalisa bahwa pada Bagian awal program #include <mega8535.h> digunakan
untuk memberitahu kepada compiler bahwa program yang dibuat menggunakan Atmega 8535 Kemudian juga
dituliskan #include <delay.h> sebagai library untuk program delay.
Program PORTA=0x00; digunakan untuk memberikan masukan/nilai awal LOW pada
kondisi awal setiap Port di A.
G. Kesimpulan
Dari
praktikum yang dilakukan dapat disimpulkan :
1. Pada
program di atas DDR yang bernilai 0 digunakan
untuk mendeklarasikan suatu port sebagai input, dan DDR bernilai 1 untuk
mendeklarasikan suatu port sebagai output.
2. Ada
tiga register bit pada I/O port yaitu DDRx, PORTx dan PINx. Register DDRx
digunakan untuk menentukan apakah port tersebut akan dijadikan sebagai input
atau output. Sedangkan register PORTx dipakai untuk mengirim data keluar dari
port ketika DDRx diset sebagai output. Dan register PINx dipakai untuk membaca
data pada port ketika DDRx diset sebagai input.
Komentar
Posting Komentar