
Terlihat pada gambar di atas, terdapat 4 buah port yaitu PA, PB, PC dan PD yang semuanya dapat diprogram sebagai input ataupun output. Pin I/O pada mikrokontroler AVR dapat dikonfigurasi sebagai input atau output, dengan cara mengubah isi I/O register Data Direction Register.
Misalnya, jika ingin port C dikonfigurasikan sebagai output, maka Data Direction Register port C(DDRC) harus diset sebagai 0xFFH ( sama dengan 255). Jika sebagai input maka 0x00H (sama dengan 0).
Contoh ;
DDRC=255; //Port C dikonfigurasi sebagai output, yaitu PC0 -PC7
DDRB=0x00; // Port B dikonfigurasi sebagai input
DDRB=0xFFH; // Port B dikonfigurasi sebagai output
VOH ( output high voltage) ialah tegangan pada pin I/O mikrokontroler ketika ia mengeluarkan logia “1” dengan besar sekitar 4.2V dan arus sebesar 20mA(IOH . Setiap pin I/O mikrokontroler AVR memiliki internal pull up. Mialnya Port B dikonfiguasi sebagai input dan internal pull-upnya diaktifkan maka DDRB==00H dan PORTB=00H
Contoh ;
DDRB=0; // Port B dikonfigurasi sebagai input
PORTB=0; //internal pull-up aktif
Untuk mendeteksi input pada salah satu port, dapat digunakan fungsi PINx, sedangkan mendeteksi per pin pada suatu port dapat digunakan fungsi Pinx.bit
Contoh:
PORTB=PINC; //Semua data di Port C dikirim ke Port B
PORTB.0=PINC.0 ; //Data di Port C.0 dikirim ke Port B.0
Keluaran dari suatu port mikrokontroler hanya dapat mengemudikan perangkat output dengan arus yang kecil, oleh karena itu biasanya dipergunakan penguat lagi berupa transistor atau IC penguat agar port tersebut tidak terbebani, berikut contoh mengemudikan relay dengan tambahan 1 buah transistor :

Transistor 2N3904 mempunyai BDC sebesar 100, maka untuk menghitung nilai resistor basis agar transistor mampu mengalirkan arus yang memadai sekitar 140 mA ke relay tersebut, menggunakan rumus baku :
I Bsaturasi =ICsat /BDC = 140mA /100 = 1.4 mA
Jadi, untuk memastikan transistor saturasi, diperlukan setidaknya arus overdriver 4-10 x dari IBsat, sehingga
IB = 5 x I Bsat
Diperoleh IB =7 mA
Maka RB= VOH- VBE /IB = (4.2-0.7) volt/ 7 mA= 500 Ω
Umumnya resistor yang mudah diperoleh ialah 470 ohm, jadi kita gunakan nilai 470 ohm tersebut sebagai RB, mudah bukan. Pada gambar diatas, jika PA.0 berlogika “1” maka kaki basis transistor mendapat tegangan sebesar VOH sehingga transistor akan bekerja/mengalirkan arus (saturasi) dan mengaktifkan relay, begitu juga sebaliknya.
Penerapan pada Program
Percobaan 1. Penerapan Output dan fungsi delay
Buat program di bawah ini :
Outportb.c:
// Percobaan 1.1, percobaan Output dan delay pada Port B
// LED terhubung di Port B
#include
#include
//jadi librarynya harus digunakan
void main(void) { //Program Utama
DDRB=255; //Port B dikonfigurasi sebagai output
//yaitu PB0 -PB7
PORTB=255; //Semua Port B mengeluarkan
//logika 1 sehingga semua LED mati
// Program akan berulang terus
while (1) {
PORTB.0=0; //LED PB0 menyala
PORTB.2=0; //LED PB2 menyala
delay_ms(500); //Delay 0.5 detik
PORTB.0=1; //LED PB0 mati
PORTB.2=1; //LED PB2 mati
delay_ms(1000); //Delay 1 detik
}; //akhir looping
} //Akhir program utama
Kompilasi dan jalankan, maka pada alat akan tampil lampu LED yang berkedip secara bergantian sesuai dengan delay yang telah ditentukan. Beri komentar mengapa diperoleh hasil tersebut.
Percobaan 2. Penerapan Input Output
Buat program di bawah ini :
Input PortC ke PortB.c:
// Percobaan 1.2, percobaan Input di Port C dan Output pada Port B
// Saklar di Port C, LED terhubung di Port B
#include
#include
void main(void) { //Program Utama
DDRB=255; //Port B dikonfigurasi sebagai output, yaitu PB0 -PB7
PORTB=255; //Semua Port B mengeluarkan
//logika 1 sehingga semua LED mati
PORTC =0; //Matikan internal pull up karena sudah ada
//eksternal pull up pada rangkaian input
#asm ("nop") //persiapan
// Program akan berulang terus
while (1) {
PORTB=PINC ; //Semua push button yang ditekan di Port C
//datanya dikirim ke Port B
}; //akhir looping
} //Akhir program utama
Amati apa yang terjadi jika beberapa atau semua push button di Port C ditekan.
Percobaan 3. Penerapan Invert Data
Buat program di bawah ini:
DeteksiInputPortCkePortB.c:
// Percobaan 1.3, percobaan deteksi Input di Port C per pin dan Output pada Port B
// Saklar di Port C, LED terhubung di Port B
#include
#include
void main(void) { //Program Utama
DDRB=255; //Port B dikonfigurasi sebagai output, yaitu PB0 -PB7
PORTB=255; //Semua Port B mengeluarkan logika 1 sehingga semua LED mati
DDRC=0; //Port C dikonfigurasi sebagai input
PORTC =0; //Matikan internal pull up karena sudah ada
//eksternal pul up pada rangkaian input
#asm ("nop") //persiapan
// Program akan berulang terus
while (1) {
PORTB.1=PINC.0 ; //membaca data di PC0
//datanya dikirim ke PB1
PortB.2= ~PINC.2 //Logika PB2 kebalikan dari PC2
}; //akhir looping
} //Akhir program utama
Amati apa yang tampil di port B jika push button di PC.0 ditekan, dan jika Port C.2 ditekan
13 komentar:
he, pria pemalu...
yo opo ban bocore???
wis ditambal durung??
he3x....
adzym m.a 2406100076 kelompok 6
mas...
untuk rangkaian ttg downloader dan minimum sistem dimana????
kok g ada ya di situ???tolong kasih petunjuk dong!!!
hallo mas...
ak bingung mo komentar pa...
alfa
2406100014
kel.6
kapan maning
joker vs laskar F41??
amri akbar
2406 100 002
kel 6
ok.
illa
ok.
illa
ok.
illa
ok.
illa
ok bsok asistensi jm3 yo..
illa.
kel0mpok6.
tes....
mas,control suhu pk AVR ATMEGA8535 bs kn y???g susah kn nyari di pasaran???
infonya keren brother
Posting Komentar