Anda di halaman 1dari 4

I.

PENDAHULUAN

TUJUAN
1. Praktikan mampu memahami Input output mikrokontroler AVR AT Mega
2. Praktikan mampu memahami Input output AVR AT Mega
3. Praktikan mampu membuata program dalam bahasa C untuk input output Port
mikrokontroler dan penerapannya.

DASAR TEORI
Atmel AT Mega8535/16/32 dilengkapi dengan empat buah 8-bit input output (I/O) digital
multiguna yaitu PORTA, PORTB, PORTC, dan PORTD. Semua port ini juga memiliki
fungsi alternatif yang akan dijelaskan kemudian. Pada bab ini akan dibahas mengenai
fungsi dasar port I/O digital. Selanjutnya pada subbab berikut akan dibahas mengenai
penggunaan port I/O dalam aplikasi led, seven segmen, keypad, dan LCD.

Register Port
Setiap port dalam AT Mega8535 memiliki tiga buah register yang berkaitan yaitu
1. Data Register (PORTx), digunakan untuk menulis data keluaran port.
2. Data Direction Register (DDRx), digunakan untuk menentukan pin port spesifik
sebagai output (bernilai 1) atau sebagai input (bernilai 0).
3. Input Pin Address (PINx) digunakan untuk membaca data input dari port.
Gambar 5.1 merupakan gambaran register-register yang dimiliki setiap port.

Gambar 1. Register -register port

Port mikrokontroler AVR dapat dikonfigurasi sebagai input atau output, dengan cara
mengubah isi I/O register DDRx. Bit-bit pada DDRx menentukan arah pin. Setiap pin pada
AVR juga memiliki internal pull-up, untuk mengaktifkannya dilakukan dengan
memberikan nilai 0xFF pada register PORTx.

Untuk membaca data pada salah satu port, dapat digunakan fungsi PINx, sedangkan
membaca data per pin pada suatu port maka ditentukan bit pin-nya yaitu PINx.bit.

LANGKAH PERCOBAAN
1. Hubungkan port PIO pada AVR ATMega dengan modul penampil led.

Petunjuk Praktikum Mikrokontroler - PIO 1


2. Hubungkan port PIO yang lain pada AVR ATMega dengan modul switch.
3. Buatlah program-program berikut, kemudian download kedalam chip AVR.
4. Ubahlah beberapa variable pada program dengan nilai yang bervariasi, kemudian
amati hasilnya dan simpulkan dalam pembahasan.
5. Buatlah program sesuai tugas yang diberikan pada saat praktikum.

Catatan: Cobalah program dibawah bisa menggunakan codewizard atau langsung


dibuat pada project,lalu compile dan download ke AVR-chip dan amati setiap
program yang dibuat dibawah ini dan catat hasil keluarannya.

Program 1:
#include <mega8535.h>
void main(void)
{
DDRD=0xFF; //PortD sebagai output
PORTD=0xFF; //PortD bernilai low
while(1)
{
PORTD.0=0; //PortD pin 0 diberi nilai 0
PORTD.1=1; //PortD pin 1 diberi nilai 1
PORTD.2=1;
PORTD.3=1;
PORTD.4=0;
PORTD.5=1;
PORTD.6=1;
PORTD.7=1;
};
}

Program 2:
/* Program portA input,dan port D output
*/
#include <mega8535.h>
void main(void)
{
//Deklarasi variabel lokal
unsigned char A; //variabel A bertipe uchar 0-255
DDRA=0X00; //PortA sebagai input
PORTA=0XFF; //PortA menggunakan pullup
DDRD=0XFF; //PortD sebagai output
PORTD=0XFF; //PortD bernilai awal high
while(1)
{
A=PINA;
PORTD=A;
};
}

Petunjuk Praktikum Mikrokontroler - PIO 2


Program 3.
/*Program PortD sebagai keluaran, dengan fungsi jeda/delay
*/
#include <mega8535.h>
#include <delay.h>
void main(void)
{
unsigned int A;
DDRD=0XFF;
PORTD=0X00;
A=1;
while(1)
{
PORTD=~A; //portD mengeluarkan invers
A delay_ms(250); A=A*2; if
(A>128) {
A=1;
};
};
}

Program 4.
/*Program geser bit variasikan nilai n, rubah
pergeseran kanan/kiri >>/<<
*/
#include <mega8535.h>
#include <delay.h>
unsigned char val,n; //variabel
global
void
main(void)
{
n=2;
DDRD=0XFF; //portD sebagai output
val=1<<7; //bit 7 diset 1, dan disimpan dalam val
PORTD=~val; //PortD invers val delay_ms(200);
while(1) { delay_ms(200);
val>>=n; //geser nilai val sebanyak n
kekanan PORTD=~val; if(val==0)
{
val=1<<7;
}
};
}
Program 5.
/*Program untuk membaca input port dan
dikeluarkan pada port yang lain
variasikan port masukan dan port
keluaran sesuai modul simulasi yg
digunakan

Petunjuk Praktikum Mikrokontroler - PIO 3


*/
#include <mega8535.h>
#include <delay.h>
unsigned int D1[5]={129,66,36,24,255}; //definisi var D1 sbg
array

void main(void)
{
unsigned char n,a;
DDRD=0XFF;
PORTD=0XFF;
DDRB=0X00;
PORTB=0XFF;
#asm ("nop")
while(1) {
if(PINB.0==0)
{ for
(a=0;a<3;a++)
{ for
(n=0;n<6;n++)
{
PORTD=~D1[n];
delay_ms(500);
};
};
}
if(PINB.1==0)
{
PORTD=0;
delay_ms(500);
PORTD=255;
delay_ms(500);
PORTD=0;
delay_ms(500);
}
PORTD=255;
};
}

Petunjuk Praktikum Mikrokontroler - PIO 4

Anda mungkin juga menyukai