Buka software codevisionAVR. Buatlah new project. Setelah disimpan, hapus saja semua tetapi sisakan header dan void main() nya saja.
contoh programnya sesuai logika berfikir di postingan sebelumnya:
#include <mega16.h> // ini library untuk chip ATmega 16.
#include <delay.h> // ini untuk perintah tundaan.
// delay_ms(100); tunda selama 100 millisecond
// delay_us(100); tunda selama 100 microsecond
void main(void)
{
//pertama kita membuat inisialisasi port
DDRC=0xff; // DDRC=0xff; = DDRC=0b11111111;
/* | | |_ _ _ PORTC.0 = output
| |_ _ _ _ PORTC.1 sampai PORTC.6 = output
|_ _ _ PORTC.7 = output
DDR = data direction, untuk mengatur port sebagai input
atau dijadikan output */
DDR = data direction, untuk mengatur port sebagai input
atau dijadikan output */
// setelah inisialisasi selanjutnya kita realisasikan logika berfikirnya
while (1){ // <-------- perulangan tiada henti.
PORTC=0b00000000; // matikan semua led
delay_ms(500); // tunda 0.5 detik
PORTC=0b00000001; // nyalakan led di PORC.0
delay_ms(500); // tunda 0.5 detik
PORTC=0b00000010; // matikan led di PORC.0 nyalakan led di PORC.1
delay_ms(500); // tunda 0.5 detik
PORTC=0b00000100; // matikan led di PORC.1 nyalakan led di PORC.2
delay_ms(500); // tunda 0.5 detik
PORTC=0b00001000; // matikan led di PORC.2 nyalakan led di PORC.3
delay_ms(500); // tunda 0.5 detik
PORTC=0b00010000; // matikan led di PORC.3 nyalakan led di PORC.4
delay_ms(500); // tunda 0.5 detik
PORTC=0b00100000; // matikan led di PORC.4 nyalakan led di PORC.5
delay_ms(500); // tunda 0.5 detik
PORTC=0b01000000; // matikan led di PORC.5 nyalakan led di PORC.6
delay_ms(500); // tunda 0.5 detik
PORTC=0b10000000; // matikan led di PORC.6 nyalakan led di PORC.7
delay_ms(500); // tunda 0.5 detik
}; // <------sampai disini program diulangi lg dari while (1)
};/ / <------end void main.
/*
Catatan:
dalam bahasa pemrograman C setiap menulis pernyataan harus diakhiri dengan tanda ” ; ”.
DDR adalah register untuk mengatur i/o sebagai input atau output.
Cara penulisan : DDR<NAMAPORT> atau DDR<NAMA PORT>.<NOMOR PORT>
CONTOH: DDRA=0x0f; ß- artinya (PORTD.0 s/d PORTD.3 = sebagai output.
dan PORTD.4 s/d PORTD.7 = sebagai input).
jika ada yang sebagai input, kita tambahkan perintah PORT di bawahnya yang nilainya kebalikan dari DDR, untuk mengaktifkan resistor pull-up internal.
CONTOH: DDRA=0x0f; CONTOH LAGI: DDRA.1=0; lagi : DDRC=0b01001001;
PORTA=0xf0; PORTA.1=1; PORTC=0b10110110;
Perintah PORTC digunakan untuk akses keseluruhan (8 bit PORTC). Jika satu port saja cara penulisan: PORT<NAMA PORT>.<NOMOR PORT>
CONTOH : PORTA.1=0; ß- Artinya keluarkan logika 0 di PORTA.1 saja.
PORTD=0xf0; ß- artinya keluarkan Ob11110000 di PORTD.
(PORTD.0 s/d PORTD.3 = 0 dan PORTD.4 s/d PORTD.7 = 1).
Untuk input :
PIN < NAMA PORT > atau PIN < NAMA PORT >.< NOMOR PORT >
CONTOH: data=PIND; ß- Artinya variabel data bernilai dari semua PORTD.
data=PIND.0; ß- artinya variable data bernilai PIND.0 saja.
*/
Build program diatas, kemudian di coba / disimulasikan.
Bagai mana mengubah arah nyalanya led? Misal ini menyala kekanan bagaimana supaya menyala kekiri?.. nah lo.. bingung?.
7 comments:
Kak.. Saya baru belajar mikro kontroler..
Apa aja sih yg dibutuhin untuk belajar pertama kalinya?
Di campus ga diajarin ttg ini. Jadi sy cari2 sendiri. Makasii kak.
Dan sy jg ga ngerti, fungsi code ini buat apa yah kak?
hi laura,
silahkan di baca baca dulu tutorial singkat di blog ini.
di setiap code program sudah saya berikan komentar mengenai fungsi code tersebut.
Owhh ia siap kak.. Makasii kak ^_^
saya baca2 lagi.. :D
permisi k'...
dalam tutorial yang digunakan pada blog ini menggunakan codevisionAVR untuk membuat progmam. sedangkan aplikasi yang saya gunakan dalam praktek mikrokontroler yaitu Bascom. apakah kode program yang digunakan pada codevisionAVR sama dengan aplikasi lain???
trimakasih sebelumnya
suntax nya berbeda,
kunjungi www.team-ichibot.com
Ka saya mau slp saya disuruh membuat program untuk traffic light pertama menyakan led simpang 2 lalu simpang 4 gimana ya ka caranya
Lsp maksudnya ka
Post a Comment