Anda di halaman 1dari 6

FAKULTAS TEKNIK

UNIVERSITAS NEGERI YOGYAKARTA


LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/03‐04  Revisi : 00  Senin 010211  Hal. 1 dari 6 hal. 
Sem.:Genap  Input Output 4 x 50 menit
 
A. Teori Singkat
Register DDRx
Mikrokontroller ATMega16 mempunyai empat buah port yaitu: PortA, PortB,
PortC, dan PortD. Keempat port tersebut merupakan jalur dua arah (bidirectional) yang
dilengkapi dengan pilihan internal pull-up. Tiap port mempunyai tiga buah register bit, yaitu:
PINx (Port Input Pin Address), Digunakan sebagai register input dan DDRx (Data Direction
Register)
Register DDRx digunakan untuk memilih arah pin. Dimana x adalah port
mikrokontroler yang digunakan. Misal: jika menggunakan Port A berarti register DDRx
adalah menggunakan DDRA. Register ini berfungsi untuk mengatur arah Pin/Port
mikrokontroler. Apakah dipakai sebagai input atau output. Jika DDRx = 1 maka Pxn sebagai
pin output Jika DDRx = 0 maka Pxn sebagai input. Nilai register ini sebesar 8 bit. Setiap bit
mewakili masing-masing pin kaki mikrokontroler. Jika pin kaki mikrokontroler digunakan
sebagai input maka register DDRx nya harus diberi nilai 0 (nol). Jika pin kaki
mikrokontroler digunakan sebagai output maka register DDRx nya harus bernilai 1.
Perhatikan data DDRA jika Port A akan digunakan sebagai input maka untuk
mensetnya digunakan perintah:

DDRA= 0x00;

Pada perintah diatas, berarti seluruh pin-pin pada Port A digunakan sebagai input. Cara
mengaturnya juga dapat dilakukan dengan cara menagatur tiap bit, apakah bit tersebut
sebagai masukan atau keluaran. Misalnya Port A.0 dijadikan input sedangkan Port A.2
..sampai.. Port A.7 digunakan sebagai output maka perintahnya:

DDRA= 0xFE; Dimana 0xFE (heksa) == 0b 1111 1110 (biner)

Perhatikan baik-baik konversi biner diatas! Setiap bit nilai biner mewakili Pin-Pin pada
PORTA.

Tanda bilangan Biner

0xFE 1 1 1 1 1 1 1 0

PortB.7 PortB.6 PortB.5 PortB.4 PortB.3 PortB.2 PortB.1 PortB.0

Jika dimati dan pahami betul gambar di atas maka dapat diketahui bahwa Port A.0 sebagai
Input karena nilai DDRnya 0 (nol) dan Port A.1 sampai Port A.7 sebagai Output karena nilai
DDRnya 1.
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/03‐04  Revisi : 00  Senin 010211  Hal. 2 dari 6 hal. 
Sem.:Genap  Input Output 4 x 50 menit
 
Portx (Port Data Register)
Register Portx digunakan untuk 2 keperluan yaitu untuk jalur output atau untuk
mengaktifkan resistor pullup. Dimana x adalah port mikrokontroler yang digunakan.
Misalnya jika x diberi nilai A maka dapat ditulis menggunakan PORTA berarti registernya
PORTA. Jika Port digunakan sebagai input register ini berfungsi sebagai penentu apakah
kondisi Port di Pull Up atau Floating. Jika Port digunakan sebagai output register ini
menentukan kondisi Port High atau Low. Untuk lebih jelasnya perhatikan penjelasan
dibawah ini:

Portx berfungsi sebagai output jika DDRx = 1 maka :


Portxn = 1 maka pin Pxn akan berlogika high.
Portxn = 0 maka pin Pxn akan berlogika low.

Portx berfungsi untuk mengaktifkan resistor pullup jika DDRx = 0 maka:


Portxn = 1 maka pin Pxn sebagai pin input dengan resistor pull up.
Portxn = 0 maka pin Pxn sebagai output tanpa resistor pull up.

Untuk memahami apa arti Pull Up perhatikan gambar berikut:

