Labsheet Praktikum Mikrokontroller 3-4 IO Ok
Labsheet Praktikum Mikrokontroller 3-4 IO Ok
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:
Perhatikan baik-baik konversi biner diatas! Setiap bit nilai biner mewakili Pin-Pin pada
PORTA.
0xFE 1 1 1 1 1 1 1 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:
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.
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
}
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
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>
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>
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