Anda di halaman 1dari 9

1.

Teori Dasar

A. Port Sebagai Input / Output Digital

Atmega 8535 mempunyai empat buah port yang bernama PortA, PortB, PortC,
dan PortD. Keempat port tersebut merupakan jalur bi-directional dengan pilihan internal
pull-up. Tiap port mempunyai tiga buah register bit, yaitu 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. Petunjuk Praktikum
AVR-Triwiyanto-mytutorialcafe.com Page 3 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 apakahitu kondisi pull-up
enabled (DDxn=0, PORTxn=1) atau kondisi output low (DDxn=1,PORTxn=0).
Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selamalingkungan
impedansi tinggi tidak memperhatikan perbedaan antara sebuah stronghigh 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 jugamenimbulkan masalah yang sama. Maka harus
menggunakan kondisi tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1,
PORTxn=0) sebagai kondisi transisi.

B. Fungsi Delay

Menghasilkan delay dalam program-C. Berada pada header delay.h yang harus
di- Includekan sebelum digunakan. Sebelum memanggil fungsi, interrupsi harus
dimatikan terlebih dahulu, bila tidak maka delay akan lebih lama dari yang diharapkan.
Juga sangat penting untuk menyebutkan frekuensi clock chip IC AVR yang digunakan
pada menu Project-Configure-C Compiler-Code Generation.

Fungsi delay yang disediakan adalah:

• void delay_us(unsigned int n) menghasilkan delay selama n μ-detik, n adalah nilai


konstan

• void delay_ms(unsigned int n) menghasilkan delay selama n mili-detik, n adalah nilai


konstan
2. PEMBAHASAN DAN LISTING PROGRAM
 Percobaan LED ON
Pada percobaan ini akan menghidupkan LED sejumlah 4 buah
#include <mega8535.h>
void main(void)
{
DDRC=0xFF;
PORTC=0x0F;
}
 Percobaan LED On/ Off dengan fungsi delay
Pada percobaan ini LED akan ON dan OFF dengan waktu tunda tertentu, yang
ditentukan dengan fungsi delay_ms.
#include <mega8535.h>
#include <delay.h>
void main(void)
{
DDRC= 0xFF;
while (1)
{
PORTC=0xFF;
delay_ms(1000);
Petunjuk Praktikum AVR-Triwiyanto-mytutorialcafe.com Page 6
PORTC=0x00;
delay_ms(1000);
}
}
 Percobaan LED dengan data Tabel
Pada percobaan ini kombinasi display LED yang ON ditentukan berdasarkan
table pada array urutan[8] dengan perpindahan satu pola ke pola yang lainnya
berdasarkan delay.
#include <mega8535.h>
#include <delay.h>
void main(void)
{
char urutan[8]={0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80};
char i;
DDRC=0xFF;
PORTC=0xFF;
while(1)
{
for (i=0;i<8;i++)
{
PORTC=urutan[i];
delay_ms(1000)
}
}
}

Untuk membuat listing program, kita menggunakan bahasa C dan menggunakan sistem
bilangan biner/oktal/decimal/heksadesimal. Apabila kita menggunakan biner, maka
menggunakan angka/logika 0 dan 1. Pada oktal menggunakan angka/logika 0 sampai 8.
Pada decimal menggunakan angka/logika 0 sampai 9. Pada heksadesimal menggunakan
angka/logika 0 sampai 9 dan huruf A sampai F (A=10,B=11,C=12,D=13,E=14,F=15).
Listing program ini menggunakan port C karena LED terdapat di bagian port C. Logika 0
menunjukkan output sedangkan logika 1 menunjukkan input. Arti dari PORT C = 0x0F
adalah F menunjukkan sistem bilangan heksadesimal yang bernilai 15/dalam biner
berlogika 1111 dan menjadi input (LED padam) sedangkan 0 menunjukkan output (LED
nyala), sehingga lampu akan menyala setengah dan lampu akan padam setengah.

Dalam listing program di atas ada yang menggunakan delay dan telah dibahas apabila
delay berarti proses penundaan selama selang waktu tertentu. Listing program di atas
tertulis :
PORT C=0x0F ;
delay_ms(1000);
arti dari program tersebut adalah LED akan menyala setengah dan padam setengah
karena berlogika 0000 1111 dalam jangka waktu 1000 mili second.
PORT C = 0x00;
delay_ms(1000);

arti dari program tersebut adalah semua LED akan padam dalam jangka waktu 1000 mili
second.
char urutan[8]={0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80};
char i;
DDRC=0xFF;
PORTC=0xFF;
while(1)
{
for (i=0;i<8;i++)
{
PORTC=urutan[i];
delay_ms(1000);

arti dari char urutan di atas adalah lampu akan manyala secara berurutan sesuai dengan
urutan logika yang dituliskan yang dimulai dari LED yang mempunyai logika paling
kecil.
1. Langkah pertama dalam membuat pemograman mikro yaitu : buka program CodeVision,
lalu pilih new, pilih project, pilih ATMega, pilih port C, lalu buat bit nya menjadi output
semua.
Kemudian klik program, lalu pilih generate exit save, beri nama file sebanyak tiga kali
dengan nama file yang sama.

2. Tulis list program sesuai dengan modul yang telah diberikan seperti contoh di bawah ini.
Pada program ini, kita membuat LED menyala sebanyak empat buah. LED yang menyala
hanya empat karena dalam program dituliskan PORT C=0x0F, yang berarti berlogika
0000 1111, logika 0 berarti output sedangkan logika 1 berarti input.
3. Listing program yang kedua seperti di bawah ini. Listing ini menggunakan delay yang
berfungsi untuk jeda waktu tertentu. Di bawah include ATMega harus ditulis program
tambahan delay karena kita akan membuat LED menjadi delay
PORT C=0x0F ;
delay_ms(1000);
arti dari program tersebut adalah LED akan menyala setengah dan padam setengah
karena berlogika 0000 1111 dalam jangka waktu 1000 mili second.
PORT C = 0x00;
delay_ms(1000);

arti dari program tersebut adalah semua LED akan padam dalam jangka waktu 1000 mili
second.
4. Selanjutnya dalam listing program di bawah ini menunjukkan LED akan menyala secara
berurutan dimulai dari LED yang mempunyai nilai logika paling rendah sesuai dengan
perintah yan diberikan/sesuai dengan urutan logika yang dituliskan di dalam listing
program dalam jangka waktu tertentu karena tetap menggunakan delay.

Anda mungkin juga menyukai