Pin 1. dihubungkan ke VCC (tegangan 5 Volt) melalui resistor (R), inilah yang di
maksud dengan Pull Up. Saat tidak ada tegangan dari luar Pin 1 akan cenderung berkondisi
High (“1”) Pin 2. dibiarkan begitu saja sehingga kondisi logic Pin2 rentan terhadap pengaruh
sekitarnya. Pin 2. bisa berlogika high bisa juga berlogika low ini artinya logika Pin 2
ngambang (“Floating”).
Kondisi floating biasanya diperlukan saat Pin sebuah IC atau mikrokontroler
dihubungkan ke sensor. Karena jika di Pull Up dikhawatirkan kondisi logic Pin IC
mengganggu kondisi logic pin-pin sensor. Perhatikan code program berikut:

DDRA = 0x00;
PORTA = 0xFF;

ini berarti seluruh pin-pin pada Port A sebagai Input dan di beri Pull Up. Perhatikan code
program berikut:
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/03‐04  Revisi : 00  Senin 010211  Hal. 3 dari 6 hal. 
Sem.:Genap  Input Output 4 x 50 menit
 

DDRB= 0x00;
PORTB=0x0F;

Hal diatas berarti Seluruh pin-pin PortB dijadikan Input, karena DDRB diberi data
0x00 atau dalam biner 00000000b, tetapi yang di beri pull up adalah PortB.0 ..sampai..
PortB.3 dan PortB.4 ..sampai.. PortB.7 dalam keadaan Floating. Hal ini dikarenakan PORTB
diberi data 0x0F atau dalam biner adalah 0000 1111b
Dari uraian tersebut diatas DDxn, PORTxn, dan PINxn. Huruf ‘x’ mewakili nama
huruf dari port sedangkan huruf ‘n’ mewakili nomor bit. Bit DDxn terdapat pada I/O address
DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O
address PINx. Bit DDxn dalam register DDRx (Data Direction Register) menentukan arah
pin.
Bila DDxn diset 1 maka Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px
berfungsi sebagai pin input.Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin
input, maka resistor pull-up akan diaktifkan. Untuk mematikan resistor pull-up, PORTxn
harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah
kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output maka pin
port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin
output maka pin port akan berlogika 0.
Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi
output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-
up enabled (DDxn=0, PORTxn=1) atau kondisi output low (DDxn=1, PORTxn=0). Biasanya,
kondisi pull-up enabled dapat diterima sepenuhnya, selama lingkungan impedansi tinggi
tidak memperhatikan perbedaan antara sebuah strong high driver dengan sebuah pull-up. Jika
ini bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset 1 untuk mematikan
semua pull-up dalam semua port. Peralihan dari kondisi input dengan pull-up ke kondisi
output low juga menimbulkan masalah yang sama. Kita harus menggunakan kondisi tri-state
(DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi
transisi.

Tabel 1 Konfigurasi pin port

DDxn PORTxn PUD I/O Pull-up arti


0 0 x Input Tidak Tri-state (Impedansi Tinggi)
0 1 O Input Ya Pull up aktif
0 1 1 Input Tidak Tri-state (Impedansi Tinggi)
1 0 X Output Tidak Keluaran rendah
1 1 X Output Tidak Keluaran tinggi

PUD : Pull-up Disable Bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan walaupun register DDxn dan
PORTxn dikonfigurasikan untuk menyalakan pull-up (DDxn=0, PORTxn=1).

Fungsi dasar dari setiap pin mikrokontroler adalah: membaca perubahan level tegangan
apakah 0 atau 5 volt (jika digunakan sebagai input) mengeluarkan tegangan sebesar 0 atau 5
volt (jika digunakan sebagai output). Perhatikan contoh untuk mengeluarkan Output ke PortC
dengan nilai 0xBB dibawah ini:
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/03‐04  Revisi : 00  Senin 010211  Hal. 4 dari 6 hal. 
Sem.:Genap  Input Output 4 x 50 menit
 
#include <mega16.h>

void main()
{
DDRC= 0xFF; //Port C sebagai Output
PORTC= 0x BB; //mengeluarkan nilai 0x BB ke Port C
}

membaca input di PORT A dan mengeluarkan nilainya ke PORT D


#include <mega16.h>

void main()
{
DDRA= 0x00; //Port A sebagai Input
PORTA= 0xFF; //Port A di Pull Up
//PortA di Pull Up agar logicnya “1”
DDRD=0xFF; //Port D sebagai Output

while(1) //Infinite Looping(program dijalankan terus menerus)


{
PORTD=PINA; //kondisi PORTD sama dengan PORTA
}
}

B. Rangkaian
Rangkaian 1
+ 5V

R1
10k

C4
4.7uF

C1 IC1
9 22
RESET PC0/SCL
23
30pF XTAL1 13
PC1/SDA
24
11.0592MHz XTAL1 PC2/TCK
12 25
C2 XTAL2 PC3/TMS
26
PC4/TDO
40 27
PA0/ADC0 PC5/TDI
39 28
PA1/ADC1 PC6/TOSC1
30pF 38 29
PA2/ADC2 PC7/TOSC2
37
PA3/ADC3
36 14
PA4/ADC4 PD0/RXD
35 15
PA5/ADC5 PD1/TXD
34 16
PA6/ADC6 PD2/INT0
33 17
PA7/ADC7 PD3/INT1
18
PD4/OC1B
1 19
PB0/T0/XCK PD5/OC1A
2 20
PB1/T1 PD6/ICP1
3 21
PB2/AIN0/INT2 PD7/OC2
4
PB3/AIN1/OC0
5
PB4/SS
6
PB5/MOSI
7 32
PB6/MISO AREF
8 30
PB7/SCK AVCC
ATMEGA16
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/03‐04  Revisi : 00  Senin 010211  Hal. 5 dari 6 hal. 
Sem.:Genap  Input Output 4 x 50 menit
 

Rangkaian 2

C. Program
Program 1
#include <mega16.h>
#include <delay.h>

unsigned char out1=0x01;


void main(void)
{

int i;
DDRC=0xFF;
PORTC=0x00;

while (1)
{
for(i=1;i<=8;i++)
{
PORTC=out1;
delay_ms(200);
out1<<=1;
}
out1=0x01;
};
}
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA
LABSHEET PRAKTIKUM MIKROKONTROLLER
No. : ST/EKA/ EKA263/03‐04  Revisi : 00  Senin 010211  Hal. 6 dari 6 hal. 
Sem.:Genap  Input Output 4 x 50 menit
 

Program 2
#include <mega16.h>

// Declare your global variables here


void main(void)
{
PORTB=0xFF;
DDRB=0xFF;

PORTC=0x00;
DDRC=0xFF;
while (1)
{
if(PINB.0==0) {PORTC=0x01;}
if(PINB.1==0) {PORTC=0x02;}
if(PINB.2==0) {PORTC=0x04;}
if(PINB.3==0) {PORTC=0x08;}
if(PINB.4==0) {PORTC=0x10; }
if(PINB.5==0) {PORTC=0x20;}
if(PINB.6==0) {PORTC=0x40;}
if(PINB.7==0) {PORTC=0x80;}
else {}
};
}

D. Tugas
1. Gambarkan rangkaian mikrokontroller seperti pada gambar rangkaian 1 dan 2, beri nama
file untuk rangkaian 1 menjadi NIM_ANDA_31 dan rangkaian 2 menjadi
NIM_ANDA_32
2. Tulislah program pada latih1 s.d Latih2 untuk gambar rangkaian mikrokontroller
ATMEGA16 dengan CVAVR
3. Lakukan konversi menjadi file dengan berextensi .c menjadi berextensi .COF dan .HEX
yang siap dimasukan ke dalam mikrokontroller
4. Gambarkan rangkaian diatas pada simulasi Proteus
5. Masukan file yang berextensi COF atau HEX ke dalam mikrokontroller ATMEGA16
6. Lakukan penekanan Tombol PLAY pada proteus amati apa yang terjadi
7. Buatlah Program untuk gambar rangkaian 1 dengan penyalaan yang bervariasi sebagai
berikut:
a. Geser ke kanan satu-satu
b. Geser ke kiri satu-satu
c. Geser dari pinggir ke tengah kemudian ke tengah lagi

Anda mungkin juga menyukai