Está en la página 1de 5

Analisa Praktikum

1. Program avrtest

#include <avr/io.h>
int main(void)
{
DDRD=0xFF;
while(1)
{
PORTD=0xAA;
}
}

#include <avr/io.h> digunakan untuk memanggil fungsi input atau output pada
library (mikrokontroler menggunakan input dan output). Lalu program utama di isi
inisialisasi fungsi port D dengan menggunakan perintah “DDRD”. Hal ini mengatur fungsi
PORT sebagai output. Lalu perintah “PORTD” adalah memberikan nilai. Dengan nilai AA
maka PORT D akan bernilai 1 pada bit ke 7, 5, 3, dan 1.
Program di atas merupakan program sederhana untuk menguji antara eclipse,
downloader. Koneksi yang dipakai adalah menggunakan port parallel komputer. Inisialisasi
pada eclipse adalah dengan memilih STK200 dengan tipe ISP.
STK200 merupakan programmer avr (downloader avr) pada jalur parallel. Secara
hardware dipasang pada DB25 dengan hanya ditambah perangkat keras berupa IC buffer
74HC224.

Gambar 1 Pilihan Programmer Pada Eclipse


Dari pengujian terhadap interface antara hardware dan eclipse terlihat bahwa bar led menyala
pada nilai bit ke 7,5,3,dan 1. Library yang dipakai pada program pertama ini hanya “ avr/io.h”.
Dengan adanya perintah loop “while(1)”, maka nilai didalamnya akan diproses secara terus
menerus. Hal ini berarti bar led menyala terus.

2. Program Kedua : Menyalakan dan mematikan led secara bergantian

#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRD=0xFF;
while(1)
{
PORTD=0x00;
_delay_ms(1000);
PORTD=0xFF;
_delay_ms(1000);

}
}

Pada program kedua ini lampu berkedip, berarti menyalakan dan mematikan dalam selang
waktu tertentu. Hal ini memerlukan suatu fungsi delay untuk menahan nyala dan mati led. Dan hal
ini sudah tersedia dalam library di dalam eclipse Perintah “<util/delay.h>” adalah untuk memanggil
delay yang tersedia di library. Delay maksimal adalah 262.14 ms.
PORT D di setting sebagai output (seperti program avrtest).
PORTD=0x00;
// memberikan nilai PORTD menjadi 0, hal ini bearti putput dari tiap bit PORTD akan
bernilai 0, sehingga barled akan menyala (active low)

_delay_ms(1000);
//memberikan jeda waktu agar bias menyala selama 1000 mili detik atau 1 detik.

PORTD=0xFF;
// memberikan nilai PORTD mnajdi 1, hal ini bearti putput dari tiap bit PORTD akan
bernilai 1, sehingga barled akan mati (active low)

_delay_ms(1000);
//memberikan jeda waktu agar bias menyala selama 1000 mili detik atau 1 detik

Waktu tunda yang ada pada library sebenarnya ada juga skala mikro _delay_us().
Namun yang kita pakai ini merupakan skala mili second.
3. Program ketiga :
#include <avr/io.h> // mengambil library input/ output
#include <util/delay.h> // mengambil library delay untuk waktu tunda
unsigned char counter; //inisialisasi variable counter yang akan diolah
#define LEDS PORTD // memberikan nama “LEDS ” pada register PORTD
#define TEKAN PINC // memberikan nama “TEKAN” pada register PINC
#define cekbit(PORT,pin) (PORT & (1<<pin))
// membuat makro sederhana yang berisi bit dari register I/O mana yang akan
disetting.
#define pinreset PINC&&0x02
//mendefinisikan PINC bit ke 1 sebagai tombol reset.
void tambahcounter() // funsi counter, digunakan untuk menambah isi dari
variable counter.
{
counter++; //menambah isi variable sebanyak 1
}
void reset()

{
counter=0; // mereset variable counter menjadi bernilai 0.
}
int main(void)
{
DDRD=0xFF; // setting semua bit PORTD sebagai output
DDRC=0x00; // setting semua bit PORTC sebagai input
while(1)
{
// if((PINC & 0x01)==0)
// berbagai macam pengkondisian pin, instruksi diatas berarti reg. PINC di AND
denga 02 yang berarti hanya PINC bit ke 2yang aktif, lainya tidak dipedulikan
karena nilainya 0.
// if((PINC & (1<<0))==0)
// instruksi diatas berarti menset register PINC bit ke 0, bit yang lain tidak
diperdulikan karena default berniali 0, apakah PINC bit ke 0 bernilai 0.
// if(!(PINC & (1<<0)))
//instruksi diatas hambpir sama dengan instruksi sebelumnya, tapi dengan
memanfaatkan kondisi awal dari PINC , dengan kata lain “jika PINC bit 0 tidak
bernilai 1 maka…”
if(!cekbit(PINC,0))
//disini mulai digunakan makro yang dibuat sendiri yang artinya, register PORT
diisi dengan niai register PINC, variable pin diisi dengan 0, sehingga bit ke 0 yang
diset
{
_delay_ms(10);
//fungsi delay disini untuk memberikan proteksi bagi saklar
mekanik dari kemngkinan terjadinya noise, kemudian akan
di cek kembali apakah kondisi tersebut (PINC bit 0
kondisnya 0)
if(!cekbit(PINC,0))
{
while(!cekbit(PINC,0));
// while disini digunakan untuk menunggu sampai
push button dilepas atau kondisi PINC bit ke 0
bernilai 1.
tambahcounter(); // lakukan fungsi tambahcounter()
PORTD=counter; //memindah ini variable counter
ke register PORTD
}
}
if(!cekbit(PINC,1))
// cek apakah kondisi PINC bit ke 1 berniali 0
{
_delay_ms(10);
// proteksi dari noise
if(!cekbit(PINC,1))
{
while(!cekbit(PINC,1)); //tunggu sampai push buton
dilepas
reset(); //lakukan fungsi reset
PORTD=counter; //memindah ini variable counter
ke register PORTD
}
}

}
}

Program di atas merupakan contoh manipulasi bit untuk PORT. Hal ini dilakukan untuk
melihat kemungkinan bekerjanya tiap pin pada PORT dengan kondisi dan nilai tertentu. Cara lain
yang bisa dilakukan adalah dengan membuat makro yang dapat dengan mudah dibaca dan
dipelajari user lain.

Kesimpulan
1. Eclipse merupakan aplikasi open source yang dalam penggunaannya dibangun secara mandiri dari
awal.
2. Inisialisasi per bit berbeda dengan Code Vision AVR.
3. Pembuatan waktu tunda dapat dilakukan dengan menggunakan library yang tersedia dalam aplikasi.
4. Kemudahan monitoring kesalahan lebih bagus pada eclipse karena disediakan informasi yang lebih
jelas.

También podría gustarte